美文网首页
外部链接跳转到App的方式

外部链接跳转到App的方式

作者: 大刀阔斧007 | 来源:发表于2019-05-10 10:59 被阅读0次

    外部链接跳转到App的常用的方式有两种:
    URL scheme跳转 和 Universal Links(通用链接)跳转

    1. URL scheme跳转

    在 TARGETS -> Info -> URL Types 点击添加

    image.png

    (1)在项目代码中使用

    添加好之后可以在A项目跳转到B项目中使用如下:

    #pragma mark - DemoA -> DemoB
    - (IBAction)jumpToDemoB:(id)sender {
        NSString *urlString = @"DemoB://";//没有参数
        NSURL *url = [NSURL URLWithString:urlString];
        if ([[UIApplication sharedApplication] canOpenURL:url]) {
            [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
                
            }];
        }
        else {
            NSLog(@"没有该应用");
        }
    }
    

    传参的格式如下:
    DemoB://name=lwy&phone=110

    (2)通过网址打开

    网页打开app也是根据app的协议头(URL scheme)来区分打开的是哪一个app的,我们直接在浏览器上复制粘贴我们的url scheme (DemoB://),系统会自动弹框提醒是否打开本应用,跟DemoA跳转到DemoB的跳转是一样的, 当然网页传参跟app跳转传参都是一样的格式

    2. Universal Links(通用链接)跳转

    因为在微信、QQ里打开会禁止scheme方式打开app,苹果iOS 9推出了Universal Links方式刚好可以解决这一问题

    使用方法:
    (1) 开启Xcode中的Associated Domains服务,添加一个Domains,格式一定要是:applinks:www.baidu.com这样的格式,以applinks:开头,自己的域名地址添加其后,再例如:applinks:fanyi.baidu.com/collection,使用的域名要支持https,

    image.png

    进入开发者中心 找到你的app IDs 配置该项目的Domains服务打开

    (2) AppDelegate里面实现如下方法用于接收 Universal Links方式的唤醒

    - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
        NSLog(@"userActivity : %@",userActivity.webpageURL.description);
        return YES;
    }
    

    (3)让后台,按照苹果的要求苹果官方要求,做一个名为apple-app-site-association的固定个数的json格式的文件,不能带后缀名,有的电脑设置的隐藏后缀名,这点需要注意, 把文件放到服务器的根目录下或者.well-known目录下。
    apple-app-site-association文件的内容示例:

    {
        "applinks": {
            "apps": [],
            "details": [
                {
                    "appID": "9JA89QQLNQ.com.apple.wwdc",
                    "paths": [ "/wwdc/news/", "NOT /videos/wwdc/2015/*"]
                },
                {
                    "appID": "ABCD1234.com.apple.wwdc",
                    "paths": [ "*" ]
                }
            ]
        }
    }
    

    其中9JA89QQLNQ.com.apple.wwdc是teamID.bundleId组合的,比如teamID是:xxxxxxx(这个东西去在开发者中心membership里面找到),例如bundleId就是:ms.abc.com,那我的appID就是xxxxxxx.ms.abc.com

    paths的设置:是用来设置哪些路径可以唤醒app哪些不可以唤醒app,使用配置,则整个网站都可以使用,使用?代表单个通配符,paths是区分大小写的。
    /wwdc/news/

    /wwdc/news/20*8/
    这个文件编写好之后 通过在网页打开https://aaaaaa.com/apple-app-site-association 其中aaaaaa.com是你的域名,
    当配置完支持了Universal Links方式,在其他app里面打开你的链接的时候 或多一项:在xxxapp中打开。

    快速验证
    在手机的备忘录中输入https://aaaaaa.com/apple-app-site-association,长按这个链接,会出来一项在xxxapp中打开的选择, 即可跳转到你对应的APP

    相关文章

      网友评论

          本文标题:外部链接跳转到App的方式

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