iOS 16+ 查询 URL 方案

iOS 16+ Querying URL schemes

提问人:FunnyHorse 提问时间:11/7/2023 更新时间:11/11/2023 访问量:123

问:

我为 iOS 16 制作了一个应用程序来自定义主屏幕图标,并寻找一种方法来确定设备上是否安装了第 3 方应用程序。

有一个函数可以做到这一点 - 方法 canOpenURL(_:)。您需要传递要检查的应用程序的 url 方案,如果它返回 ,则表示该应用程序已安装在设备上。UIApplicationcanOpenURL(_:)true

正如文档所述,所有查询的 url 方案都必须列在 key 下的文件中。此外,文档警告您,自 iOS 15 以来,列出的 url 方案数量限制为 50 个。Info.plistLSApplicationQueriesSchemes

我试过了什么

有 50 个条目的限制,当我查询 51-st url 方案时,我收到一条错误消息“不允许此应用查询方案”,正如预期的那样。但是,有一些自定义应用程序(如Photowidget)具有庞大(远远超过50个)列表,显然有一种方法可以检测是否安装了应用程序。LSApplicationQueriesSchemes

问题

有没有办法逃避此限制,或者是否有其他方法可以检测当前设备上是否安装了应用程序?

iOS Swift URL 方案

评论

2赞 Sweeper 11/7/2023
你怎么知道 Photowidget 有一个庞大的列表?LSApplicationQueriesSchemes
1赞 Larme 11/7/2023
您可以在 Silicon Mac 上下载该应用程序(因为该应用程序是允许的),然后打开以查看长(有 164 个条目)。/Applications/Photowidget.app/Wrapper/Photowidget.app/Info.plistLSApplicationQueriesSchemes
1赞 Cristik 11/8/2023
您确定以位置 51 开头的条目适用于 Photowidget 吗?也许他们的开发人员只是没有注意到这些条目不起作用,他们不断添加到列表中。
0赞 FunnyHorse 11/8/2023
@Cristik,看来你是对的。我已经安装了一些应用程序,这些应用程序在Photowidget列表中的第50个条目之前和之后定位。而且,应用程序 #2、#49 被标记为已安装,而应用程序 #56、#59、#61 没有被标记为已安装。

答:

0赞 FunnyHorse 11/8/2023 #1

似乎在 iOS 16 上无法检查超过 50 个第 3 方应用程序的安装状态。

我的假设“必须有一种方法可以绕过 50 个应用程序的限制,因为有一些应用程序(如 Photowidget)以某种方式做到这一点”是错误的,他们不是。 为了确认这一点,我尝试了 Photowidget:我已经安装了一些应用程序,这些应用程序在此列表中的第 50 个条目之前和之后定位。应该如此,应用程序 #2、#49 被标记为已安装,而应用程序 #56、#59、#61 没有。

评论

1赞 FunnyHorse 11/11/2023
@Cristik,感谢您指出这一点