Universe Link 接入

创建配置文件

创建一个配置文件,名字叫做apple-app-site-association(不能改,没有后缀名),放在你的网站的根路径或者.well-known路径下。

配置文件的内容如下:

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

其他的配置字段都不动,只需要修改Detail的内容。AppID是在开发者中心的AppIds下的Prefix+ID:
Universe Link 接入_第1张图片

paths是在这个域名下,哪些路径可以唤起你的App。可以使用NOT来排除路径中的子路径,也可以使用通配符?(匹配一个字符)和*(匹配任意字符)来匹配。例如:

"paths": [ "NOT /videos/wwdc/2010/*", "/videos/wwdc/201?/*"]

匹配了video/wwdc/下的201几年所有文件,但是除了2010年。需要注意的是:NOT应该放在前边,因为系统会从前往后匹配,一旦确定匹配或者不匹配就忽略后边的路径。如果把NOT放在后边就不能起到排除作用。

配置App

在开发者中心的App IDs页面,修改App Id,选上 Associated Domains。
Universe Link 接入_第2张图片

注意:更改后Provision Profile作废,需要重新生成。

然后在Xcode中打开工程,导入新的Provision Profile文件后,在Capbilities下Associated Domains已经是On的状态了,配置网站域名(apple-app-site-association文件保存的那个网站)
Universe Link 接入_第3张图片

添加处理代码

在AppDelegate中重写 application:continueUserActivity:restorationHandler:函数,当app通过Universe link跳转被唤醒时,会调用这个函数。activitiyType的类型是NSUserActivetyBrowsingWeb,URL参数什么的都可以在这里拿到。

注意事项:

  • 要跨域才能跳转,比如配置的是abc.test.com域,在abc.text.com域的页面点击abc.test.com的链接是不唤起,只有在其他域的点击abc.test.com域的链接才唤起App。
  • 唤起的App在右上角有一个Universe link的标志,点击可以返回浏览器,但是系统会认为你不想通过app打开这个域的链接,所以以后都不会再唤起App了,恢复的方法是在浏览器中长按链接,在弹出的选项中选择在App中打开。
  • App第一次启动的时候会去配置的网站的root或者.well-known路径下访问apple-app-site-association文件,如果不能获取或者文件格式错误,将不能跳转。可以使用苹果的官方检测网站来检测配置文件的正确性:https://search.developer.apple.com/appsearch-validation-tool/

参考文献

Support Universal Links

通用链接(Universal Link)唤起APP

iOS9: Universal Links does not work

你可能感兴趣的:(ios开发)