如果主屏幕上图标下的应用程序名称是“我的真棒应用”,则如何在运行时在应用程序中获取该字符串?

有帮助吗?

解决方案

我会尝试的

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"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”的更多信息

以下来自 苹果关于核心基础键的文档

cfbundlename, ,“捆绑名称”,捆绑包的简短名称;用户不打算看到。看 cfbundlename 有关详细信息。 (建议,本地化)

cfbundledisplayname, ,“捆绑显示名称”,捆绑包的用户可见名称;由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()];

Swift 3/4

let appName =  Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String
NSString* applicationName = [entry objectForKey:(id)kCGWindowOwnerName];

这是一个很好的帖子 带有您要寻找的示例。 OP不接受任何东西,这是不幸的,但是答案很有用。

Swift 3

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

注意力:

如果您以不同的语言本地本地使用应用程序名称,则应使用打击代码获取真实的本地化显示名称:

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

打击:

Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top