它指向官方文档,其中说:
CFBundleName
CFBundleName (字符串 - iOS,OS X)标识的短名称 束。该名称长度应小于16个字符 适合在菜单栏和应用程序的信息窗口中显示。您 可以在适当的InfoPlist.strings文件中包含此密钥 .lproj子目录为其提供本地化值。如果你 本地化此密钥,您还应该包括密钥 “CFBundleDisplayName。”
有谁能说出如何在iOS中显示此名称?
我无法在iPhone中显示此值。
答案 0 :(得分:17)
在iOS上,我并不认为CFBundleName
向用户显示任何地方。我相信我已经看过Mac OS X的文档(很明显iOS继承了很多遗留基础设施),它说Bundle Name 用于其他东西...我认为它可能有是上方菜单栏中的名称,或下部Dock栏中的名称。当然,iOS中都不存在任何东西。
我还发现了this Stack Overflow answer,现在已经很老了(但有很多赞成票)。这个答案声称CFBundleName将是应用程序存储在其中的文件夹的名称。例如,CFBundleName = HelloWorld
应生成
+- HelloWorld.app
- HelloWorldApplication
如果可执行文件名称设置为HelloWorldApplication
。但是,我刚刚构建了一个简单的程序并在iOS 5.0上运行,而.app文件夹的不命名等于CFBundleName
。所以,如果永远以这种方式工作,它似乎就不再存在了。
我看过很多引用说明{X}应该将CFBundleName
设置为${PRODUCT_NAME}
,这就是我一直以来所做的。不是技术限制,但作为Apple审核标准,我也看到有人声称CFBundleDisplayName
必须与CFBundleName
密切相关 。例如,如果它是CFBundleName
的缩短版本,则可以,但如果它完全不相关,则可能会拒绝该应用。
我还检查了 Settings.app 中的商家信息,在iTunes中,我没有看到其中任何一个地方的包名称。
所以,为了回答你的问题,我不相信用户可以看到这个变量(在iOS上)。
更新:我不,但是,检查任何辅助功能是否可以在任何地方说出这个名称。
此外,this SO answer声称CFBundleName
将是您的应用的iTunes App Store网址中使用的名称。但是,请参阅下面的@ tc。的评论/示例网址
更新2 :根据以下@ honus的评论,向用户显示CFBundleName
可以的一个异常方案是您的应用在其Info.plist文件中的CFBundleDisplayName
条目中包含否条目。在这种情况下,CFBundleName
将显示在SpringBoard中的应用程序图标下。
答案 1 :(得分:0)
您可以像这样访问这些密钥。
[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"]
infoDicitonary
为A dictionary, constructed from the bundle's Info.plist file
的位置。在那里,您可以找到有关您的应用程序的此类信息。 NSBundle
注意:您可以打开App-info.plist
文件并右键单击任意位置然后选择Show Raw Keys/Values
选项来检查实际密钥。
答案 2 :(得分:0)
当Mac OS Cocoa应用程序本地化时,在Mac OS MenuBar中使用CFBundleName作为应用程序名称(从文件菜单中)。 所以它肯定有意义。 不知道,如果它被使用并显示在其他地方。但最好不要在本地化您的应用时将其遗漏!
答案 3 :(得分:0)
在macOS上,它用于确定是否应在Finder中本地化应用程序的名称。如果捆绑包的实际名称(当然由'.app'扩展)匹配CFBundleName
,则Finder将改为显示其本地化的显示名称。但是,用户可能会将App重命名为他认为更合适的名称,在这种情况下,macOS需要一种方法来告知名称是否已自定义。
答案 4 :(得分:0)
它没有详细记录,但 CFBundleName
在 ASWebAuthenticationSession 显示的权限对话框中显示给用户。
答案 5 :(得分:-1)
如果您通过上下文在项目树中单击它并选择“打开为>源代码”打开info.plist文件,您将看到plist的XML表示。默认情况下,这两个键具有相同的值,因此您可以访问其中任何一个。
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
要实际获取值,您可以将此SO帖子用作指南:How to display the current project version of my App to the user?只需将CFBundleVersion
键替换为CFBundleDisplayName
。
本质上:
NSString *displayName = [[[NSBundle mainBundle] infoDictionary]
valueForKey:@"CFBundleDisplayName"];
答案 6 :(得分:-4)
Bundle name是文件系统上实际应用程序包的名称。
捆绑显示名称是用户将在其iOS设备或OSX上的图标标题上看到的应用程序图标的标题。