我们有多种风格的应用程序指向完全相同的服务器。我们无法通过区分域网址及其路径来区分不同的应用程序。
例如,从任何一个应用程序中,如果我们要求忘记密码,则两个应用程序在电子邮件中收到的针对重置密码的链接将是相同的。因此,如果我们点击链接,它将打开任何应用程序,而不是通过显示包含所有可用应用程序的菜单来询问用户应打开哪个应用程序。实际上,它打开了第一个与捆绑ID 匹配的应用,该应用与服务器上放置的 apple-app-site-association 文件匹配。
“应用程序关联域中的域注册”部分: applinks:example.com
放置在服务器上的apple-app-site-association文件中的内容:
{
"applinks": {
"apps": [
],
"details": [{
"appID": "XXXXXXXXXX.com.example.FirstApp",
"paths": [
"NOT /sample/activate/*",
"*"
]
},
{
"appID": "XXXXXXXXXX.com.example.SecondApp",
"paths": [
"NOT /sample/activate/*",
"*"
]
}
]
}
}
实际行为:
如果两个应用程序都安装在设备上,则通过点击浏览器中的链接,它将打开FirstApp 或 SecondApp
预期行为:
如果两个应用程序均已安装在设备上,则通过点击链接,iOS应该为用户提供他/她想打开哪个应用程序的选择。
有什么办法可以在上述情况下实现预期的行为?
最佳答案
根据Apple's documentation on AASA files,设备将始终使用匹配的URL注册第一个应用程序。
details键的值是一个字典数组,您的网站支持的每个应用程序一个字典。数组中字典的顺序决定了系统在寻找匹配项时所遵循的顺序,因此您可以指定一个应用来处理网站的特定部分。
不幸的是,似乎没有解决方法,因为这发生在设备的OS级别。最好的选择是以某种方式区分URL。抱歉,我知道这可能不是您想听到的答案。
关于ios - 如果多个应用程序指向同一个域,通用链接不会显示应用程序选择菜单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46950473/