如何排查无法打开应用的通用链接

全面指南:排查通用链接无法打开iOS应用的原因,涵盖AASA文件常见问题、应用配置及设备特定调试方案。

Intermediate

调试无法打开应用的通用链接需要系统化方法,需同时检查应用配置和Web服务器设置。以下是完整指南:

1. 验证基础设置与测试环境

  • 使用真实设备而非模拟器: 通用链接在模拟器上的表现常有差异,务必在实体iOS设备上测试。
  • 删除并重新安装应用: 修改配置后,请先从设备中卸载应用再重新安装,此操作将强制iOS重新下载apple-app-site-association(AASA)文件。
  • 通过正确渠道测试: 直接粘贴到浏览器地址栏的通用链接无法生效。请通过其他应用(如备忘录、邮件、iMessage或Slack)中的链接进行测试。部分应用(如Instagram、Twitter或Facebook)可能不直接支持通用链接。

2. 检查apple-app-site-association(AASA)文件

AASA文件是通用链接的关键组件。iOS会从您的网络服务器下载此文件,以确定应用可处理的链接类型。

  • 文件位置: AASA文件必须托管在https://yourdomain.com/apple-app-site-associationhttps://yourdomain.com/.well-known/apple-app-site-association路径下。
  • HTTPS及无重定向:文件必须通过HTTPS传输且不包含任何3xx重定向。
  • Content-Type 标头: 确保服务器为 AASA 文件返回正确的 Content-Type 标头。
  • JSON 有效性: AASA 文件必须是有效的 JSON 格式,并遵循指定的模式。可使用在线验证工具(如 Branch.io 的 AASA 验证器)检查其正确性。
  • appID与路径: 验证AASA文件中的appID是否与应用程序的团队ID和包标识符(例如ABC123DEF.com.example.app)一致。 同时确保paths数组正确指定了应用需处理的URL路径。
  • 服务器日志:检查Web服务器的HTTPS日志,确认iOS在应用安装时成功下载了AASA文件。

3. Xcode中的应用配置

  • 关联域名权限: 在Xcode项目中,进入"签名与功能"选项卡,确保启用"关联域名"功能。按applinks:yourdomain.com格式添加域名。
  • 调试与发布环境区分: 开发调试时,请确保编辑的是"签名与功能"中的调试版本。为绕过开发阶段的Apple通用链接CDN,请将调试域名配置为applinks:yourdomain.com?mode=developer
  • 应用委托/场景委托: 验证应用的AppDelegate(或iOS 13+的SceneDelegate)是否正确实现了application(_:continueUserActivity:restorationHandler:)方法,以处理通用链接传入的NSUserActivity对象。

4. 设备特定调试

  • 控制台日志: 将设备连接至 Xcode,打开控制台(窗口 > 设备和模拟器 > [您的设备] > 打开控制台)。 筛选日志中的"swcd"(共享网络凭据守护进程)以查看通用链接注册是否成功或失败。
  • 开发者设置(iOS 13+):
    • 在设置 > 隐私与安全 > 开发者模式中启用"开发者模式"。
    • 在设置 > 开发者 > 通用链接中,启用"关联域开发"功能。
    • 使用通用链接部分的"诊断"工具,输入您的通用链接URL并验证其对已安装应用的有效性。
  • 重启设备:重启设备可清除iOS通用链接缓存并解决问题。
  • 在不同设备/iOS版本上测试:这有助于排除设备特有的配置问题。
  • 重新启用通用链接:若通用链接曾通过Safari打开,该链接可能已被禁用。 在备忘录等应用中长按链接,选择"在[您的应用名称]中打开"即可重新启用。若Safari中出现智能应用横幅,点击横幅中的"打开"也可重新启用通用链接。

5. 高级故障排除

  • sysdiagnose 日志: 需深入排查时,可访问 iOS 设备上的 sysdiagnose 日志(设置 > 隐私与安全 > 分析与改进 > 分析数据)。这些日志能提供 iOS 处理通用链接的详细信息。
  • 第三方工具: 使用苹果应用搜索API验证工具或其他第三方验证工具,检查您网站的配置是否正确。

通过系统性地执行这些步骤,您可识别并解决大多数导致通用链接无法打开应用的问题。