具有相同URL方案的多个应用程序 - iOS

Alb*_*haw 41 xcode url-scheme ios

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

rma*_*ddy 35

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

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

您最好的解决方案是确保您的自定义URL方案不是微不足道的,因此其他应用程序几乎没有机会拥有相同的方案.

  • Apple应该让开发人员在线创建URL方案,并且如果已经采取了某些措施,请提前告诉他们. (18认同)
  • 但是,恶意开发人员可以防止这种情况呢?例如,如果我将我的URL方案设置为"Facebook://"或者他们使用的任何内容...也许每当有人点击时我的应用程序就会启动并且用户看到一两个广告并且我得到了钱:o(我不会'当然这样做,但那里有一些可怜的人可能)呃 (7认同)
  • 我有同样的疑虑,偶然发现了这个话题.@AmoghTalpallikar - 如果Apple提供了一个URL注册框架,人们只会注册大量的URL方案,而且它们会被闲置.也许应该有一种方式,URL方案以某种方式与应用程序的配置文件链接,或者推送通知的工作方式与开发人员/ Ad-hoc配置文件等链接.但是,无论当前设置的是什么系统,显然它不安全,正如这篇文章的提问者正确指出的那样. (4认同)
  • 请注意,删除处理URL的应用程序的错误在(至少)iOS8中是固定的 (3认同)

小智 8

来自de Apple docs:

实现自定义URL方案

我对你的其余问题没有答案(至少在这个时候).

编辑:

根据苹果文档:

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

(哦对不起rmaddy,直到之后才看到你的回答:P)


Bos*_*osh 6

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

  • 我糊涂了.您似乎在说多个应用程序不能使用相同的URL方案,但随后您添加了"注释",表示它们可以且未定义,这是2012年的答案所说的. (8认同)
  • @Bosh我不明白你的评论如何澄清你的答案.你的"注册时间"是什么意思?到目前为止,我的答案中没有任何内容与2012年有任何不同. (4认同)
  • 让我澄清一下:2012 年,Apple 将允许多个应用程序使用同一方案注册,并且未定义将启动哪个应用程序的运行时行为。现在,苹果似乎是在注册时而不是运行时做出决定,这意味着运行时的行为将得到很好的定义,对于给定的方案只有一个可能的应用程序。 (2认同)
  • @Bosh我认为你误解了文档。“如果多个第三方应用程序注册处理相同的 URL 方案” --> 这意味着 2 个应用程序可以注册相同的方案,这意味着您的答案是错误的 (2认同)
  • @Vincent 我认为你是对的,现在文档似乎说明了它最初在 2012 年所说的内容(不确定它是否曾经更改过),看起来两个应用程序在 URL 方案中仍然存在冲突问题。我用谷歌搜索了波什回答中的斜体引用,除了这篇文章和这篇文章的存档站点外,没有找到带有这些词的 URL。 (2认同)