我有个问题想在我的应用程序中打开其他应用程序,
(类似于MDM的应用程序)
但在iOS 9之后,
使用CanOpenURL检查其他应用程序需要在LSApplicationQueriesSchemes中添加方案,
我把我的应用程序列表放到网上,所以我不能把它们添加到plist中,
是否有任何使用CanOpenURL检查其他应用程序的解决方案是在LSApplicationQueriesSchemes中安装或不安装而没有添加方案?
发布于 2017-03-21 07:28:30
您可以在没有指定UIApplication.open(_:options:completionHandler:)中的URLS的情况下使用LSApplicationQueriesSchemes。该密钥仅用于canOpenURL(_:)。请参阅苹果在这里的文档
..。与此方法不同,
openURL(_:)方法不受LSApplicationQueriesSchemes需求的约束。如果应用程序可以打开URL,则该方法有效,无论您是否声明了该方案。
更新
因此,如果您需要canOpenURL,您还需要.plist中的那些LSApplicationQueriesSchemes条目,否则canOpenURL将始终返回false。这个限制已经在iOS 9中实现了(我认为)是为了防止恶意应用程序在安装的手机上嗅探。
由于无法在运行时添加条目,而且通配符也是不可能的,因此唯一的解决方案是直接调用openURL并检查它是否成功。如果您的webservice和MDM保证正在调用的应用程序被安装,这可能是一个可行的解决方案。
您还可以实现类似于X-回调的东西。想一想以下几点:
openURL。或者您的MDM (真正的MDM)可以发送推送通知,通知新安装的应用程序及其URL方案。
不过,这不过是规避苹果所想的限制.
https://stackoverflow.com/questions/42920579
复制相似问题