美文网首页编程学习iOS DeveloperiOS学习开发
iOS openURL 实现 App应用间跳转效果

iOS openURL 实现 App应用间跳转效果

作者: KumLight | 来源:发表于2017-01-09 15:23 被阅读168次

    运用openURL方法 实现 程序间跳转 , 拨打电话 , 发送邮件等功能。


    程序间跳转

    核心代码

        //需要跳转至App的 Scheme
        NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"iMeituan://"]];
    
        //判断是否可以打开URL
        if ([[UIApplication sharedApplication] canOpenURL:url]) {
            
            //打开URL
            [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
                
                if (success) {
                    
                    NSLog(@"调用成功");
                    
                }else{
                    
                    NSLog(@"调用失败");
                }
            }];
            
        }else{
            
            NSLog(@"打开失败");
        }
    

    URL 统一资源定位符(可以没有路径但是必须要有协议头)
    Scheme 协议头,用来决定查找资源的方式
    options 参数 具体含义 有待研究。
    调用时传的参数 不管是什么 接收方 里面的参数都是
    {UIApplicationOpenURLOptionsOpenInPlaceKey = 0;
    UIApplicationOpenURLOptionsSourceApplicationKey = @"com.Demo.openURLTest"(Bundle ID)}

    知乎上有一篇帖子 , 列举了一些 常用的软件Scheme地址

    额外配置

    1. 在“Info.plist”中将要使用的URL Schemes列为 Http访问白名单

    LSApplicationQueriesSchemes


    Http访问白名单
    1. 将Build Settings 下的 Enable Bitcode,把它设置成 NO
    Enable Bitcode

    其他

    1. 拨打电话
    //tel: 为拨打电话的 协议头 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://8004664411"]];
    
    1. 发送邮件
    //mailto: 为发送邮件的 协议头
    [[UIApplication sharedApplication]openURL:[NSURL   URLWithString:@"mailto://devprograms@apple.com"]];
    
    1. 发短信
    //sms: 为发送短信的 协议头
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://10086"]];
    
    1. 调用浏览器
    //正常输入网址就好
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.baidu.com"]];
    

    发送邮件 和 短信 通常并不会使用openURL 的方式来调用。

    相关文章

      网友评论

      • 菜鸟秦伟康:想问下如果是打电话这个电话怎么弄成一个变量?老师
        菜鸟秦伟康:@Light均 非常感谢您的解答,三克油!
        菜鸟秦伟康:非常感谢。
        KumLight:字符串拼接就可以了。
        NSString *phone = @"8004664411";
        NSString *tel = [NSString stringWithFormat:@"tel://%@",phone];
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:tel]];

      本文标题:iOS openURL 实现 App应用间跳转效果

      本文链接:https://www.haomeiwen.com/subject/lmeamttx.html