gpt4 book ai didi

ios - CFBundleURLName 必须匹配 CFBundleIdentifier 吗?

转载 作者:可可西里 更新时间:2023-11-01 04:23:53 32 4
gpt4 key购买 nike

如果我希望 iOS App App1 在设备上启动 App2,那么 CFBundleURLName 是否需要与 Info.plist 中的 CFBundleURLTypes 中的 CFBundleIdentifier 相匹配?

例如,如果我在 App1 中有

<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>

在上述情况下,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>

即 CFBundleURLName != CFBundleIdentifier,然后 App2 无法再在 App1 中启动“fooscheme:”url。

有什么想法吗?

我没有看到 CFBundleIdentifier 必须与 CFBundleURLName 匹配的任何 Apple 文档,但实际上这似乎是这种情况。还是我遗漏了什么?

谢谢!

最佳答案

不,这两个属性不需要匹配,我没有像你那样遇到问题,我有我的应用程序标识符 - CFBundleIdentifier - 设置为 com.djp。 myapp 和 url 方案设置 CFBundleURLName 设置为 nothing.like.the.identifierCFBundleURLSchemes 设置为 abcd.

我可以通过调用打开这个应用:abcd://

我认为可能会给您带来问题的一件事是,如果您在设置 url 方案的情况下运行您的应用程序,并且在测试期间您更改了您的包标识符 (CFBundleIdentifier),因此实际上导致系统中存在2个应用程序。在这种情况下,您会遇到 url scheme 冲突,Apple 声明没有任何流程来确定哪个应用优先。

Note: If more than one third-party app registers to handle the same URL scheme, there is currently no process for determining which app will be given that scheme.

此外,据我测试和体验,如果您有 2 个冲突的应用程序,它似乎是第一个安装的应用程序,当这个应用程序被删除时,第二个应用程序现在是唯一支持特定的 url 方案仍未使用。

这表明 url 方案在安装时已在系统中注册,并且需要重新安装此应用才能使其按预期在这些方案上运行。

有关 URL 方案的更多信息,请查看 Apple Advances App Tricks文档。

关于ios - CFBundleURLName 必须匹配 CFBundleIdentifier 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13040175/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com