在iOS系统中,关联启动(Associated Domains)是通过配置应用的Associated Domains capability和服务器端的Apple App Site Association(AASA)文件实现跨应用或网页与App的深度链接跳转。以下是详细步骤和扩展知识:
1. 配置Xcode工程
开启Associated Domains功能
在Xcode中打开工程,进入`Signing & Capabilities`标签页,添加`Associated Domains`能力。
在`Domains`列表中填写关联域名,格式为:
`applinks:
支持子域名通配符,如`applinks:*.example.com`。
配置URL Scheme(备用方案)
如果通用链接失效(如用户禁用),可在`Info.plist`中声明`CFBundleURLTypes`作为备选跳转方案。需注意URL Scheme可能被其他应用抢占。
2. 部署AASA文件
文件内容规范
AASA文件必须命名为`apple-app-site-association`,无后缀名,放置在域名的`.well-known`目录或根目录下(如`https://example.com/.well-known/apple-app-site-association`)。
示例结构:
json
{
"applinks": {
"apps": [],
"details": [{
"appID": "TeamID.BundleID",
"paths": ["/path/to/content", "/news/*"]
}]
}
}
- `TeamID`:开发者账户的10字符团队ID(可从Apple Developer页面获取)。
- `paths`:指定触发跳转的URL路径,支持通配符`*`(任意字符)和`?`(单字符),`NOT /path`表示排除路径。
服务器要求
- 必须使用HTTPS,且证书有效。
- 文件需为无签名的纯JSON,Content-Type为`application/json`。
- 返回HTTP 200状态码,禁止重定向。
3. 验证与调试
命令行工具验证
使用终端命令`curl -v https://example.com/.well-known/apple-app-site-association`检查AASA文件可达性及内容是否正确。
iOS设备日志
连接设备到Mac,通过Console.app筛选`swcd`进程日志,查看通用链接解析是否成功。常见错误包括:
- 证书无效(如自签名或不信任CA)。
- AASA文件语法错误或路径不匹配。
- 未开启Associated Domains能力。
模拟跳转测试
在Notes或Messages中输入完整URL,长按检查是否显示“用App打开”。若跳转失败,可能需清除设备关联域名缓存(重启设备或重置网络设置)。
4. 进阶配置
多App关联
同一域名可关联多个App,需在AASA文件的`details`数组中分别声明不同BundleID。iOS会根据用户已安装的App按优先级匹配。
延迟加载与场景适配
在`AppDelegate`中实现`application(_:continue:restorationHandler:)`方法处理通用链接,支持冷启动和热启动场景。可通过`userActivity.webpageURL`获取跳转来源URL。
跨平台兼容性
若同时支持Android,需在AASA同级目录提供`assetlinks.json`,并确保两端路径策略一致。
5. 注意事项
隐私与权限
首次跳转时iOS会向用户展示提示栏(“是否允许在App中打开”)。用户拒绝后需手动在系统设置中重置(设置 > App名称 > 通用链接)。
失效场景
- 用户手动长按并选择“在Safari中打开”。
- 链接通过JavaScript的`window.open`触发(需改用`location.href`或``标签)。
时效性
iOS会缓存AASA文件(通常24小时更新一次),更新配置后需等待缓存失效或主动重启设备。
实现关联启动需要严格遵循Apple的校验逻辑,建议开发时参考官方文档《Allowing Apps and Websites to Link to Your Content》并结合真机测试。服务端需确保AASA文件实时可访问,避免因配置错误导致功能异常。