关于 Universal Links 及接入遇到的问题
关于 Universal Links 及接入遇到的问题
背景
- iOS 13 对三方App的跳转安全级别的要求提高
- 一些大厂的 SDK 积极响应要求,如我们就是在接入 QQ 互联时只能下载最新的SDK,要求必须使用 Universal Links
开发测试环境
- Mac 10.14.5 iOS 13.2.3 iphone 7
- QQ SDK 3.3.7
遇到的问题
- 在 iOS 13 以下的系统可以正常分享, 13的系统初次安装可分享之后均不能分享,如下图每次会检查
Universal Links 的正确接入过程(按 Apple 官方分三步)
- 创建名字为 `apple-app-site-association` 且饮食的数据为 JSON 格式,文件内容决定你的 APP 可以处理那些 URL
- 将文件 `apple-app-site-association` 给服务端且必须支持 **https**,文件的位置放在根目录下或 `.well-know` 子文件夹下(个人建议两处都放,开始就是因为后者路径下没话,害我调试了半天,后面会贴出调试方法)
- 准备 APP 要处理的 Universal Links
创建 apple-app-site-association
文件
- 基本的格式如下
{
"applinks": {
"apps": [],
"details": [
{
"appID": "9JA89QQLNQ.com.apple.wwdc",
"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
},
{
"appID": "ABCD1234.com.apple.wwdc",
"paths": [ "*" ]
}
]
}
}
**以上是 apple-app-site-association
文件的内容示例, 注意文件名后面不要接后缀 .json
**
目前开发者可改的内容是appID & paths, applinks\apps 固定写法;
appID的组成:申请的开发者帐号的ID:你在Xcode中Domain里填的域名
paths你自己定义的合法路径,在这里写的路径,你可以拼成这样: https://com.apple.wwdc/wwdc/news/ , 此路径在你手机的记事本和 Safari中打开会调转到你的APP
*
: 是通配符,/*
表示: /
后的所有路径都匹配
Xcode中相关的配置
检验配置是否成功(输入自己的域名按下面两种方式)
- 在手机自带的 APP 备忘录 中输入 https://help.wechat.com/app/,如下图表示成功
- 在手机的 Safari 中输入 https://help.wechat.com/app/,如下图表示成功(这里要多下拉几次,藏在网址的导航栏下面)
遇到的问题
- 在 iOS 的 13 及以上的系统上,当时在服务端的 .well-known 路径下没有放 AASA 文件,导致 13 系统的手机一直下载不成功
- 参考 stackoverflow 上的方法调试找到下载不成功的原因,加上后测试就Ok了
<a href='https://stackoverflow.com/questions/32751225/ios-universal-links-are-not-opening-in-app'>Stackoverflow Univerlinks</a>
- 调试步骤:
* 在 Xcode 中 Window -> Device and Simulators -> Open Console -> 在左边栏打开选择你的设备
* 在右上角的搜索框中输入 `swcd` 去检索你下载 AASA 文件的相关信息
* 手机没有下载如下图
* 下载成功的大概如下图