项目配置实现打开第三方应用

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所以才会导致。换成真机测试下即可

原文地址:https://www.cnblogs.com/sunjianfei/p/5520432.html