Якщо ім'я програми під піктограмою на головному екрані "My Awesome App", як отримати цей рядок у програмі під час виконання?
Відповіді:
Я б спробував
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
хоча, мабуть, ви знаєте назву власного додатка і можете просто використовувати його ...
Bundle display name
властивість у свій Info.plist
файл.
Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? ""
Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""
NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName")
NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleDisplayName")
Далі йдеться з документації Apple щодо Core Foundation Keys
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()];
NSString* applicationName = [entry objectForKey:(id)kCGWindowOwnerName];
Ось хороший допис із прикладами того, що ви шукаєте. ОП нічого не прийняв, що шкода, але відповіді корисні.
Увага :
Якщо ви робите це localizations
у своєму додатку, вам слід скористатись продутим кодом, щоб отримати справжнє локалізоване відображуване ім'я:
Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? ""
Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""
а не :
Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String