【问题标题】:How do you specify an apple-app-site-association file path to match query strings?如何指定 apple-app-site-association 文件路径以匹配查询字符串?
【发布时间】:2020-03-30 19:17:27
【问题描述】:

我正在尝试在我正在构建的移动应用中设置通用链接。 我试图在我的网站上匹配的路径是www.mywebsite.com/route?query=xxx

苹果文档有一个示例 apple-app-site-association 文件,看起来像这样。

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "9JA89QQLNQ.com.apple.wwdc",
                "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
            },
            {
                "appID": "ABCD1234.com.apple.wwdc",
                "paths": [ "*" ]
            }
        ]
    }
}

但是这个例子没有带查询字符串的路径的例子。

如何在我的 apple-app-site-association 文件中匹配我的路线 www.mywebsite.com/route?query=xxx

谢谢

【问题讨论】:

    标签: ios react-native query-string deep-linking ios-universal-links


    【解决方案1】:

    我也有同样的问题,我能够找到苹果自己的关于查询字符串的信息,见下文。

    注意

    您用来在路径数组中指定网站路径的字符串是 区分大小写。只有 URL 的路径部分用于 比较。其他组件,例如查询字符串或片段 标识符,被忽略。

    简而言之,他们会在“路由”之后忽略您链接中的任何内容,您只需使用 /route 作为路径。

    可以在here找到我引用的完整页面

    【讨论】:

      【解决方案2】:

      正如this video 中提到的,我们现在可以在iOS 13 及更高版本中使用components 数组来处理这种通用链接:

      从今年开始,我们将 paths 密钥替换为 components 密钥。

      此键的值是一个字典数组,每个字典包含零个或多个 URL 组件以进行模式匹配。和以前一样,您可以匹配 URL 的 path 组件,其键是正斜杠。如果您需要支持以前的版本,您可以保留路径键。

      如果 components 键存在,iOS 13、tvOS 13 和 macOS 10.15 将忽略它。 现在您可以匹配以哈希标记为键的URL片段组件,您可以匹配以问号为键的查询组件。

      现在很多(如果不是大多数的话)URL 将它们的查询组件划分为称为查询项的键值对。对于查询组件,您可以指定字典而不是字符串作为其值和模式匹配单个查询项。 URL 可能会重复查询项名称,并且操作系统将要求给定查询项名称的所有实例都与您的模式匹配。

      例子:

      "components": [
            {
                    "/": "/help/*",
                    "?": { "articleNumber": "????", "articleName": "?*" },
                    "comment": "Matches any URL whose path starts with /help/ and which has a query item with name 'articleNumber' and a value of exactly 4 characters, and another with name 'articleName' and a value of one or more characters"
                 }
          ]
      

      没有值的查询项和不存在的查询项被操作系统视为它们的值等于空字符串。

      对于要匹配候选 URL 的组件字典,所有指定的组件都必须匹配。如果您不指定组件,则操作系统的默认行为是简单地忽略该组件。因此,例如,如果您的应用程序不关心 URL 的片段组件,则无需在此文件中指定它。您的网站的某些部分可能尚无法在您的应用中显示。您可以通过将排除键指定为布尔值 true 来排除此类子部分。

      此键与您在旧路径键中使用的 not 关键字具有相同的行为。使用组件的字典时不支持该关键字。

      【讨论】:

        猜你喜欢
        • 2020-08-28
        • 2018-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-06
        • 2016-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多