我知道,一旦我在plist文件中列入了白名单,我就可以通过编程方式确定我的设备上是否安装了该应用程序。例如,如果我在plist文件中的spotify
数组中有LSApplicationQueriesSchemes
字符串,那么我可以通过查询
UIApplication.shared.canOpenURL(NSURL(string: "spotify")! as URL)
我的问题是 - 目标应用程序是否必须明确将其URL列入白名单?那么其他人可以使用它吗?或者这适用于每个应用程序?每个应用都隐含有这样的URL吗?
为了通过openURL
打开应用程序,应用程序必须注册其对一个或多个自定义URL方案的支持。所以不,并非每个应用程序都隐式具有自定义URL方案。
当用户安装应用程序时,iOS会跟踪已安装的应用程序支持的URL方案。
当某个应用程序调用canOpenURL
时,iOS会首先验证调用应用程序是否已将该自定义方案列入白名单。如果是,则检查设备上是否已安装任何已安装的应用程序已注册该自定义URL方案,并相应地返回true
或false
。