web-dev-qa-db-fra.com

Comment obtenir le nom de l'application en cours d'exécution sur iOS

Si le nom de l'application sous l'icône sur l'écran d'accueil est "My Awesome App", comment obtenez-vous cette chaîne dans l'application au moment de l'exécution?

72
Jonathan

J'essaierais

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

bien que vous connaissiez probablement le nom de votre propre application et que vous puissiez simplement l'utiliser ...

130
David Dunham

Swift 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")


En savoir plus sur "CFBundleName" et "CFBundleDisplayName"

Ce qui suit est de la documentation d'Apple sur les clés de base de base

CFBundleName , "Bundle name", Le nom court du bundle; pas destiné à être vu par l'utilisateur. Voir CFBundleName pour plus de détails. (Recommandé, localisable)

CFBundleDisplayName , "Bundle display name", Le nom visible par l'utilisateur du bundle; utilisé par Siri et visible sur l'écran d'accueil dans iOS. Voir CFBundleDisplayName pour plus de détails. (Obligatoire, localisable)

21
Mobile Dan
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"];
19
user4297313

Tout simplement parce que j'aime la nouvelle façon Xcode 4.5 d'obtenir un élément de tableau. :)

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

Pour l'utilisation de Xamarin.iOS:

return ((NSString)NSBundle.MainBundle.InfoDictionary["CFBundleName"]).ToString();
7
Kraig McConaghy
#include <stdlib.h>

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

Swift 3/4

let appName =  Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String
5
Jess
NSString* applicationName = [entry objectForKey:(id)kCGWindowOwnerName];

Voici un bon article avec des exemples de ce que vous recherchez. Le PO n'a rien accepté, ce qui est regrettable, mais les réponses sont utiles.

3
Billy Coover

Swift

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

Attention:

Si vous localisez le nom de votre application dans une langue différente, vous devez utiliser le code de coup pour obtenir le vrai nom d'affichage localisé:

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

plus éloigné que le coup:

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