iOS通用链接与通配符无法正常工作
在我正在开发的iOS应用程序中,我设置了Universal Links。 该应用程序托管多个域。 我使用通配符设置了一些域名。 这些域似乎不起作用。 例如,我想链接到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.com
和domain.com
,否则它将无法简单地使用在Xcode中指定applinks:*.domain.com
。
如果您的主站点在www.domain.com
上托管,并且您在domain.com
上有301重定向(将您重定向到www.domain.com
),这是不幸的,因为Universal Links不允许重定向。
我找到的解决方法是为您的应用创建一个主子域,并使用子子域作为通配符。 例如
-
app.domain.com
(必须提供apple-app-site-association
文件) -
server1.app.domain.com
(必须提供apple-app-site-association
) -
server2.app.domain.com
(…)
这样,在Xcode中,您只能指定applinks:*.app.domain.com
和Universal Links将无需指定server1.app.domain.com
, server2.app.domain.com
等等。在Xcode中。
但请注意,如果您计划将该服务器与您的应用程序一起使用,则还必须明确指定applinks:app.domain.com
。
我希望这有帮助。
似乎只在iOS 9.3 Beta 2
引入了在applinks
的域部分添加通配符。 在9.3 Beta 2发行说明中:
您现在可以将Universal Links与任意子域一起使用,而不需要将所有应用程序的子域列为完全限定的域名。 参赛作品的forms如下:
:[:端口号],其中包含“webcredentials”,“activitycontinuation”或“applinks”。
现在,条目的一部分可以选择以“*。”作为前缀,以指示通配符子域。 例如:
applinks:* example.com。
你说你在iOS 9.3.2
上运行。 但是您的deployment target
> = iOS 9.3
吗? 如果不是:尝试改变它。 我认为这将解决您的问题。
在这里你可以找到这个发行说明的副本 (抱歉,我没有任何其他公共来源)
编辑:
即使Apple Doc说您可以在域上使用通配符, 它们似乎也存在问题 :
要匹配关联域的所有子域,可以通过前缀指定通配符。 在特定域开始之前(需要该期间)。 域匹配基于applinks条目中最长的子字符串。 例如,如果您指定条目applinks: .mywebsite.com和applinks:*。userss.mywebsite.com,则会针对较长的* .users.mywebsite.com条目执行域emily.users.mywebsite.com的匹配。 请注意,由于星号后的句点,* .mywebsite.com的条目与mywebsite.com不匹配。 要为* .mywebsite.com和mywebsite.com启用匹配,您需要为每个提供单独的applinks条目。
我认为这是文档中的苹果bug。 我在9.3.1上遇到了同样的错误。 并且9.3.2工作正常。 非常有趣的链接,关于签署问题,请参阅Laurence Fan的评论
Apple应该说* .domain.com适用于> = 9.3.2在此链接支持通用链接
我在2016年9月尝试了这个,包括iOS 9.3.5和iOS 10 beta。 情况似乎没有变化:如果applinks仅包含通配符域,则通用链接仍然无效,即使文档表明这应该有效。