SwiftUI开发iOS App Clip无法通过Universal Link启动问题求助
App Clip Universal Link 无法启动的排查与修复
一、Associated Domains 配置验证
- 主应用(Runner)和App Clip目标的Associated Domains必须添加
applinks:<你的域名>,注意域名不带https前缀,例如applinks:vault-activation-beta.web.app。 - 确认Xcode中两个目标的配置文件(Provisioning Profile)已更新,包含Associated Domains权限。可在
Signing & Capabilities面板点击配置文件旁的刷新按钮同步。
二、AASA 文件补充配置
当前AASA仅为主应用配置了链接路由,App Clip需要单独在applinks的details数组中添加匹配规则,否则系统无法关联链接到App Clip。修改后的AASA配置如下:
{ "applinks": { "apps": [], "details": [ { "appID": "<TeamId>.<BundleId of main app>", "paths": ["/redeem"] }, { "appID": "<TeamId>.<BundleId of app clip>", "paths": ["/redeem"] } ] }, "appclips": { "apps": ["<TeamId>.<BundleId of app clip>"] } }
注:appclips字段仅用于声明App Clip存在,实际链接的路由匹配仍依赖applinks中的配置。
三、代码逻辑调整
- SwiftUI的
onOpenURL与UIApplicationDelegate的continue userActivity均可处理链接,建议保留其中一处逻辑避免冲突。可移除AppDelegate中的continue userActivity方法,仅通过ContentView的onOpenURL接收链接:
WindowGroup { ContentView() .onOpenURL(perform: { url in print("Opened URL: \(url)") }) }
- 确保测试时App Clip已通过Xcode安装到真机,且未被卸载。
四、设备缓存与测试方式排查
- iOS会缓存AASA文件,新配置可能无法立即生效,可通过以下方式重置缓存:
- 重启设备。
- 打开Safari访问目标链接(https://vault-activation-beta.web.app/redeem),下拉刷新页面后返回短信重试。
- 进入
设置 -> 通用 -> VPN与设备管理 -> 开发者APP,点击App Clip条目选择验证应用(若有该选项)。
- 测试时需长按短信中的链接,查看是否出现“在App Clip中打开”选项,直接点击链接可能优先打开主应用或Safari。
五、额外检查项
- 确认App Clip的Bundle ID符合苹果规则:必须是主应用Bundle ID的后缀形式,例如主应用为
com.example.app,App Clip需为com.example.app.Clip。 - 验证域名HTTPS有效性:需使用正规SSL证书(Firebase Hosting默认满足,无需额外操作)。
- 确认AASA文件路径正确:需放置在域名的
.well-known目录下,访问https://vault-activation-beta.web.app/.well-known/apple-app-site-association应直接返回文件内容,无跳转或下载。
内容的提问来源于stack exchange,提问作者lcolli71
相关产品推荐
相关产品推荐

