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

如果主屏幕图标下的应用程序名称是“ My Awesome App”,那么在运行时如何在应用程序中获得这个字符串?

50842 次浏览
NSString* applicationName = [entry objectForKey:(id)kCGWindowOwnerName];

这里有一篇很好的文章 ,里面有你正在寻找的例子。OP 没有接受任何东西,这很不幸,但是答案是有用的。

我会试试

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

尽管你可能知道自己的应用程序的名字,并且可以直接使用它..。

仅仅因为我喜欢 Xcode 4.5获取数组项的新方法. :)

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

使用 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()];

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 」的资料

以下内容来自苹果公司的文档 核心基础钥匙

CFBundleName ,“ Bundle name”,Bundle 的简称; 不希望用户看到。详情请参阅 CFBundleName。(推荐,本地化)

CFBundleDisplayName ,“ Bundle display name”,用户可见的捆绑包名称; Siri 使用,在 iOS 的主屏幕上可见。详情请参阅 CFBundleDisplayName。(必需的,可本地化的)

Swift 3,4,& 5

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

斯威夫特3/4

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

注意 :

如果你在你的应用程序中使用 localizations,你应该使用吹出的代码来得到真正的本地化显示名称:

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

而不是 :

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