홈 화면의 아이콘 아래에있는 응용 프로그램 이름이 "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")
다음은 Core Foundation Keys에 대한 Apple의 문서에서 가져온 것입니다.
CFBundleName ,“Bundle name”, 번들의 짧은 이름. 사용자가 볼 수 없습니다. 자세한 내용은 CFBundleName 을 참조하십시오. (권장, 현지화 가능)
CFBundleDisplayName ,“Bundle display name”, 사용자가 볼 수있는 번들 이름. 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()];
주의 :
localizations
앱에서 a를 수행하는 경우 Blew 코드를 사용하여 실제 현지화 된 표시 이름을 가져와야합니다.
Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? ""
Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""
보다는 :
Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String