首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CanOpenURL而不添加LSApplicationQueriesSchemes

CanOpenURL而不添加LSApplicationQueriesSchemes
EN

Stack Overflow用户
提问于 2017-03-21 07:17:44
回答 1查看 3K关注 0票数 1

我有个问题想在我的应用程序中打开其他应用程序,

(类似于MDM的应用程序)

但在iOS 9之后,

使用CanOpenURL检查其他应用程序需要在LSApplicationQueriesSchemes中添加方案,

我把我的应用程序列表放到网上,所以我不能把它们添加到plist中,

是否有任何使用CanOpenURL检查其他应用程序的解决方案是在LSApplicationQueriesSchemes中安装或不安装而没有添加方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-21 07:28:30

您可以在没有指定UIApplication.open(_:​options:​completion​Handler:​)中的URLS的情况下使用LSApplicationQueriesSchemes。该密钥仅用于can​Open​URL(_:​)。请参阅苹果在这里的文档

..。与此方法不同,open​URL(_:​)方法不受LSApplication​Queries​Schemes需求的约束。如果应用程序可以打开URL,则该方法有效,无论您是否声明了该方案。

更新

因此,如果您需要canOpenURL,您还需要.plist中的那些LSApplication​QueriesSchemes条目,否则canOpenURL将始终返回false。这个限制已经在iOS 9中实现了(我认为)是为了防止恶意应用程序在安装的手机上嗅探。

由于无法在运行时添加条目,而且通配符也是不可能的,因此唯一的解决方案是直接调用openURL并检查它是否成功。如果您的webservice和MDM保证正在调用的应用程序被安装,这可能是一个可行的解决方案。

您还可以实现类似于X-回调的东西。想一想以下几点:

  • 中央(类似MDM的)应用程序注册一个URL,如“注册-应用程序://”,其他应用程序可以通过自己的(回调) URL方案注册自己。
  • 另一个应用程序调用“注册-应用程序”,并提供自己的(回调)方案
    • 为此,必须手动启动一次。

  • 类似MDM的应用程序将“回调-URLS”存储在数据库中。
  • 类似MDM的应用程序现在直接使用openURL
  • 不再需要webservice了。

或者您的MDM (真正的MDM)可以发送推送通知,通知新安装的应用程序及其URL方案。

不过,这不过是规避苹果所想的限制.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42920579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档