Obtenir un identifiant de bundle par programme

229

Comment puis-je obtenir une chaîne de l'identifiant de bundle par programme à partir de mon application?

user973984
la source

Réponses:

454

Objectif c

NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];

Swift 1.2

let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier

Swift 3.0

let bundleIdentifier = Bundle.main.bundleIdentifier

Xamarin.iOS

var bundleIdentifier = NSBundle.MainBundle.BundleIdentifier
peko
la source
10
Cette réponse n'est pas limitée à iOS. Cela fonctionne aussi pour les applications Mac.
Jonny
9
Dans Swift, utilisezlet bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
Tim Camber
1
(vous pouvez supprimer ce commentaire) mais j'aime le sentiment de lire la réponse puis dans le commentaire, voir quelque chose comme @Jonny s et Tim (bien que vous puissiez le voir dans une autre réponse entière), il renvoie à autre chose qui est toujours pertinent et utile. Merci pour les gars formidables de la communauté.
haxpor
2
Swift3:Bundle.main.bundleIdentifier!
Sebastian Roth
49
[[NSBundle mainBundle] bundleIdentifier];

( documentation )

DarkDust
la source
Dans Swift, utilisezlet bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
Tim Camber
2

Vous aurez peut-être besoin de l'approche Core Foundation pour obtenir la valeur. L'exemple ARC est le suivant:

NSString *value = (__bridge_transfer NSString *)CFDictionaryGetValue(CFBundleGetInfoDictionary(CFBundleGetMainBundle()),
                                                                     (const void *)(@"CFBundleIdentifier"));
Alexander Kradenkov
la source
2

Pour obtenir l'identifiant de bundle par programme dans Swift 3.0 :

Swift 3.0

let bundle = Bundle.main.bundleIdentifier
Tal Zion
la source
0

J'utilise ces macros pour le raccourcir:

#define BUNDLEID    [NSString stringWithString:[[NSBundle mainBundle] bundleIdentifier]]

#define BUNDLEIDEQUALS(bundleIdString) [BUNDLEID isEqualToString:bundleIdString]

donc je peux comparer comme ceci:

if (BUNDLEIDEQUALS(@"com.mycompany.myapp") {
    //do this
}
Tibidabo
la source
0

Si vous essayez de l'obtenir par programme, vous pouvez utiliser la ligne de code ci-dessous:

Objectif c:

NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];

Swift 3.0:

let bundleIdentifier =  Bundle.main.bundleIdentifier

Mis à jour pour la dernière version rapide Il fonctionnera pour les applications iOS et Mac.

Aks
la source