Получить программный идентификатор Bundle Identifier

Как я могу получить строку идентификатора Bundle программно из моего приложения?

Ответ 1

Objective-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

Ответ 2

[[NSBundle mainBundle] bundleIdentifier];

(documentation)

Ответ 3

Для получения значения может потребоваться подход Core Foundation. Пример ARC:

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

Ответ 4

Чтобы получить идентификатор пакета программно в Swift 3.0:

Swift 3.0

let bundle = Bundle.main.bundleIdentifier

Ответ 5

Если вы пытаетесь получить его программно, вы можете использовать следующую строку кода:

Objective-C:

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

Swift 3.0:

let bundleIdentifier =  Bundle.main.bundleIdentifier

Обновлено для последней версии Swift. Будет работать как для iOS, так и для Mac приложений.

Ответ 6

Я использую эти макросы, чтобы сделать его намного короче:

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

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

поэтому я могу просто сравнить вот так:

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