Erhalten Sie die Bundle-ID programmgesteuert

229

Wie kann ich programmgesteuert eine Zeichenfolge der Bundle-ID in meiner App abrufen?

user973984
quelle

Antworten:

454

Ziel 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
quelle
10
Diese Antwort ist nicht auf iOS beschränkt. Es funktioniert auch für Mac-Apps.
Jonny
9
Verwenden Sie in Swiftlet bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
Tim Camber
1
(Sie können diesen Kommentar löschen), aber ich liebe das Gefühl, die Antwort dann im Kommentar zu lesen, etwas wie @Jonny s und Tim zu sehen (obwohl Sie dies in einer anderen ganzen Antwort sehen können), es verlinkt auf etwas anderes, das noch relevant ist und nützlich. Danke für die großartigen Community-Leute.
Haxpor
2
Swift3:Bundle.main.bundleIdentifier!
Sebastian Roth
49
[[NSBundle mainBundle] bundleIdentifier];

( Dokumentation )

DarkDust
quelle
Verwenden Sie in Swiftlet bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
Tim Camber
2

Möglicherweise benötigen Sie den Core Foundation-Ansatz, um den Wert zu erhalten. Das ARC-Beispiel lautet wie folgt:

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

So programmieren Sie die Bundle-ID programmgesteuert in Swift 3.0 :

Swift 3.0

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

Ich benutze diese Makros, um es viel kürzer zu machen:

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

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

also kann ich einfach so vergleichen:

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

Wenn Sie versuchen, es programmgesteuert abzurufen, können Sie die folgende Codezeile verwenden:

Ziel c:

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

Swift 3.0:

let bundleIdentifier =  Bundle.main.bundleIdentifier

Aktualisiert für die neueste Version Es funktioniert sowohl für iOS- als auch für Mac-Apps.

Aks
quelle