Как получить имя запущенного приложения в iOS

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

Ответ 1

Id try

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

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

Ответ 2

Свифт 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 для деталей. (Обязательный, Локализуемый)

Ответ 3

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

Ответ 4

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

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

Ответ 5

Для использования Xamarin.iOS:

return ((NSString)NSBundle.MainBundle.InfoDictionary["CFBundleName"]).ToString();

Ответ 6

#include <stdlib.h>

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

Ответ 7

Swift 3/4

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

Ответ 8

NSString* applicationName = [entry objectForKey:(id)kCGWindowOwnerName];

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

Ответ 9

Swift 3

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

Ответ 10

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

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

Не следующее:

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