Obter identificador de pacote programaticamente

229

Como posso obter uma sequência de caracteres do Identificador de pacote por meio de programação no meu aplicativo?

user973984
fonte

Respostas:

454

Objetivo-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
fonte
10
Esta resposta não está limitada ao iOS. Também funciona para aplicativos Mac.
quer
9
Na Swift, uselet bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
Tim Camber
1
(você pode excluir este comentário), mas eu adoro a sensação de ler a resposta no comentário, ver algo como @ Jonny s e Tim (embora você possa ver isso em outra resposta completa), ele está vinculado a outra coisa que ainda é relevante e útil. Obrigado por ótimos membros da comunidade.
precisa saber é o seguinte
2
Swift3:Bundle.main.bundleIdentifier!
Sebastian Roth
49
[[NSBundle mainBundle] bundleIdentifier];

( documentação )

DarkDust
fonte
Na Swift, uselet bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
Tim Camber
2

Você pode precisar da abordagem da Core Foundation para obter o valor. O exemplo do ARC é o seguinte:

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

Para obter o identificador de pacote por meio de programação no Swift 3.0 :

Swift 3.0

let bundle = Bundle.main.bundleIdentifier
Tal Zion
fonte
0

Eu uso essas macros para torná-lo muito mais curto:

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

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

para que eu possa comparar assim:

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

Se você está tentando obtê-lo programaticamente, pode usar a linha de código abaixo:

Objetivo-C:

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

Swift 3.0:

let bundleIdentifier =  Bundle.main.bundleIdentifier

Atualizado para a última atualização Ele funcionará para aplicativos iOS e Mac.

Aks
fonte