美文网首页
iOS实现两个App之间跳转

iOS实现两个App之间跳转

作者: 爱笑的猫mi | 来源:发表于2019-07-24 14:46 被阅读0次

    假设:App1要跳转到App2

    App1:跳转方 App2:被跳转方

    App1 可以吊起App2的条件是:

    > 设备上安装了该App2
    > 该App2注册了自己的URL Scheme协议(唯一标识)
    
    

    App2以Property List方式打开info.plist,截图如下:

    2588411-6d4a21569065a1f2.png

    App2以Source Code方式打开info.plist,添加URL Schemes:App2UniqueScheme

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string></string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>App2UniqueScheme</string>
            </array>
        </dict>
    </array>
    
    

    一个App1能够跳转到其他App2的条件就是:

    > 设备上安装了该App1
    > 该App1添加了被跳转方App2的Scheme白名单
    > 该App1中添加了调起代码
        
    - (void)jumpToAnotherApp {
        NSURL *url = [NSURL URLWithString:@"App2UniqueScheme
    ://"];
        BOOL isCanOpen = [[UIApplication sharedApplication] canOpenURL:url];
        if (isCanOpen) {
            #ifdef NSFoundationVersionNumber_iOS_10_0
                [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
                    
                }];
            #else
                [[UIApplication sharedApplication] openURL:url];
            #endif
            NSLog(@"App1打开App2");
        }else{
            NSLog(@"设备没有安装App2");
        }
    }
    
    

    App1以Property List方式打开info.plist,截图如下:


    2588411-f1b374e3fc7d566d.png

    App1以Source Code方式打开info.plist,添加白名单:App2UniqueScheme

    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>App2UniqueScheme</string>
    </array>
    
    

    典型的例子就是App中接入微信分享SDK,实现分享功能:
    想要调起微信进行朋友圈、好友分享,需要配置weixin、wechat白名单,这是微信自己定义的URL Schemes协议,方便其他App调起。
    在App中需要添加从微信开放平台申请的AppId,这个AppId就作为该App在微信平台的唯一标识符,填写到URL Schemes下。这是为了使微信分享完毕后,从微信跳转回自己的App。

    简单来说,配置URL Schemes协议是为了让其他App调起;配置白名单是为了跳转到其他App。微信分享就进行了从自己的App跳转到微信,再从微信跳转到自己的App这个过程

    相关文章

      网友评论

          本文标题:iOS实现两个App之间跳转

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