繁体   English   中英

带有通配符的 iOS 关联域(通用链接)不起作用

[英]iOS Associated Domains (Universal Links) with Wildcards not working

在我正在开发的 iOS 应用程序中,我设置了关联域(通用链接)。 该应用程序托管多个域。 我用通配符设置了一些域。 这些域似乎不起作用。 例如,我想链接到https://news.mydomain.com/ 如果我将以下内容添加到关联域列表中:

applinks:*.mydomain.com -> 不起作用

applinks:news.mydomain.com -> 工作正常

所以我相信我的设置完全正确,apple-app-site-association 文件设置得很好。 我什至可以看到在这两种情况下(使用 Charles Proxy)apple-app-site-association 文件都可以正常检索。

对于通配符,链接只能在 Safari 中打开。

当我在没有通配符的情况下配置域时,应用程序将打开。

我在这里错过了什么吗? 我在设备上运行 iOS 9.3.2,我运行 Xcode 7.3.1,这是今天的最新版本。

我将我的发现添加到此线程: https : //forums.developer.apple.com/thread/47315

简而言之,即使在 iOS 10 中,通配符设置似乎也要求apple-app-site-association文件由通配符的根提供。

例如,如果你想使用*.domain.com ,那么apple-app-site-association需要同时托管,例如app1.domain.comdomain.com ,否则它不会简单地使用在 Xcode 中指定applinks:*.domain.com

如果您的主站点托管在www.domain.com ,并且您在domain.com上进行了 301 重定向(将您重定向到www.domain.com ),这很不幸,因为通用链接不允许重定向。

我发现的解决方法是为您的应用创建一个主子域,并为通配符使用子子域。 例如

  • app.domain.com (必须提供apple-app-site-association文件)
  • server1.app.domain.com (必须为apple-app-site-association
  • server2.app.domain.com (...)

这样,在 Xcode 中,您只能指定applinks:*.app.domain.com并且通用链接将起作用,而无需指定server1.app.domain.comserver2.app.domain.com等等。 . 在 Xcode 中。

但是请注意,如果您计划将该服务器与您的应用程序一起使用,您还必须明确指定applinks:app.domain.com

我希望这会有所帮助。

看来,在加入该域部分通配符applinks只被中介绍iOS 9.3 Beta 2 在 9.3 Beta 2 发行说明中:

您现在可以使用具有任意子域的通用链接,而无需将应用程序的所有子域列为完全限定域名。 条目具有以下形式:

:[:port number] 其中是“webcredentials”、“activitycontinuation”或“applinks”。

条目的部分现在可以选择以“*”为前缀。 表示通配符子域。 例如:

应用链接:*.example.com

你说你在iOS 9.3.2上运行。 但是您的deployment target >= iOS 9.3吗? 如果不是:尝试更改它。 我认为它会解决你的问题。

在这里您可以找到此发行说明的副本(抱歉,我没有任何其他公开来源)

编辑:

即使Apple Doc说您可以在域上使用通配符,但他们似乎对此存在问题

要匹配关联域的所有子域,您可以通过添加前缀来指定通配符 在特定域的开始之前(句号是必需的)。 域匹配基于 applinks 条目中最长的子字符串。 例如,如果您指定条目 applinks: .mywebsite.com 和 applinks:*.users.mywebsite.com,则域 emily.users.mywebsite.com 的匹配将针对较长的 *.users.mywebsite.com 条目执行。 请注意,由于星号后面的句点,*.mywebsite.com 的条目与 mywebsite.com 不匹配。 要同时为 *.mywebsite.com 和 mywebsite.com 启用匹配,您需要为每个条目提供单独的 applinks 条目。

我认为这是文档中的苹果错误。 我在 9.3.1 上遇到了同样的错误。 并且 9.3.2 工作正常。 很有趣的链接,关于签名问题,看Laurence Fan的评论

Apple 应该说 *.domain.com 在此链接中适用于 >= 9.3.2 支持通用链接

我在 2016 年 9 月尝试过这个,同时使用 iOS 9.3.5 和 iOS 10 测试版。 情况似乎没有改变:如果 applinks 只包含通配符域,通用链接仍然不起作用,即使文档表明这应该起作用。

Apple 在 AASA 文件中进行了更改以支持动态链接,请更改并在关联域中添加:webcredentials:dev.rlogical.com

{
  "applinks": {
      "details": [
           {
             "appIDs": [ "ABCDE12345.com.example.app", "ABCDE12345.com.example.app2" ],
             "components": [
               {
                  "#": "no_universal_links",
                  "exclude": true,
                  "comment": "Matches any URL whose fragment equals no_universal_links and instructs the system not to open it as a universal link"
               },
               {
                  "/": "/buy/*",
                  "comment": "Matches any URL whose path starts with /buy/"
               },
               {
                  "/": "/help/website/*",
                  "exclude": true,
                  "comment": "Matches any URL whose path starts with /help/website/ and instructs the system not to open it as a universal link"
               },
               {
                  "/": "/help/*",
                  "?": { "articleNumber": "????" },
                  "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"
               }
             ]
           }
       ]
   },
   "webcredentials": {
      "apps": [ "ABCDE12345.com.example.app" ]
   },
    "appclips": {
        "apps": ["ABCED12345.com.example.MyApp.Clip"]
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM