iOS Universal Link仅模拟器可用,真机/iPA/TestFlight无法跳转至App求助
解决iOS真机(iOS 11.0/iPhone 6s)Universal Link无法跳转的问题
我之前也碰到过一模一样的坑——模拟器上点一次跳一次,真机却死活只开Safari,折腾了好一阵子才捋清楚所有关键点,给你列几个必查的步骤,按顺序来大概率能搞定:
1. 先核对开发者后台与项目的Associated Domains配置
- 去苹果开发者后台找到对应App ID,确认Associated Domains权限已经勾选,而且Bundle ID和你项目里的完全一致(包括大小写!我之前就栽在这上面过)。
- 回到Xcode项目,打开
Capabilities标签,确保Associated Domains是开启状态,添加的域名格式必须是applinks:yourdomain.com——别加http://或https://,也别带路径后缀,就纯域名前缀加applinks:。
2. 验证Apple App Site Association(AASA)文件的正确性
这是真机最容易卡壳的环节,模拟器宽容度高但真机要求极严:
- 文件必须放在域名的
.well-known目录下,访问路径是https://yourdomain.com/.well-known/apple-app-site-association,绝对不能加.json后缀,而且必须是HTTPS协议(HTTP在真机上完全不生效)。 - 打开这个URL,检查内容里的
appID格式是否正确:你的Team ID.Bundle ID,比如:{ "applinks": { "apps": [], "details": [ { "appID": "ABCDE12345.com.yourcompany.yourapp", "paths": ["*", "/your-target-path/*"] } ] } } - 可以用终端命令验证苹果服务器是否正确抓取了你的AASA文件:
curl -v https://app-site-association.cdn-apple.com/a/v1/yourdomain.com,如果返回内容和你服务器上的不一致,说明苹果还在缓存旧文件,要么等几小时,要么重启手机试试。
3. 检查真机的系统与网络设置
iOS 11有几个容易忽略的设置会干扰跳转:
- 确认手机网络正常,能访问HTTPS链接(毕竟AASA文件要通过HTTPS获取),别开飞行模式。
- 去
设置->Safari浏览器->隐私与安全性,看看有没有开启阻止跨网站跟踪,这个选项会影响Universal Link的触发,建议关掉再测试。 - 还有个隐藏坑:如果用户之前手动在Safari里打开过你的链接,并且选了“在Safari中打开”,系统会记住这个偏好,之后点击都会默认进Safari。解决方法是:打开Safari访问你的Universal Link,长按链接,选择“在[你的App名称]中打开”,之后跳转就会恢复正常。
4. 确认安装包的Provisioning Profile权限
不管是Debug真机运行、IPA安装还是TestFlight分发,都要确保打包用的Provisioning Profile包含Associated Domains权限:
- 在Xcode里,选中你的target,去
Build Settings->Code Signing,查看Provisioning Profile的详情,确认里面有com.apple.developer.associated-domains这个权限。 - TestFlight的话,新上传的构建可能需要10-30分钟让苹果处理权限,刚传完就测试大概率会失败,耐心等一会儿再试。
5. 用正确的方式测试
别在Safari地址栏直接输入链接(默认会在Safari打开),正确的测试姿势是:
- 在备忘录、短信、微信等第三方App里点击链接;
- 真机可以给自己发一条包含链接的短信,点击测试;
- 模拟器能用
xcrun simctl openurl booted "your-universal-link-url",但真机得用第三方App触发跳转。
按这些步骤一个个排查,尤其是AASA文件和Associated Domains的配置,基本就能解决问题了。
内容的提问来源于stack exchange,提问作者Kelly White
相关产品推荐
相关产品推荐

