我为 iOS 16 制作了一个应用程序来自定义主屏幕图标,并寻找一种方法来确定设备上是否安装了第 3 方应用程序。
有一个函数可以做到这一点 -
UIApplication
方法canOpenURL(_:)。您需要将要检查的应用程序的 url 方案传递给 canOpenURL(_:)
,如果它返回 true
,则意味着该应用程序已安装在设备上。
正如文档所述,所有查询的 url 方案必须列在
Info.plist
文件中的 LSApplicationQueriesSchemes
键下。此外,文档警告您,自 iOS 15 以来,列出的 url 方案的数量限制为 50。
我尝试过的
有 50 个条目的限制,当我查询第 51 个 url 方案时,我收到一条错误消息 “此应用程序不允许查询方案”,正如预期的那样。但是,有一些自定义应用程序(例如 Photowidget)具有巨大(远超过 50 个)
LSApplicationQueriesSchemes
列表,它们显然有办法检测应用程序是否已安装。
问题
有没有办法摆脱这个限制,或者有其他方法来检测当前设备上是否安装了应用程序?
似乎在 iOS 16 上无法检查超过 50 个第三方应用程序的安装状态。
我的假设“一定有办法绕过 50 个应用程序的限制,因为有一些应用程序(如 Photowidget)可以以某种方式做到这一点”是错误的,但事实并非如此。 为了确认这一点,我尝试了 Photowidget:我安装了一些应用程序,这些应用程序位于此列表中的第 50 个条目之前和之后。理应如此,应用程序 #2、#49 被标记为已安装,而应用程序 #56、#59、#61 则未标记为已安装。