如果主屏幕上图标下的应用程序名称是“My Awesome App”,那么如何在运行时在应用程序中获取该字符串?
我试试
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
虽然大概你知道你自己的应用程序名称,但可以使用它...
注意:
如果您使用其他语言本地化您的应用名称,则应使用强制代码获取真正的本地化显示名称:
Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? ""
Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""
而不是打击:
Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String
Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? ""
Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""
NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName")
NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleDisplayName")
以下是来自Apple's documentation on Core Foundation Keys
CFBundleName,“Bundle name”,捆绑包的简称;不打算被用户看到。有关详细信息,请参阅CFBundleName。 (推荐,可本地化)
CFBundleDisplayName,“Bundle display name”,用户可见的包名称;由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()];
斯威夫特3/4
let appName = Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String
NSString* applicationName = [entry objectForKey:(id)kCGWindowOwnerName];
Here is a good post以及您正在寻找的例子。 OP不接受任何事情,这是不幸的,但答案很有用。
let appName = Bundle.main.infoDictionary?["CFBundleName"] as? String