Ответ 1
Id try
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
хотя предположительно вы знаете свое собственное имя приложения и можете просто использовать его...
Если имя приложения под значком на главном экране является "My Awesome App", как вы получите эту строку в приложении во время выполнения?
Id try
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
хотя предположительно вы знаете свое собственное имя приложения и можете просто использовать его...
Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? ""
Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""
NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName")
NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleDisplayName")
Ниже приведена документация Apple о базовых ключах ядра.
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];
Вот хороший пост с примерами того, что вы ищете. ОП не принимал ничего, что прискорбно, но ответы полезны.
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