使用URL方案查询canOpenURL

众所周知,Apple继续优先考虑用户的证券和隐私。 因此,毫不奇怪,Apple在iOS 9中带来了新的安全性和隐私。出于安全原因,对查询iOS 9中的canOpenURL进行了一些更改。

添加url方案以启用URL方案:-转到信息->打开url类型->添加类型。

我们通常使用openURL:函数打开外部应用程序。 通常,首先我们查询UIApplication的canOpenURL :(返回Bool)以检查URL方案的可用性,然后使用openURL:打开外部应用。 Swift代码段:-

 让appURL = URL(string:“ thatapp://”) 
 如果UIApplication.shared.canOpenURL(appURL!){ 
  //开放网址的代码 
打印(“可以打开URL”)
}

这是一个很好的功能,但是Facebook,Twitter等开发人员使用此机制获取设备中安装的应用程序列表。 苹果认为这是对隐私的侵犯,因此在iOS 9中限制了URL方案的查询。

如果您针对iOS 9 SDK进行构建和链接,则需要将应用将查询的方案列入白名单。

如果您在应用中运行上述代码,则会收到以下错误消息,

-canOpenURL:URL失败:“ thatapp://” —错误:“此应用不允许查询方案thatapp”

这是因为您需要在LSApplicationQueriesSchemes项下的info.plist中将您的应用想要查询的URL方案白名单:

在info.plist中包含URL Scheme之后,一切都会好起来的。

在iOS 9中,没有50个URL方案的限制,与在iOS 8及之前版本中一样。您可以查询任意数量的应用程序,但必须在info.plist中声明它。 强烈是要在检查Apple的应用程序时检查URL方案的列表,如果他们发现该应用程序违反了安全性,他们可以拒绝该应用程序,这就是我所相信的。