iOS - 通用链接 - 防止浏览器中的重定向打开已安装的应用程序

iOS - Universal links - Preventing a redirect in browser from opening installed application

用户在 iOS 上安装了我们的移动应用程序,但通过 Safari 浏览器使用我们的网站。用户正常浏览网页,但是...

通过 checkout/purchase 过程,我们使用外部托管的卡支付服务,在输入卡后,将用户重定向到发卡机构的 3DS 身份验证服务,完成后,用户将被重定向回我们网站上的一个页面。

(~/cart.php?target=Payment_return)

在这种情况下,Universal linking 介入并导致重定向 link 打开我们安装的应用程序,而不是继续在网络浏览器中。 [这不会发生在 android 设备上] 这导致付款处理完成,但用户在结帐过程中丢失。

我们的 AASA 协会文件包含:

 "paths": ["NOT *target=product_search*","NOT /cart.php?target=payment_return*","*"]

但这种排除似乎并没有兑现。

团队很困惑,非常感谢这里的任何建议。

显然,这与用户上次打开 link 我们的网站或应用程序的方式有关,并且 iOS 'remembering' 该选择是默认设置; (如果用户最后的选择是在浏览器中打开我们的 link,则不会出现这种情况);尽管如此,在浏览器中工作时的重定向是不受欢迎的,而且 AASA 排除似乎不起作用。

我们错过了什么?或者肯定有很多其他人在同一条船上?帮助。

tia.

从文档中,参考 here:

Note that only the path component of the URL is used for comparison. Other components, such as the query string or fragment identifier, are ignored.

这可能就是排除项不受尊重的原因。

不知道iOS13以下是否需要支持,但是如果你是针对iOS13以上的版本,还是有希望的,check here求详细文档。

在你的情况下,它可以是这样的(我没试过,只是给你一个想法):

{ "applinks": {
  "details": [
       {
         "appIDs": [...],
         "components": [
           {
              "/": "/cart.php*",
              "?": { "target": "payment_return" },
              "exclude": true,
              "comment": "Matches any URL whose path starts with cart.php and which has a query item with name 'target' and a value payment_return"
           }
         ]
       }
   ]}, ...}

并且不要忘记在网站上更改 AASA 后重新安装应用程序。