Как узнать название запущенного приложения в iOS - PullRequest
71 голосов
/ 30 ноября 2011

Если имя приложения под значком на главном экране - «My Awesome App», как получить эту строку в приложении во время выполнения?

Ответы [ 10 ]

129 голосов
/ 30 ноября 2011

Я бы попробовал

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

хотя вы, вероятно, знаете имя своего приложения и можете просто использовать его ...

21 голосов
/ 02 сентября 2016

Свифт 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 , «Имя пакета», Краткое название пакета;не предназначен для просмотра пользователем.Подробнее см. CFBundleName .(Рекомендуется, локализуемо)

CFBundleDisplayName , «Отображаемое имя пакета», видимое пользователем имя пакета;используется Siri и отображается на главном экране в iOS.Подробности смотрите CFBundleDisplayName .(Обязательно, локализуемо)

19 голосов
/ 23 декабря 2014
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"];
14 голосов
/ 29 сентября 2012

Просто потому, что я люблю Xcode 4.5 новый способ получить элемент массива.:)

- (NSString*)project_getAppName {
    return NSBundle.mainBundle.infoDictionary[@"CFBundleDisplayName"];
}
7 голосов
/ 23 января 2015

Для Xamarin.iOS используйте:

return ((NSString)NSBundle.MainBundle.InfoDictionary["CFBundleName"]).ToString();
6 голосов
/ 10 февраля 2016
#include <stdlib.h>

// work for iOS and MacOSX and ~23 times faster than get name from bundle
NSString *app = [NSString stringWithUTF8String:getprogname()];
5 голосов
/ 07 июля 2017

Свифт 3/4

let appName =  Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String
3 голосов
/ 01 ноября 2016

Swift 3

let appName = Bundle.main.infoDictionary?["CFBundleName"] as? String
3 голосов
/ 30 ноября 2011
NSString* applicationName = [entry objectForKey:(id)kCGWindowOwnerName];

Вот хороший пост с примерами того, что вы ищете.ОП не принял ничего, что вызывает сожаление, но ответы полезны.

0 голосов
/ 28 апреля 2019

Внимание :

Если вы локализуете название своего приложения на другом языке, вы должны использовать код удара, чтобы получить настоящее локализованное отображаемое имя:

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

больше удар:

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