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

Jon*_*han 73 xcode uiapplication ios

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

Dav*_*ham 130

我试试

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
Run Code Online (Sandbox Code Playgroud)

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

  • 这是有效的,虽然常量不存在.猜猜是@"CFBundleDisplayName".我不想硬编码应用程序名称,因为我写的代码可能会在其他应用程序中使用. (5认同)
  • 不是CFBundleDisplayName而是CFBundleName.不要被欺骗 (4认同)

Mob*_*Dan 24

斯威夫特3和4

Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? ""
Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""
Run Code Online (Sandbox Code Playgroud)


Swift 2.2

NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName")
NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleDisplayName")
Run Code Online (Sandbox Code Playgroud)


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

以下内容来自Apple关于Core Foundation Keys的文档

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

CFBundleDisplayName,"Bundle display name",用户可见的包名称; 由Siri使用,在iOS的主屏幕上可见.有关详细信息,请参阅CFBundleDisplayName.(必需,可本地化)


小智 19

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"];
Run Code Online (Sandbox Code Playgroud)


Fra*_*nck 14

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

- (NSString*)project_getAppName {
    return NSBundle.mainBundle.infoDictionary[@"CFBundleDisplayName"];
}
Run Code Online (Sandbox Code Playgroud)


小智 8

对于Xamarin.iOS使用:

return ((NSString)NSBundle.MainBundle.InfoDictionary["CFBundleName"]).ToString();
Run Code Online (Sandbox Code Playgroud)


Rom*_*kin 6

#include <stdlib.h>

// work for iOS and MacOSX and ~23 times faster than get name from bundle
NSString *app = [NSString stringWithUTF8String:getprogname()];
Run Code Online (Sandbox Code Playgroud)


mpa*_*zer 6

斯威夫特 3、4 和 5

let appName = Bundle.main.infoDictionary?["CFBundleName"] as? String
Run Code Online (Sandbox Code Playgroud)


Jes*_*ess 5

迅捷3/4

let appName =  Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String
Run Code Online (Sandbox Code Playgroud)