iOS Universal Link(通用链接)使用

3,230 阅读2分钟

1.用途

Universal Link 是苹果在 WWDC 上提出的 iOS9 的新功能。此功能类似于链接之一,并且能够方便地通过打开一个 https 链接来直接启动您的客户端应用(手机已安装 App)。相对于以往的会员使用 URL 方案,这些新功能在实现 Web 应用程序的无缝链接时能够提供极佳的用户体验。

当您的应用程序支持通用链接(通用链接)时,当用户点击一个链接时可以跳转到您的网站并获得简单的重定向到对应的应用程序,并且不需要通过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

参考官网​​https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW1

{    
    “应用程序链接”:{        
        “应用”: [],        
        “细节”: [            
            {                
                "appID": "9JA89QQLNQ.com.apple.wwdc",                
                “路径”:[“/wwdc/news/”,“/videos/wwdc/2015/*”]            
            },            
            {                
                "appID": "ABCD1234.com.apple.wwdc",                
                “路径”:[“*”]            
            }        
        ]    
    }
}

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

这里的appID为Team ID.bulidID。

teamID可以在Membership里面查看。

paths是允许跳转路径,如上图即可。

“路径”:[“不是/test/*”,“/*”]

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

5.上传服务器

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

如上面配置的是www.xxx.com,那我们就可以在www.xxx.com/apple-app-s…

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

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

上面的验证网站已经失效了,推荐另外的:yurl.chayev.com/ios-results

或者:branch.io/resources/a…

6.测试通用链接

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

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

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

7.代码判断链接

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivityrestorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb])
    {
        NSURL *url = userActivity.webpageURL;
        if (url是自己域名则进行处理)
        {
            //代码处理
        }
        别的
        {
            [[UIApplication 共享应用程序] openURL:url];
        }
    }
     
    返回是;
}

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

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