为什么我们需要“URL Identifier”(CFBundleURLName)plist字段才能在iOS上使用自定义URL方案?

时间:2015-08-11 03:54:22

标签: ios url-scheme

当我在设备上点击此网页链接时,我正在使用自定义网址方案打开我的iOS应用:Demo77://someurl

要进行设置,我将 Demo77 作为项目添加到Info.plist中的 URL Schemes (CFBundleURLSchemes)数组中。

Apple documentation说我还需要在Info.plist中加入网址标识符(CFBundleURLName)字符串密钥。此密钥包含“URL方案的抽象名称”。

包含网址标识键,链接仍然打开了我的应用。一切都没有URL标识符。

问题:我是否真的需要在plist中包含 URL标识符键?如果是这样 - 为什么?

enter image description here

更新

此问题与URL identifier and URL scheme不同,后者会询问“URL Identifier”键的用途。我不是在问它用于什么。我问我们是否需要使用“URL Identifier”?没有它我的应用程序中的URL方案工作得很好。请注意,URL identifier and URL scheme问题的答案根本不能解决我的问题。对不起,如果我的初步问题不够明确。

3 个答案:

答案 0 :(得分:1)

根据apple docs

与您的方案一起提供的 标识符 将您的应用与声明支持该方案的其他应用区分开

尽管使用反向DNS字符串是最佳做法,但它不会阻止其他应用程序注册相同的方案并处理关联的链接。使用通用链接而不是自定义URL方案来定义与您的网站唯一关联的链接。

因此要回答您的问题,添加url标识符并不会发生太大变化,但最好将其包括进来,因为它是由Apple指定的。

答案 1 :(得分:-1)

如果您安装了2个具有相同URL方案的应用程序,如:

yourscheme://

然后你有2个冲突的应用程序。

系统将如何决定打开哪个应用程序?

根据Inter-App Communication文档

  

如果多个第三方应用注册处理相同的网址   方案,目前没有确定哪个应用程序的流程   给予该计划

请检查遇到问题的用户的this个答案:

  

另据我测试和经验,如果你有2个冲突   应用程序,它似乎是第一个安装使用的,以及何时使用   这个应用程序被删除第二个应用程序,现在是唯一的应用程序   支持特定的URL方案仍未使用

希望它有所帮助。

答案 2 :(得分:-3)

URL标识符是反向域地址,应与您的Bundle Identifier相同,例如com.companyname.appname

URL Schemes是URL的开头,例如'appname'。当您将其称为URL时,它会以启动应用程序的包标识符为目标。

参考:URL Identifier and URL Schemes