52

因此,对于我的新应用程序,我有一个 URL 方案,以便人们可以从另一个应用程序或网站启动我的应用程序......“myapp://”......那么如果 AppStore 中有另一个应用程序会发生什么与我的 URL 方案相同吗?或者如果有人试图窃取我的 URL Scheme?

4

4 回答 4

45

如果两个应用程序注册了相同的自定义 URL 方案,则未定义实际启动哪个应用程序。一个将推出,但没有办法知道。

这是一个真正的踢球者。如果您的设备上有两个具有相同 URL 方案的应用程序,并且您删除了实际启动的应用程序,则在不重新启动 iOS 设备的情况下,另一个应用程序将不会通过 URL 启动。

您最好的解决方案是确保您的自定义 URL 方案不是微不足道的,因此其他应用程序具有相同方案的可能性很小。

于 2012-10-29T22:18:04.757 回答
12

根据苹果文档:

如果多个第三方应用程序注册以处理相同的 URL 方案,则未定义选择哪个应用程序来处理该类型的 URL。

连续 8 年来自 Apple 文档的准确引用:

注意:如果多个第三方应用程序注册处理相同的 URL 方案,目前没有确定哪个应用程序将获得该方案的过程。

资料来源:

截至 2019 年 9 月,这部分文档已从 Apple 网站上删除。最接近的相关文档现在可能是Register Your URL Scheme

于 2012-10-29T22:17:53.810 回答
5

2016 年更新

自 2012 年以来,Apple 的政策发生了变化。今天他们表示将不允许多个应用程序注册同一个方案。注册时间是解决争用比运行时更干净的地方,因为它避免了其他答案讨论的安全问题。

注意:如果多个第三方应用程序注册处理相同的 URL 方案,目前没有确定哪个应用程序将获得该方案的过程。

来源:https ://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1

于 2016-02-28T10:17:59.470 回答
1

正如该线程中的其他答案所涵盖的那样,将多个应用程序注册为能够处理特定的自定义 URL 方案是完全可以接受的,并且如果设备上安装了 2 个以上能够处理特定自定义 URL 的应用程序scheme,未定义系统将在运行时选择哪个应用程序。

如果对于您的特定用例很重要,您的应用程序(并且只有您的应用程序)在设备上注册为能够处理特定 URL,那么首选通用链接而不是自定义 URL 方案。通用链接是标准的 HTTP 或 HTTPS 链接,粗略的想法是,在安装您的应用程序时,系统会检查存储在您的 Web 服务器上的文件,以验证您的网站是否允许您的应用程序代表它打开 URL。如果打开此类 URL 时您的应用程序未安装在设备上,系统会在 Safari 中正常打开该 URL,让您的网站处理它。

有关通用链接和自定义 URL 方案的更多信息,请参阅允许应用程序和网站链接到您的内容文档页面。

于 2020-10-02T15:20:17.277 回答