[英]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.com
和domain.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.com
、 server2.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.