Universal Link 无效

Universal Link 技术已经出现了好几年了,网上关于如何配置Universal Link 的文章也铺天盖地,如果想看配置的细节,可以看这篇文章, 本文主要介绍配置Universal Link 中无效的几种情况。

一、 校验apple-app-site-association是否生效

如果你在网上搜文章会发现,校验apple-app-site-association是否生效,很多文章给出的是 https://search.developer.apple.com/appsearch-validation-tool/)这个链接,但是现在这个链接已经失效了。现在可以使用https://branch.io/resources/aasa-validator/这个链接来验证是否有效。当然,也可以使用下面的命令:

1
2
// domain-name-here.com : 存放apple-app-site-association的域名
curl -v https://app-site-association.cdn-apple.com/a/v1/domain-name-here.com

结果如下:

二、apple-app-site-association无效原因

原因一:本地未更新到

服务器上apple-app-site-association的更新不会让iOS本地的apple-app-site-association同步更新,即iOS只会在App第一次启动时请求一次,以后除非App更新或重新安装,否则不会在每次打开时请求apple-app-site-association。

解决方案: 重新安装APP,如果不起作用,可以删掉APP后重启手机再重新安装。

原因二:缓存原因

现在APP首次启动加载apple-app-site-association文件的时候,是从苹果的DNS服务器加载的,如果修改了apple-app-site-association内容,不会立即生效,快的话可能需要一两个小时,慢的话最晚需要24个小时,我在这里踩过坑。

解决方案: 等待…

原因三:针对iOS14及以上设备可能会出现 开发模式下无法唤起APP, 这时,需要增加 mode
1
2
3
4
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:xxxxxx?mode=developer</string>
</array>

根据这篇文章: mode = developer适用于使用 dev 的Profile打包的APP中,去掉的话, 用于Production 打包的。