我有一个问题,我想在我的应用中打开其他应用,
(MDM Like App),
但在 iOS 9 之后,
使用CanOpenURL检查其他应用程序需要在LSApplicationQueriesSchemes中添加Schemes,
我在websrevice上获取了我的应用列表,因此我无法将它们添加到plist中
是否有任何解决方案使用CanOpenURL检查其他应用程序是否安装在LSApplicationQueriesSchemes中没有添加方案?
答案 0 :(得分:1)
您可以UIApplication.open(_:options:completionHandler:)
使用LSApplicationQueriesSchemes
指定canOpenURL(_:)
中的网址。该密钥仅用于openURL(_:)
。
见Apple's documentation here:
...与此方法不同,
LSApplicationQueriesSchemes
方法不受canOpenURL
要求的约束。无论您是否已声明该方案,该方法都可用于打开URL。
<强>更新强>
因此,如果您需要LSApplicationQueriesSchemes
,您还需要.plist
中的canOpenURL
条目,否则false
将始终返回openURL
。此限制已在iOS 9(我认为)中实施,以防止恶意应用嗅探已安装的手机。
由于无法在运行时添加条目且无法使用通配符,唯一的解决方案是直接调用openURL
并检查它是否成功。如果您的webservice和MDM保证安装了所调用的应用程序,这可能是一种可行的解决方法。
您还可以实施x-callback之类的内容。想一想以下内容:
'Year'
或者您的MDM(真正的MDM)可以发送推送通知,以通知新安装的应用及其URL方案。
尽管如此,这只是为了规避苹果所想的限制......