什么是Universal Link(通用链接)
Universal Link是苹果在WWDC 2015上提出的iOS 9的新特性之一。在提供更流畅的用户体验,使应用链接(例如网址)能够直接打开相应的iOS应用程序,而无需经过浏览器。
由于苹果iOS 13系统版本安全升级,微信SDK1.8.6版本要求支持Universal Links方式跳转,以便进行合法性校验,提升安全性。
Universal Link(通用链接)看起来就是一条普通的https链接,当然是我们在该链接域名根目录配置过的一个链接,也可以在该链接中放置对应的H5页面。
当用户的点击该链接,只要手机中安装了支持该链接的APP就会直接进入到APP中。如果没有安装APP则会跳转到Safari浏览器中,展示H5页面。对用户来说则是一个无缝跳转的过程。
使用Universal Link(通用链接)的好处
安全:当用户的手机上安装了你的APP,那么系统会去你配置的网站上去下载你上传上去的说明文件(这个说明文件声明了当前该HTTPS链接可以打开哪些APP)。因为只有你自己才能上传文件到你网站的根目录,所以你的网站和你的APP之间的关联是安全的;
兼容:Universal Link(通用链接)本身是一个HTTPS链接,所以有更好的兼容性;
简单:当用户手机上没有安装你的APP的时候,Universal Link
(通用链接)也能够工作。如果你愿意,在没有安装你的app的时候,用户点击链接,会在safari中展示你网站的内容;
私有: 其它APP可以在不需要知道你的APP是否安装了的情况下和你的APP相互通信。
支持Universal Link(通用链接)
先决条件:必须有一个支持HTTPS的域名,并且拥有该域名下上传到根目录的权限(为了上传Apple指定文件)。
设置Universal Link(通用链接)
设置一个Universal Links网址,https开头,以“/”结尾, 建议带path,比如:https://domain.com/app/
1、登录苹果开发者网站 ,在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID,确保开启Associated Domains服务
注:开启Associated Domains服务后需要重新生成profile文件,提交云端打包时使用
2、手动创建apple-app-site-association文件
创建一个内容为json格式的文件,苹果将会在合适的时候,从我们在项目中填入的域名请求这个文件。
这个文件名必须为apple-app-site-association,切记没有后缀名
文件内容大概是这样子:
{
“applinks”: {
“apps”: [],
“details”: [
{
“appID”:”8ARUHGUQNH.com.AppSample”,
“paths”: [ “/app/*“]
}
]
}
}
appID:
组成方式是TeamID.BundleID(就是第一步截图中的1和2)。
paths:
设定你的app支持的路径列表,只有这些指定路径的链接,才能被app所处理。
举个例子:
如果你的网站是www.domain.com,你的path写的是”/support/*”,那么当用户点击www.domain.com/support/myDoucument,就可以进入你的app了,相反www.domain.com/other 就不会.
注:path是大小写敏感的! *号表示任意路径.
微信SDK要求通用链接apple-app-site-association文件中 path不能带query参数,且末尾必须添加通配符*号
3、部署apple-app-site-association文件到自己的云服务器,配置SSL证书解析域名,这是为了苹果能获取到你上传的文件。
保存文件的地址
- 根目录 /.well-known 文件夹下
- 如果配置https://domain.com/app/,可以上传到app目录下
当你在浏览器中可以正常访问这个文件链接后,就说明配置正确。
注:
- iOS会先请求https://domain.com/.well-known/apple-app-site-association
- 如果此文件请求不到,再去请求https://domain.com/app/apple-app-site-association
所以如果想要避免服务器接收过多GET请求,可以直接把apple-app-site-association放在./well-known目录下
4、在Xcode开发工具配置Associated Domains
在其中的Domains中填入你想支持的域名,必须以applinks:为前缀
如:applinks:domain
测试Universal Links(通用链接)是否生效
在iOS设备中的备忘录中添加记事本或短信中输入App能识别的链接,然后直接点击此链接,就会直接跳转到你的app了
或是长按,在出现的弹出菜单中第二项是“在’XXX’中打开”,这也代表着成功。
参考文档:
https://uniapp.dcloud.net.cn/api/plugins/universal-links