如果主屏幕图标下的应用程序名称为“我的超棒应用程序”,如何在运行时在应用程序中获取该字符串?
我会尝试
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
虽然你应该知道你自己应用程序的名称并可以直接使用它...
Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? ""
Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""
NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName")
NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleDisplayName")
下面内容摘自 苹果公司的 Core Foundation Keys 文档
CFBundleName,“Bundle 名称”,bundle 的简短名称,不打算让用户看到。有关详细信息,请参见CFBundleName(推荐使用,可本地化)。
CFBundleDisplayName,“Bundle 显示名称”,bundle 的用户可见名称;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()];
let appName = Bundle.main.infoDictionary?["CFBundleName"] as? String
Swift 3/4
let appName = Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String
NSString* applicationName = [entry objectForKey:(id)kCGWindowOwnerName];
注意:
如果您在应用程序中进行本地化,您应该使用以下代码来获取真正的本地化显示名称:
Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? ""
Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""
而不是:
Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String
Info.plist
文件中添加了Bundle display name
属性后,这对我起作用了。 - pasql