iOS Universal Link(通用链接)使用

1,766 阅读2分钟

1.用途

Universal Link是苹果在WWDC上提出的iOS9的新特性之一。此特性类似于深层链接,并能够方便地通过打开一个Https链接来直接启动您的客户端应用(手机有安装App)。对比起以往所使用的URL Scheme,这种新特性在实现web-app的无缝链接时能够提供极佳的用户体验。

当你的应用支持Universal Link(通用链接),当用户点击一个链接是可以跳转到你的网站并获得无缝重定向到对应的APP,且不需要通过Safari浏览器。如果你的应用不支持的话,则会在Safari中打开该链接。

2.开发者中心配置

直接到开发者中心,在Identifiers里面找到自己的appID,在Associated Domains里面勾上即可。

3.Xcode配置

在Xcode中Singing&Capabilies中,添加Associated Domains,在Domains里面添加applinks:www.xxx.com,www.xxx.com是公司的域名,可以添加多个。

4.配置apple-app-site-association

参考官网developer.apple.com/library/arc…

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

编写一个apple-app-site-association文件,内容如上,不要添加后缀名。

这里的appID为Team ID.bulidID。

teamID可以在Membership里面查看。

paths是允许跳转路径,如上图即www.xxx.com/wwdc/news就可…

"paths":["NOT /test/*",  "/*"]

添加NOT则表示不允许这种后缀链接跳转,*是代表全部都行。

5.上传服务器

把弄好的apple-app-site-association文件上传到自己的域名服务器的根目录或者well-known,域名必须是https。写好给到后台,叫他们上传就行。这个是给苹果服务器请求验证的。

打开验证网站:search.developer.apple.com/appsearch-v…

显示通过就表示配置成功。

6.测试通用链接

1.在备忘录输入自己的链接www.xxx.com。

显示在“自己app"中打开,就表示可以跳转到APP。

2.在Safari浏览器打开自己的链接,上下滑动,看到有打开跳转到APP,也代表成功。

7.代码判断链接

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb])
    {
        NSURL *url = userActivity.webpageURL;
        if (url是自己域名则进行处理)
        {
            //代码处理
        }
        else
        {
            [[UIApplication sharedApplication] openURL:url];
        }
    }
     
    return YES;
}

别人的APP,或者H5页面调到我们的APP,则可以在这个continueUserActivity方法里面判断处理。

参考文章:xie.infoq.cn/article/392…