1.Universal Link 的基本运作机制:
- 通过在 XCode 的 App 配置中配置了相关信息以及安全域名指定
- 通过在 Https only 的安全域名上部署一个配置 apple-app-site-association file
- file 中配置上丰富的 website 与 app 的链接信息
- 在 website 与 app之间建立起了安全有效的握手机制
- 实现 website 的 url 与 app 的直接联动
2.apple-app-site-association 的配置
首先放上官网文档的地址:Support Universal Links
(1)创建 apple-app-site-association 文件(文件名称不能更改)
在本地创建json文件,文件内容
{
"applinks": {
"apps": [],
"details": [{
"appID": "2QTWJE35GG.com.text.mine",
"paths": ["/sht/*"]
}]
}
}
apps:为必写且固定为[]
appID:TeamID + '.' + BundleID
比如我项目的
teamID为2QTWJE35GG;
BundleID为com.text.mine,
最后appID为2QTWJE35GG.com.text.mine
paths:是一个字符串数组,对应域名中的path,用于过滤可以跳转到App的链接,支持通配符*,?以及NOT进行匹配。
details数组中可以配置多个APP的信息,如果公司内有多个APP需要支持Universal,则可以直接添加多个。
(2)将配置好的apple-app-site-association文件上传到服务器
apple-app-site-association文件需要上传到服务器的根目录下 ,也可以在根目录中添加.well-known文件夹,将文件上传到.well-known文件夹下(.点一定不能少),对应连接分别为
https://xxx/apple-app-site-association
https://xxx/.well-known/apple-app-site-association
xxx为你服务端的域名
注意:上传apple-app-site-association文件时,一定要先带文件后缀一起上传(即原文件,不要强制去掉后缀),然后在服务端重定向一个没有后缀的链接(如上面链接所示,否则通过不了 ,这里卡了一上午)。
苹果提供了一个网页来验证我们编写的这个apple-app-site-association文件是否合法有效,进入验证网址进行验证:
出现 Error no apps associated with url 则表明验证通过
(3)配置开发者证书
进入开发者网站,找到对应ID,开通Associated Domains,更新对应描述文件
(4)项目配置
在TARGETS的Capablities中开启Associated domains
Domains配置的内容为applinks: + 域名(即步骤二中的xxx)
比如:applinks:aliyun.sht.com
实现唤醒代理
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
NSLog(@"userActivity : %@",userActivity.webpageURL.description);
return YES;
}
验证配置
先运行项目,然后
在Safari中输入https://xxxxx/path,path是apple-app-site-association文件中配置的,下拉后出现类似下面的页面,则表示成功
注意事项:
1:必须支持https
2:apple-app-site-association名称不能变
3:文件位置只有上面说的两个地方
4:teamId和bundleID要正确
5:IOS9以上
作者:angle_杰
链接:https://www.jianshu.com/p/88be0e472986
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。