zoukankan      html  css  js  c++  java
  • 项目配置实现打开第三方应用

    1.需求:我们创建两个项目分别为TestDemo1何TestDemo2,现在需要在TestDemo1中通过一个按钮打开TestDemo2程序,需要下面这些配置;

    2.配置信息:首先配置TestDemo2中的plist文件:

    如下图所示:设置URL Schemes为music(URL Schemes建议都小写,因为之后接收到数据的时候,不区分大小写, 都是转为小写),URL identifier可选

    在TestDemo2中的APPdelegate中添加下面这个方法

    //处理URL请求
    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
    {
        NSLog(@"%@", url);
        
        if ([[url scheme] isEqualToString:@"music"])
        {
            //处理链接
            NSString *text = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
            UIAlertView *myAlert = [[UIAlertView alloc]initWithTitle:@"新消息" message:text delegate:self cancelButtonTitle:@"知道了" otherButtonTitles: nil];
            [myAlert show];
            
            return YES;
        }
        
        return NO;
    }

    3.然后配置TestDemo1中的plist文件:

    TestDemo1中想打开TestDemo2程序可以调用下面的demo:

     NSString *telStr = @"music://test"; // 则需要打开的app就要配置这个协议
    
    NSURL *url = [NSURL URLWithString:telStr];
    
    UIApplication *app = [UIApplication sharedApplication];
    
    BOOL canOpen = [app canOpenURL:url];
    
    if (canOpen) { // 有安装app
    
    BOOL isOpen = [app openURL:url];
    
    NSLog(@"打开了app%d",isOpen);
    
    } else { // 没有安装app
    
    // 使用浏览器打开url
    
    }

    4.补充:如果使用模拟器,可能会报错:

    LaunchServices: ERROR: There is no registered handler for URL scheme xxx

    容易让人误解的是总以为自己缺少哪些东西没有配置,极有可能的问题是因为模拟器并未安装XXX所以才会导致。换成真机测试下即可

  • 相关阅读:
    Bootstrap的模态框中使用kindeditor无法编辑的问题
    resource is out of sync withthe file system
    Model报错:指定的存储区提供程序在配置中找不到 的解决
    两极——关于未来云计算的瞎想
    c#动态加载dll并调用dll中类的方法
    委托与事件的IL简单分析
    php搭建与网页服务器故障排查
    某AOP文章的注解……关于上下文和remoting
    终于有了我的blog了
    使用C#编写JavaScript
  • 原文地址:https://www.cnblogs.com/sunjianfei/p/5520432.html
Copyright © 2011-2022 走看看