服务器上与apple-app-site相关的JSON如下所示:
{
"applinks": {
"apps": [],
"details": {
"TEAM_AND_BUNDLE_ID": {
"paths": [
"*"
]
}
}
}
}
我希望调用方法func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool
,以便我可以判断应用程序是否应该实际打开(对于调用myurl.com/open是真的,对于调用myurl.com是false)。
但是没有调用appdelegate方法,只需打开应用程序。
最直接的解决方案是将该路径组件放入JSON中,但据我所知,只有在安装应用程序时才会下载JSON,因此不会考虑JSON中的任何更改。
答案 0 :(得分:2)
这是正确的行为。如果点击符合apple-app-site-association
文件条件的网址,您的应用将始终启动。你无法在continue userActivity
内控制它。
安装应用程序时,下载apple-app-site-association
文件是正确的。它将通过App Store重新下载以进行更新,这意味着要添加新路径并确保所有用户都拥有它们,您通常需要发布应用更新。
排除网站根路径的正确方法是格式化apple-app-site-association
文件,如下所示:
{
"applinks": {
"apps": [],
"details": {
"TEAM_AND_BUNDLE_ID": {
"paths": [
"NOT /",
"*"
]
}
}
}
}
/
仅匹配网站的根目录,*
匹配整个网站(包括根目录)。这是有效的,因为iOS按顺序评估规则,并在找到匹配后停止。
更好的方法是在不需要不断更新应用的情况下处理此问题,方法是使用托管的深层链接服务,例如Branch.io(完全披露:我在分支机构团队中)或Firebase动态链接。