iOS Universal Link 配置与托管实践
什么是 Universal Link
Universal Link 是 Apple 在 iOS 9 引入的深度链接机制,允许用户点击一个 HTTPS 链接直接跳转到应用内,而不需要经过 Safari。微信 SDK 从某个版本开始强制要求使用 Universal Link 进行回调。
用户点击链接 → iOS 检查 AASA 文件 → 匹配成功 → 直接打开应用
↘ 匹配失败 → 在 Safari 中打开网页
↘ 匹配失败 → 在 Safari 中打开网页
核心文件:apple-app-site-association
这个文件(简称 AASA)告诉 iOS 系统哪些路径应该被哪个应用接管。文件格式:
{
"applinks": {
"apps": [],
"details": [
{
"appIDs": ["TEAM_ID.BUNDLE_ID"],
"paths": ["/app/*"]
}
]
}
}
appIDs 格式是 TeamID.BundleID,不是单独的 Bundle ID。Team ID 可以在 Apple Developer 账号或 Xcode 项目设置中找到。部署到云端静态托管
AASA 文件必须通过 HTTPS 提供,且不能有重定向。云端静态托管是最快捷的方案:
- 登录云开发环境
- 将 AASA 文件上传到根目录和
.well-known/目录(兼容性考虑) - 云平台自动提供 HTTPS 域名
最终 URL 格式如下:
https://your-env-id.tcloudbaseapp.com/apple-app-site-association
https://your-env-id.tcloudbaseapp.com/.well-known/apple-app-site-association
Xcode 配置 Associated Domains
在 Xcode 中配置应用关联域名:
- 选中 Target → Signing & Capabilities
- 点击 "+ Capability" 添加 Associated Domains
- 添加
applinks:your-env-id.tcloudbaseapp.com
注意
applinks: 前缀不能省略,且域名不需要加 https://。微信开放平台配置
在微信开放平台的应用管理中,填写 Universal Link:
https://your-env-id.tcloudbaseapp.com/app/
末尾的 / 不能省略,且必须与 AASA 文件中的 paths 规则匹配。
验证方法
Apple 提供了在线验证工具:
https://app-site-association.cdn-apple.com/a/v1/your-domain.com
如果返回了你的 AASA 文件内容,说明配置生效。注意 Apple 的 CDN 有缓存,新部署后可能需要等待几分钟到几小时。
常见问题
- AASA 文件的 Content-Type:必须是
application/json,云托管默认处理正确 - 文件大小:不能超过 128KB
- Team ID 错误:是最常见的配置失败原因,务必在 Apple Developer 确认
- 缓存问题:iOS 系统会缓存 AASA,重装应用可以强制刷新