如何在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