如果主屏幕上图标下方的应用程序名称为“我的真棒应用程序”,您如何在运行时在应用程序中获取该字符串?
Answers:
我会尝试
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
尽管大概您知道自己的应用名称,但可以使用它…
Bundle display name
属性添加到Info.plist
文件中之后,这对我有用。
Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? ""
Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""
NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName")
NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleDisplayName")
以下摘自Apple关于Core Foundation Keys的文档
CFBundleName,“捆绑包名称”,捆绑包的简称;不应被用户看到。有关详细信息,请参见CFBundleName。(推荐,可本地化)
CFBundleDisplayName,“包显示名称”,包的用户可见名称;由Siri使用,并在iOS的主屏幕上可见。有关详细信息,请参见CFBundleDisplayName。(必需,可本地化)
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"];
只是因为我喜欢Xcode 4.5获得数组项的新方法。:)
- (NSString*)project_getAppName {
return NSBundle.mainBundle.infoDictionary[@"CFBundleDisplayName"];
}
对于Xamarin.iOS,请使用:
return ((NSString)NSBundle.MainBundle.InfoDictionary["CFBundleName"]).ToString();
#include <stdlib.h>
// work for iOS and MacOSX and ~23 times faster than get name from bundle
NSString *app = [NSString stringWithUTF8String:getprogname()];
注意事项:
如果您localizations
在应用中执行,则应使用blew代码获取真实的本地化显示名称:
Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? ""
Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""
而不是:
Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String