Ios CbundleUrlName必须与CbundleIdentifier匹配吗?
如果我希望iOS应用程序App1在设备上启动App2,那么CFBundleURLName是否需要与Info.plist中CFBundleURLTypes中的CFBundleIdentifier匹配 例如,如果我在App1中有Ios CbundleUrlName必须与CbundleIdentifier匹配吗?,ios,iphone,ipad,Ios,Iphone,Ipad,如果我希望iOS应用程序App1在设备上启动App2,那么CFBundleURLName是否需要与Info.plist中CFBundleURLTypes中的CFBundleIdentifier匹配 例如,如果我在App1中有 <key>CFBundleIdentifier</key> <string>com.foo.App1</string> ... <key>CFBundleURLTypes</key> <array
<key>CFBundleIdentifier</key>
<string>com.foo.App1</string>
...
<key>CFBundleURLTypes</key>
<array>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fooscheme</string>
</array>
<key>CFBundleURLName</key>
<string>com.foo.App1</string>
</dict>
</array>
CbundleIdentifier
com.foo.App1
...
CbundleurlTypes
CbundleurlTypes
循环流化床锅炉方案
食物计划
CFBundleURLName
com.foo.App1
在上述情况下,App2可以在App1中启动“fooscheme:”URL。但是,如果我将App1的Info.plist更改为包含
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fooscheme</string>
</array>
<key>CFBundleURLName</key>
<string>com.foo.xyz</string>
</dict>
</array>
CbundleUrlTypes
循环流化床锅炉方案
食物计划
CFBundleURLName
com.foo.xyz
i、 例如,一个CFBundleURLName!=CbundleIdentifier,则App2无法再启动App1中的“fooscheme:”URL
你知道为什么吗
我没有看到CbundleIdentifier必须与CbundleUrlName匹配的任何苹果文档,但实际上似乎是这样。还是我遗漏了什么
谢谢 不,这两个属性不需要匹配,我没有像您一样对此有问题,我将我的应用程序标识符-
CbundleIdentifier
设置为com.djp.myapp,并将使用CbundleUrlName
设置的url方案设置为nothing.like.identifier和CbundleUrlSchemes
设置为abcd
我可以通过呼叫打开此应用程序:abcd://
我认为可能会给您带来问题的一件事是,如果您在运行应用程序时设置了url方案,并且在测试期间更改了捆绑包标识符(CbundleIdentifier
),从而实际导致系统中存在两个应用程序。
在这种情况下,您可能会遇到url方案冲突,苹果表示没有任何流程来确定哪个应用程序将优先
注意:如果有多个第三方应用程序注册以处理同一问题
URL方案,目前没有确定哪个应用程序的过程
将获得该计划
另外,根据我的测试和经验,如果你有两个相互冲突的应用程序,它似乎是第一个安装使用的应用程序,当这个应用程序被删除时,第二个应用程序(现在是唯一支持特定url方案的应用程序)仍然没有使用
这表明url方案在安装时已在系统中注册,需要重新安装此应用程序才能按预期在这些方案上运行
有关URL方案的更多信息,请查看该文档。我认为原因是您没有指定CbundleTypeRole键,该键指示您的应用程序是查看器、编辑器、shell或其他应用程序。 自定义URL方案中需要此密钥 注意:当您将应用程序设置为“无”时,osx将不会启动该应用程序 你可以从这里得到信息