多个应用程序具有相同的自定义URL应用程序的URL标识符?

sen*_*thu 9 iphone iphone-sdk-3.0 ipad ios4

我在我的应用程序中使用自定义URL方案从另一个应用程序(可能是我自己的)打开它.假设我在App Store中有多个应用程序可能有我使用的URL标识符.如果用户有两个具有相同URL方案的应用程序,那么会开吗?自定义URL应用程序是否会被苹果批准?

tas*_*oor 15

Apple接受自定义URL应用程序.但是,如果设备上的多个应用程序已注册相同的URL方案,则行为未定义.从iOS应用程序编程指南,"如果多个第三方应用程序注册处理相同的URL方案,则未定义选择哪个应用程序来处理该类型的URL."

  • @ eggie5,Apple明确表示行为未定义.所以你无法确切知道会发生什么. (4认同)
  • @tasknoor我认为"明确陈述"而苹果说"未定义"则是一种矛盾.发生了什么?它会引发错误吗?手机是否关机,股市是否会崩溃? (4认同)
  • 我认为undefined意味着你不知道将运行哪个应用程序.如果多个应用具有相同的网址,则会选择其中一个.哪一个?我无法分辨,因为Apple没有指定他们的算法,我没有为Apple工作,因此我没有看到代码. (3认同)

Jos*_*nce 10

简短回答:注册URL的第一个应用程序有时会打开,但无法经常打开.其他时候注册的第二个应用程序将打开但经常失败.基本上它失败很多,真的是"未定义".使用http://handleopenurl.com/来避免.

答案很长:

我创建了两个应用程序,FirstApp和SecondApp,并testURL为两者注册了相同的URL .

我加载了FirstApp,URL按预期工作,打开了应用程序.

然后我加载了SecondApp并且开始发生可怕的未定义行为.目前,在iOS 7下,如果两个应用程序具有相同的自定义URL注册,则会弹出模式询问

在"First App的名称"中打开此页面?

当您点击打开选项时,它会失败,并且没有任何反应.如果您再次点击或输入链接,则使用该URL安装的第一个应用程序(在我们的案例中为FirstApp)将启动.

实际上,第二个注册的应用程序永远不会被打开,第一个应用程序每两个URL调用都会失败.没有理想的行为.

更糟糕的是我删除了两个应用程序,然后切换了我安装它们的顺序,结果不一致.有时它是一个应用程序,然后在重新加载两个应用程序时它是另一个.这种行为确实是"未定义的".

最佳做法是使用http://handleopenurl.com/查看已注册的URL,并选择一个不会与其他应用程序冲突的URL.您无法"窃取"其他网址,因为您无法确定您的应用是否会打开,而不是其他应用.


V.V*_*V.V -1

这可能是您正在寻找的答案

http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html

通过阅读本文,苹果可能会拒绝您的申请,但您仍然可以阅读苹果提供的指南。谢谢