如果主屏幕图标下的应用程序名称是“ My Awesome App”,那么在运行时如何在应用程序中获得这个字符串?
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()];
Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? "" Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""
NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName") NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleDisplayName")
以下内容来自苹果公司的文档 核心基础钥匙
CFBundleName ,“ Bundle name”,Bundle 的简称; 不希望用户看到。详情请参阅 CFBundleName。(推荐,本地化)
CFBundleDisplayName ,“ Bundle display name”,用户可见的捆绑包名称; Siri 使用,在 iOS 的主屏幕上可见。详情请参阅 CFBundleDisplayName。(必需的,可本地化的)
let appName = Bundle.main.infoDictionary?["CFBundleName"] as? String
斯威夫特3/4
let appName = Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String
注意 :
如果你在你的应用程序中使用 localizations,你应该使用吹出的代码来得到真正的本地化显示名称:
localizations
而不是 :
Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String