从这个老问题: 在cocoa应用程序的信息plist中,“bundle display name”和“bundle name”之间有什么区别
它指向官方文档,其中说:
CFBundleName
CFBundleName (String - iOS,OS X)标识的短名称
束。该名称长度应小于16个字符
适合在菜单栏和应用程序的信息窗口中显示。您
可以在适当的InfoPlist.strings文件中包含此密钥
.lproj子目录为其提供本地化值。如果你
本地化此密钥,您还应该包括密钥
“CFBundleDisplayName。”
任何人都可以告诉如何在iOS中显示此名称?
我从来没有能够在我的iPhone中显示这个值。
它看起来不像我 CFBundleName
节目 随地 iOS上的用户我相信我已经看过Mac OS X的文档(显然iOS继承了很多遗留基础设施),它说的是Bundle Name 是 用于其他东西...我认为它可能是上方菜单栏或下方Dock栏中的名称。当然,iOS中都不存在任何东西。
我也找到了 这个Stack Overflow回答,现在已经很老了(但有很多赞成票)。这个答案声称CFBundleName将是应用程序存储在其中的文件夹的名称。例如, CFBundleName = HelloWorld
应该产生
+- HelloWorld.app
- HelloWorldApplication
如果 可执行名称 被设定为 HelloWorldApplication
。但是,我刚刚构建了一个简单的程序并在iOS 5.0上运行它,并且.app文件夹是 不 命名等于 CFBundleName
。所以,如果它 曾经 以这种方式工作,它似乎不再存在。
我见过很多参考文献 CFBundleName
应保持设置为 ${PRODUCT_NAME}
在Xcode中,这是我一直以来所做的。不是一个 技术 限制,但作为Apple审查标准,我也看到人们声称 CFBundleDisplayName
必须密切关注 有关 至 CFBundleName
。例如,如果它是缩短版本,那就没关系 CFBundleName
,但如果它完全不相关,他们可能会拒绝该应用程序。
我还检查了列表 Settings.app,在iTunes中,我没有看到 捆绑名称 其中任何一个地方。
所以,为了回答你的问题,我不相信用户可以看到这个变量(在iOS上)。
更新: 我有 不但是,检查是否有任何辅助功能 说话 这个名字在哪里。
也, 这个答案 声称 CFBundleName
将是您的应用程序的iTunes App Store URL中使用的名称。但是,请参阅下面的@ tc。的评论/示例网址...
更新2:per @ honus的评论如下,一 异常 情景在哪里 CFBundleName
能够 如果您的应用有,则向用户显示 没有 进入 CFBundleDisplayName
在Info.plist文件中。在这种情况下, CFBundleName
将显示在SpringBoard中的应用程序图标下。
您可以像这样访问这些密钥。
[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"]
哪里 infoDicitonary
是 A dictionary, constructed from the bundle's Info.plist file
。在那里,您可以找到有关您的应用程序的此类信息。 一个NSBundle
注意:您可以通过打开来检查实际密钥 App-info.plist
文件并右键单击任意位置,然后选择该选项 Show Raw Keys/Values
。
在本地化MacOS Cocoa应用程序时,使用CFBundleName作为应用程序名称在Mac OS MenuBar中(从文件菜单中)。
所以它绝对有意义。
不知道,如果它被使用并显示在其他地方。但最好不要在本地化您的应用时将其遗漏!
如果您通过上下文在项目树中单击它并选择“打开为>源代码”打开info.plist文件,您将看到plist的XML表示。默认情况下,这两个键具有相同的值,因此您可以访问其中任何一个。
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
要实际获取值,您可以使用此SO帖子作为指导: 如何向用户显示我的应用程序的当前项目版本? 只需更换 CFBundleVersion
关键 CFBundleDisplayName
。
在本质上:
NSString *displayName = [[[NSBundle mainBundle] infoDictionary]
valueForKey:@"CFBundleDisplayName"];
Bundle name是文件系统上实际应用程序包的名称。
捆绑显示名称是用户将在其iOS设备上或OSX上的图标标题上看到的应用程序图标的标题。