Uzyskaj programistycznie identyfikator pakietu

229

Jak mogę programowo uzyskać ciąg identyfikatora pakietu z poziomu mojej aplikacji?

użytkownik973984
źródło

Odpowiedzi:

454

Cel 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
źródło
10
Ta odpowiedź nie ogranicza się do iOS. Działa również z aplikacjami na komputery Mac.
Jonny
9
W Swift użyjlet bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
Tim Camber
1
(możesz usunąć ten komentarz), ale uwielbiam uczucie czytania odpowiedzi, a następnie w komentarzu, zobacz coś takiego jak @Jonny i Tim (chociaż możesz to zobaczyć w innej całej odpowiedzi), link do czegoś innego, co nadal jest istotne i przydatny. Dzięki za wspaniałych ludzi z społeczności.
haxpor
2
Swift3:Bundle.main.bundleIdentifier!
Sebastian Roth
49
[[NSBundle mainBundle] bundleIdentifier];

( dokumentacja )

DarkDust
źródło
W Swift użyjlet bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
Tim Camber
2

Możesz potrzebować podejścia Core Foundation, aby uzyskać wartość. Przykład ARC jest następujący:

NSString *value = (__bridge_transfer NSString *)CFDictionaryGetValue(CFBundleGetInfoDictionary(CFBundleGetMainBundle()),
                                                                     (const void *)(@"CFBundleIdentifier"));
Alexander Kradenkov
źródło
2

Aby uzyskać identyfikator pakietu programowo w Swift 3.0 :

Swift 3.0

let bundle = Bundle.main.bundleIdentifier
Tal Zion
źródło
0

Używam tych makr, aby znacznie skrócić:

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

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

więc mogę po prostu porównać w ten sposób:

if (BUNDLEIDEQUALS(@"com.mycompany.myapp") {
    //do this
}
Tibidabo
źródło
0

Jeśli próbujesz uzyskać to programowo, możesz użyć poniższego wiersza kodu:

Cel C:

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

Swift 3.0:

let bundleIdentifier =  Bundle.main.bundleIdentifier

Zaktualizowany do najnowszej wersji szybkiej Będzie działał zarówno dla aplikacji na iOS, jak i na Maca.

Aks
źródło