以编程方式获取Bundle Identifier

我怎样才能从我的应用程序内以编程的方式获得捆绑标识符的字符串?

81679 次浏览
[[NSBundle mainBundle] bundleIdentifier];

(文档)

objective - c

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

斯威夫特1.2

let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier

斯威夫特3.0

let bundleIdentifier = Bundle.main.bundleIdentifier

Xamarin.iOS

var bundleIdentifier = NSBundle.MainBundle.BundleIdentifier

您可能需要使用Core Foundation方法来获取值。ARC示例如下:

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

如果你试图通过编程方式获取它,你可以使用下面的代码行:

objective - c:

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

Swift 3.0:

let bundleIdentifier =  Bundle.main.bundleIdentifier

它将工作在iOS和Mac应用程序。

我使用这些宏来使它更短:

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


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

所以我可以这样比较:

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

斯威夫特3.0中以编程方式获取包标识符:

斯威夫特3.0

let bundle = Bundle.main.bundleIdentifier