ios9- apple-app-site-association -通用链接处理

最近项目中要新加一个小功能,通用链接处理(Universal Links):

即当某一个界面中有一个自己公司的URL链接,如果发现本地安装了app,那么就跳转到app而不是跳转safari的网页信息。这个时候需要用到ios9中的新个性:通用链接处理

说一下流程:

1.在自己的开发者账号需要申请包含 Associated Domains

ios9- apple-app-site-association -通用链接处理_第1张图片
Associated Domains

2.设置里配置响应的域名(注意不要写ip)

ios9- apple-app-site-association -通用链接处理_第2张图片
添加Domains

注意:添加的Domains 应该以 applinks开头,比如:applinks:mobile.amon.cn

添加完之后,会在程序里自动生成一个.entitlements文件,

ios9- apple-app-site-association -通用链接处理_第3张图片
entitlements文件

item0是第一个域名地址,item1是第二个域名地址(后边的Value是创建的时候默认的名字,应该填自己公司的域名)

3.代码中接收来自其他外部url点击,并且在 AppDelegate 里支持通用链接

实现: - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler方法,如下:

ios9- apple-app-site-association -通用链接处理_第4张图片
代理

当 userActivity 是 NSUserActivityTypeBrowsingWeb 类型, 则意味着它已经由通用链接 API 代理。这样的话, 它保证用户打开的 URL 将有一个非空的 webpageURL 属性。

4.设置json,这些需要服务端去配置

{

  "applinks": {

    "apps": [],

    "details": {

        “appID”: "公司开发者账号的小组ID.包名id": {

        "paths":[ "*"]

      }

    }

  }

}

appID是公司开发者账号的小组id和包名id,中间用.隔开

paths是在项目中的的.entitlements文件中域名后支持的路径,*表示全路径,download表示download路径下的所有url都可以进入到app中打开,其他的路径是不允许使用的

json格式的文件是app第一次安装,它会从 https://domain.com/apple-app-site-association 下载这个文件。

5.测试

需要测试该功能的时候,只需要在记事本或短信中输入App能识别的链接,然后直接点击或是长按就可以了,直接点的效果是跳转到你的App,长按的效果是弹出的菜单中第二项是“在'XXX'中打开”,这也代表着成功。直接在Safari中输入链接是无效的,必须从一处跳入才可以(比如上一级网页)


在开发这个功能的时候参考了很多资料,在这里附上链接

https://www.jianshu.com/p/c2ca5b5f391f

你可能感兴趣的:(ios9- apple-app-site-association -通用链接处理)