提问人:FunnyHorse 提问时间:11/7/2023 更新时间:11/11/2023 访问量:123
iOS 16+ 查询 URL 方案
iOS 16+ Querying URL schemes
问:
我为 iOS 16 制作了一个应用程序来自定义主屏幕图标,并寻找一种方法来确定设备上是否安装了第 3 方应用程序。
有一个函数可以做到这一点 - 方法 canOpenURL(_:)。您需要传递要检查的应用程序的 url 方案,如果它返回 ,则表示该应用程序已安装在设备上。UIApplication
canOpenURL(_:)
true
正如文档所述,所有查询的 url 方案都必须列在 key 下的文件中。此外,文档警告您,自 iOS 15 以来,列出的 url 方案数量限制为 50 个。Info.plist
LSApplicationQueriesSchemes
我试过了什么
有 50 个条目的限制,当我查询 51-st url 方案时,我收到一条错误消息“不允许此应用查询方案”,正如预期的那样。但是,有一些自定义应用程序(如Photowidget)具有庞大(远远超过50个)列表,显然有一种方法可以检测是否安装了应用程序。LSApplicationQueriesSchemes
问题
有没有办法逃避此限制,或者是否有其他方法可以检测当前设备上是否安装了应用程序?
答:
似乎在 iOS 16 上无法检查超过 50 个第 3 方应用程序的安装状态。
我的假设“必须有一种方法可以绕过 50 个应用程序的限制,因为有一些应用程序(如 Photowidget)以某种方式做到这一点”是错误的,他们不是。 为了确认这一点,我尝试了 Photowidget:我已经安装了一些应用程序,这些应用程序在此列表中的第 50 个条目之前和之后定位。应该如此,应用程序 #2、#49 被标记为已安装,而应用程序 #56、#59、#61 没有。
评论
LSApplicationQueriesSchemes
/Applications/Photowidget.app/Wrapper/Photowidget.app/Info.plist
LSApplicationQueriesSchemes