Expo开发iOS应用TestFlight环境Universal Link无法生效问题求助
Expo iOS Universal Link 无法唤起排查方案
1. 修复AASA文件配置错误
- 首先修正JSON语法错误:你提供的AASA中
applinks对象闭合的}后缺少逗号,直接拼接activitycontinuation字段会导致解析失败,修正后的精简兼容配置如下:
{ "applinks": { "apps": [], "details": [ { "appID": "<TeamID>.<BundleID>", "paths": [ "/SquadSingle/*" ] } ] }, "activitycontinuation": { "apps": [ "<TeamID>.<BundleID>" ] } }
- 移除冗余的
components匹配规则,保留兼容性更好的paths规则即可,iOS 14以下系统无法识别components字段,上述paths配置可以覆盖所有前缀匹配的路径,包括你需要的/SquadSingle?id=xxx场景。 - 确认AASA文件的部署规则:
- 访问路径
https://mysite.com/.well-known/apple-app-site-association不能有任何301/302重定向,必须直接返回200状态码 - 响应头
Content-Type必须设置为application/json,不能添加签名、加密或者多余的安全限制头 - 如果用到
www.mysite.com子域,需要在www.mysite.com的同路径也部署相同的AASA文件
- 访问路径
2. 修复app.json配置错误
- 移除
associatedDomains配置里的多余空格,正确格式为applinks:你的域名,如果需要同时匹配主域和www子域,需要两条都配置:
"ios": { ... "associatedDomains": [ "applinks:mysite.com", "applinks:www.mysite.com" ], ... }
3. 校验权限与签名配置
- 确认苹果开发者后台开启Associated Domains权限后,重新生成了应用的Provisioning Profile(描述文件),Expo打包时使用了更新后的描述文件,可解压IPA查看
embedded.mobileprovision文件,确认存在com.apple.developer.associated-domains字段。 - 确认AASA中填写的
<TeamID>(苹果开发者账号10位字符标识)和<BundleID>与你打包使用的配置完全一致,大小写严格匹配。
4. 正确测试Universal Link
- 测试前先卸载设备上所有旧版本的应用,重启设备后再安装TestFlight测试包,避免系统缓存旧的AASA文件和权限配置。
- 不要直接在Safari地址栏输入链接回车测试,该场景系统默认不会唤起应用,可将链接放在备忘录、iMessage中点击,或者放在网页的a标签中点击测试。
- 如需定位具体报错,可将设备连接Xcode,在控制台过滤
swcd进程日志,查看AASA拉取、匹配的具体错误信息。
内容的提问来源于stack exchange,提问作者saul contreras
相关产品推荐
相关产品推荐

