什么是UniversalLink
UniversalLink
与URL Schemes
一样,都是跳转APP
的一种方式。
简单来说就是一个URL
,当用户在浏览器中访问此URL
时,苹果会检测对应的APP
是否已安装。已安装则跳转到APP
。未安装则访问此URL
实际内容。
步骤
1、让后台人员准备一个https的链接,一定要https的(微信硬性要求)
2、制作 apple-app-site-association 文件,并放置在准备好的链接根目录下
3、App Store应用管理和Xcode开启Associated Domains,并填写对应Domains
4、用GET请求测试该链接下的文件内容,并在safari浏览器中测试
5、微信开放平台和SDK注册方法填写相同UniversalLink
6、填写微信新的LSApplicationQueriesSchemes
7、回调测试
具体操作
(1)服务端文件 apple-app-site-association 。json格式,而不需要任何后缀。
{
"applinks": {
"apps": [],
"details": [
{
"appID": "VQXXXXXD49G.XXX.XXXX.XXXX",
"paths": [ "/app/*"]
}
]
}
}
appID 有两部分组成,在苹果开发者平台的 "Certificates, Identifiers & Profiles" -> "All Identifiers" 选中对应的 id,进去就可以看见配置信息了。就是 App ID Prefix 和 Bundle ID 组成。
paths末尾必须是 * ,最好带一个前缀。免得域名被命中。结尾必须是 * 也是微信相关要求的。
上边这个文件传到服务根目录或根目录下的 .well-known 下。
(2)在苹果开发者账号上一步查看 App ID Prefix 和 Bundle ID 的地方,将 Associated Domains 前边打钩保存。
(3)如果涉及到微信登录,需要在开放平台中设置 Bundle ID 和 Universal Links。Bundle ID 和苹果账号中的Bundle ID 一致。Universal Links 可以定义为上一步中使用的服务域名 + paths 组成。比如: https://xxx/app/
(4) 上边的完成后,需要在 xcode 中配置一些信息。先在 ios/Runner/Info.plist 中加入以下配置:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
<string>weixinULAPI</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
(5) 在 xcode 中配置 applinks。依次选择 Runner(Targets)->Signning & Capabilities->All 。在 All 的左边点击 Capability,选中并添加 Associated Domains。然后点击 + 号配置 Domains。比如: applinks:www.xxx.com (applinks 这个是固定不变的 www.xxx.com 是你的服务的地址。只需要域名即可。并且该域名无中间跳转)
(6) 在 xcode 中配置 appid。依次选择 Runner(Targets)->Info->URL Types。点击+号,添加一个。在 URL Schemes 出填写微信开发平台中申请 app 接入的 appid,Role 为默认的 Editor 即可。其他不用填。
到此,基本的配置也算完成了。然后就是测试一下。他们喜欢添加一个记事本,写个Universal Links 链接,然后点击跳转到 safari 试试效果。我这样开始是失败的。反正上边的步骤来了好几次。后来,我直接打包成 app,在APP里调用微信登录。能呼起app 也有效果。也能返回。然后再点击记事本里的链接。直接跳转到 app,而不是进入 safari。证明之前的配置是有效果的。