背景:
- 我们的应用程序对开发版本、测试版本和生产(App Store)版本使用不同的捆绑包 ID
- 我目前正在我们的开发版本中实现通用链接
- 我们目前在 App Store 中的生产版本不支持通用链接
我遇到了这个疯狂的问题,我的通用链接不仅没有打开应用程序的开发版本,而且他们正在启动生产版本,尽管生产版本没有适当的权利。
我的apple-app-site-association
文件已使用https://branch.io/resources/universal-links/和https://search.developer.apple.com/appsearch-validation-tool/进行了验证,如下所示:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "DY74R9XXXX.com.myapp.consumer.debug",
"paths": [ "/profiles/*", "/messages/*"]
},
{
"appID": "DY74R9XXXX.com.myapp.consumer",
"paths": [ "/profiles/*", "/messages/*"]
}
]
}
}
根据https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.htmldetails
应按顺序评估数组并在找到匹配项后停止。
数组中字典的顺序决定了系统在查找匹配项时遵循的顺序,因此您可以指定一个应用程序来处理您网站的特定部分。
.debug
目的是为我团队中的任何人在开发版本中加载相同的通用链接,在手机上没有该软件包的最终用户的生产版本中加载。
这不仅不起作用,而且如前所述,通用链接始终加载生产版本,即使生产版本缺少applinks:dev.myserver.com
指向我apple-app-site-association
文件的权利。这看起来很疯狂,但这意味着我可以启动我没有发布的任意包并且权利文件没有被强制执行。
此外,如果我从数组中删除第二个条目details
,只保留调试版本的字典,通用链接将无法工作,而是打开 Safari。切换数组的顺序也没有效果。我在 9.3 和 9.3.1 的 iPhone 6s 上都经历过这种行为。非常感谢关于这两个问题的任何建议(启动错误的包,并且在它是唯一条目时不启动调试包)!