如何在iOS中获取正在运行的应用程序的名称

如果主屏幕上的图标下的应用程序名称是“My Awesome App”,那么在运行时如何在应用程序中获取该string?

我会尝试

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]; 

虽然大概你知道你自己的应用程序的名称,可以使用它…

 [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]; 

只是因为我喜欢Xcode 4.5获取数组项目的新方法。 🙂

 - (NSString*)project_getAppName { return NSBundle.mainBundle.infoDictionary[@"CFBundleDisplayName"]; } 

Swift 3&4

 Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? "" Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? "" 

Swift 2.2

 NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName") NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleDisplayName") 

关于'CFBundleName'和'CFBundleDisplayName'的更多信息

以下是来自Apple核心基础键上的文档

CFBundleName ,“Bundle name”,捆绑的简称; 不打算被用户看到。 有关详细信息,请参阅CFBundleName 。 (推荐,可本地化)

CFBundleDisplayName ,“捆绑显示名称”,捆绑的用户可见名称; 由Siri使用,并在iOS的主屏幕上可见。 有关详细信息,请参阅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()]; 
 NSString* applicationName = [entry objectForKey:(id)kCGWindowOwnerName]; 

这是一个很好的职位,并提供你正在寻找的例子。 OP没有接受任何东西,这是不幸的,但答案是有用的。

Swift 3/4

 let appName = Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String 

Swift 3

 let appName = Bundle.main.infoDictionary?["CFBundleName"] as? String