iOS如何处理URL方案重复?

10
如果有其他两个应用程序注册相同的URL方案,iOS会如何处理?

@Manni 请看这里:http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/StandardBehaviors/StandardBehaviors.html%23//apple_ref/doc/uid/TP40007072-CH4-SW26 - eonil
4个回答

13

iOS文档中提到:

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

如果有两个应用程序注册同一URL方案,则操作系统的行为是未定义的,因此您应尽量定义一个特定于您的应用程序的处理程序,以避免出现此情况(例如使用awesomeMapsApp://而不是maps://)。


2

实际上,这可能会带来很多问题。例如,在2016年3月之前,一个名为Grabb的应用程序处理PayPal方案,因此如果您的应用程序尝试打开PayPal(在调用中包含所有安全nonce等),它将启动Grabb,而您无能为力。即使在iOS 9中添加了openURL alertView,仍然可能存在严重的安全问题。


1
这是我所测试的情况:
iOS 5:将选择第一个安装的应用。如果你删除了第一个安装的应用,其他应用程序就无法运行,除非你重新安装。
iOS 6:选择最新安装的应用程序。如果你删除了最近安装的应用程序,则会选择以前安装的应用程序。

iOS 7 有任何更新吗?我做了一些搜索,认为行为仍然未定义 :/ - Hlung

0

它将呈现一个UIActionSheet视图,允许用户选择要启动哪个应用程序(好的示例是处理.doc文件的应用程序)。这就是您指定的图标使用的地方-在向用户显示操作表按钮时。


4
我在一台iOS版本为5.0的iPod Touch上尝试了两个具有相同URL Scheme和标识符的应用程序,但并没有出现UIActionSheet,只会启动我先安装的那个应用程序。是否还有其他影响这种行为的因素? - hago
3
@Nick 我不认为那是真的。 - pre
1
不是的,你在谈论文件类型。OP 在谈论 URL 方案。并没有定义启动哪个应用程序。据我所知。 - Artur Hellmann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接