我们在 Xcode 12.2 和 iOS 14.2 上遇到了同样的问题,并在 Apple Developer forum 上应用了更多详细信息。
这有关系吗? Associated Domain File 的文档在底部显示了一个关于 macOS 11 和 iOS 14 的新部分:
从 macOS 11 和 iOS 14 开始,应用不再向您的网络服务器直接发送对 apple-app-site-association 文件的请求。相反,他们将这些请求发送到 Apple 管理的内容交付网络 (CDN),专用于相关域。
更新 - 12 月 3 日:
我们检查了很多东西:
代码签名
我们的目标设置为“自动管理签名”。
在 App Store 连接中,我们查找了权利:
- 选择应用程序
- 选择“活动”
- 选择构建
- 向下滚动到“商店信息”,右侧列显示权利。
com.apple.developer.team-identifier 与 application-identifier 中的前缀匹配。后者与我们网站上apple-app-site-association file 中的apps 数组中的值完全匹配。
但是,在设备上使用 Xcode 执行 Build & Run 时,调试应用程序为 signed with a different Signing Identity:
Apple 开发:(com.apple.developer.team-identifier 以外的其他 ID)
据估计,这会导致与 apple-app-site-association 文件不匹配。因此,我们将这个新 id 添加到现有的 apple-app-site-association 文件中并上传到我们的服务器上:
{
"webcredentials": {
"apps": ["ABCDEF1234.com.domain.appName", // Release ID from App Store
"1234ABCDEF.com.domain.appName"] // Debug ID from Xcode
}
}
再试一次,还是一样的错误。
还执行了通常的操作,例如:
- 从 iPhone 卸载应用并重启 iPhone
- 在 Xcode 中清理构建文件夹
- 从 /Users/xxx/Library/Developer/Xcode 中删除 Xcode 文件夹 DerivedData 并重新启动 MacBook
apple-app-site-association 文件的可用性
在我们的服务器上更新此文件时,我们发现了一个docu update。在 2019 年 6 月(当我们推出这个特定的应用程序时),它提到将文件放在 2 个文件夹中:
https://<fully qualified domain>/apple-app-site-association
https://<fully qualified domain>/.well-known/apple-app-site-association
注意:目前只提到后面的.well-known目录。
我们的文件似乎只在第一个文件夹中。所以我们复制它并再次检查,但仍然显示错误。
为了排除 iOS 14 需要时间来更新基于 Apple 管理的新内容交付网络 (CDN) 的 apple-app-site-association 文件的更改,我们甚至使用了权利文件中的modeoption:
在您开发应用时,如果您的网络服务器无法从公共互联网访问,您可以使用备用模式功能绕过 CDN 并直接连接到您的私有域。
您可以通过向关联域的权利添加查询字符串来启用备用模式,如下所示:
webcredentials:doamin.com?mode=developer
再一次,没有运气。
TestFlight 版本
为避免使用 Xcode 调试器及其调试签名,将 Xcode 12.2 构建存档并将其提交到 App Store。如上所述在 App Store Connect 中验证来自构建的权利。它们与 apple-app-site-association 文件匹配。
发布用于内部 TestFlight 测试并在设备上进行测试。点击第一个密码文本字段不会显示密码建议。
结论
尽管我们似乎别无选择,但希望这些练习中的任何一个都能激发其他人找出解决方案。或者这只是一个巨大的 Apple 错误,我们需要等待他们的修复。