2017-06-21 58 views
0

服务器上的苹果应用程序站点相关的JSON看起来是这样的:的iOS:通用链接总是打开应用

{ 
    "applinks": { 
     "apps": [], 
     "details": { 
      "TEAM_AND_BUNDLE_ID": { 
       "paths": [ 
        "*" 
       ] 
      } 
     } 
    } 
} 

我期望的方法func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool被调用,所以我可以整理一下是否应该实际上打开应用程序(调用myurl.com/open时为true,仅调用myurl.com时为false)。

但是appdelegate方法没有被调用,应用程序只是打开。

有意义的解决方案是将该路径组件放入JSON中,但据我所知只有在安装该应用程序时才下载JSON,因此不会考虑JSON中的任何更改。

回答

1

这是正确的行为。如果点击满足apple-app-site-association文件中的条件的URL,您的应用将启动始终。您无法在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动态链接。

相关问题