【问题标题】:Universal Linking not showing app selection menu in case of multiple apps pointing to same domain如果多个应用程序指向同一个域,通用链接不显示应用程序选择菜单
【发布时间】:2017-10-26 09:22:27
【问题描述】:

我们的应用程序有多种风格,它们指向完全相同的服务器;我们无法通过查看域 url 及其路径来区分不同的应用程序。

例如,从任何应用程序中,如果我们请求忘记密码,则电子邮件中收到的重置密码链接对于两个应用程序都是相同的。因此,如果我们点击链接,它将打开任何应用程序,而不是通过显示所有可用应用程序的菜单来询问用户应该打开哪个应用程序。实际上,它打开了 Bundle 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 应该让用户选择他/她想要打开哪个应用程序。

有什么方法可以实现上述场景的预期行为?

【问题讨论】:

  • 这是 iOS 的限制。 iOS 平台不提供从应用程序中进行选择的选项。它将打开带有他们认为最适合的选项的链接,并且没有办法绕过它。
  • @AmrutaDeshmukh 任何替代或解决方法?在我的情况下有必要处理。应该打开正确的应用程序。

标签: ios iphone deep-linking branch.io ios-universal-links


【解决方案1】:

根据Apple's documentation on AASA files,设备将始终使用匹配的URL注册第一个应用程序。

详细信息键的值是一个字典数组,您的网站支持的每个应用都有一个字典。数组中字典的顺序决定了系统在查找匹配项时遵循的顺序,因此您可以指定一个应用程序来处理您网站的特定部分。

不幸的是,似乎没有解决方法,因为这发生在设备的操作系统级别。最好的办法是以某种方式区分 URL。抱歉,我知道这可能不是您想听到的答案。

【讨论】:

  • 感谢您的回复。是的,它的局限性。我想要任何方式来实现这种行为,而不是改变 url。你知道这种情况下 branch.io 的行为是什么吗?
  • Branch 的链接利用通用链接,因此在这种情况下其行为将相同:(
  • 2019 年后期没有变化?根据developer.apple.com/documentation/uikit/… - 是的,没有变化。
猜你喜欢
  • 2016-04-05
  • 1970-01-01
  • 2012-01-27
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多