以编程方式获取捆绑标识符

Posted

技术标签:

【中文标题】以编程方式获取捆绑标识符【英文标题】:Obtain Bundle Identifier programmatically 【发布时间】:2012-01-16 16:33:24 【问题描述】:

如何从我的应用程序中的字符串?

【问题讨论】:

【参考方案1】:

目标-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

【讨论】:

这个答案不限于iOS。它也适用于 Mac 应用程序。 在 Swift 中,使用 let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier (您可以删除此评论)但我喜欢阅读答案然后在评论中看到类似@Jonny s 和 Tim(尽管您可以在另一个完整答案中看到)的感觉,它链接到其他仍然相关和有用的东西。感谢伟大的社区伙伴。 Swift3: Bundle.main.bundleIdentifier!【参考方案2】:
[[NSBundle mainBundle] bundleIdentifier];

(documentation)

【讨论】:

在 Swift 中,使用 let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier【参考方案3】:

您可能需要核心基础方法来获得价值。 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】:

如果您尝试以编程方式获取它,您可以使用以下代码行:

目标-C:

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

斯威夫特 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

【讨论】:

以上是关于以编程方式获取捆绑标识符的主要内容,如果未能解决你的问题,请参考以下文章

Swift:如何以编程方式获取iOS设备的唯一标识符?

以编程方式获取应用程序池标识

如何在运行时以编程方式计算应用 ID?

是否可以以编程方式从 Swift/Objective-C 中的 UIViewController 或 Storyboard 中获取基本 UIViewController 的标识符?

以编程方式查找 iPhone 应用程序标识符前缀

如何找到捆绑标识符的所有者