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

229

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

user973984
источник

Ответы:

455

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
PEKO
источник
10
Этот ответ не ограничивается iOS. Это работает и для приложений Mac.
Джонни
9
В Свифте используйтеlet bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
Тим Кэмбер
1
(вы можете удалить этот комментарий), но мне нравится ощущение, что вы читаете ответ, а затем в комментарии видите что-то вроде @Jonny s и Tim (хотя вы можете увидеть это в другом полном ответе), оно ссылается на что-то еще, что все еще актуально и полезно. Спасибо за отличных ребят из сообщества.
haxpor
2
Swift3:Bundle.main.bundleIdentifier!
Себастьян Рот
49
[[NSBundle mainBundle] bundleIdentifier];

( документация )

DarkDust
источник
В Свифте используйтеlet bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
Тим Кэмбер
2

Вам может понадобиться базовый подход, чтобы получить ценность. Пример ARC следующий:

NSString *value = (__bridge_transfer NSString *)CFDictionaryGetValue(CFBundleGetInfoDictionary(CFBundleGetMainBundle()),
                                                                     (const void *)(@"CFBundleIdentifier"));
Александр Краденков
источник
2

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

Swift 3.0

let bundle = Bundle.main.bundleIdentifier
Таль Сион
источник
0

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

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

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

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

if (BUNDLEIDEQUALS(@"com.mycompany.myapp") {
    //do this
}
Тибидабо
источник
0

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

Objective-C:

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

Swift 3.0:

let bundleIdentifier =  Bundle.main.bundleIdentifier

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

Акс
источник