在iOS8上从包ID(我自己的ID除外)获取应用程序的名称

在iOS8上从包ID(我自己的ID除外)获取应用程序的名称,ios,objective-c,Ios,Objective C,我正在尝试使用以下代码: NSString *appName = [[NSBundle bundleWithIdentifier:item] objectForInfoDictionaryKey:@"CFBundleExecutable"]; 要从应用程序包标识符获取应用程序的名称,但是对于所有非库存应用程序,此方法返回nil。我曾试图寻找解决这一问题的方法,但毫无结果。如何从iOS 8中的捆绑包ID获取应用程序的名称 编辑:为了澄清,我想将此应用程序用于我自己的应用程序以外的其他应用程序-我

我正在尝试使用以下代码:

NSString *appName = [[NSBundle bundleWithIdentifier:item] objectForInfoDictionaryKey:@"CFBundleExecutable"];
要从应用程序包标识符获取应用程序的名称,但是对于所有非库存应用程序,此方法返回nil。我曾试图寻找解决这一问题的方法,但毫无结果。如何从iOS 8中的捆绑包ID获取应用程序的名称


编辑:为了澄清,我想将此应用程序用于我自己的应用程序以外的其他应用程序-我之前就同一主题提出了一个问题,但所有答案都仅适用于我的应用程序,因此我已进一步解释了该问题。

您无法访问其他应用程序的捆绑包。您只能访问应用程序包。当您使用
bundleWithiIdentifier:
时,iOS会在应用程序的沙箱中查找与提供的标识符匹配的捆绑包。在上述情况下,将没有此类
NSBundle
可用,因此它将返回nil

bundleWithiIdentifier:

返回以前创建的具有 指定的包标识符

宣言 Swift

init?(标识符:字符串)->NSBundle

目标-C

+(NSBundle*)bundleWithiIdentifier:(NSString*)标识符

参数

标识符

现有NSBundle实例的标识符

返回值

以前创建的具有该捆绑包的NSBundle实例 标识符。如果请求的捆绑包不可用,则返回nil 找到了

讨论 框架和插件通常使用此方法来定位 他们自己的包在运行时。此方法可能更有效 使用
bundleForClass:
方法。但是,如果对已加载和缓存的 具有指定标识符的绑定失败,此方法使用 尝试定位捆绑包可能会耗费大量时间


为什么您希望能够获得另一个任意应用程序的捆绑包?您知道我将如何访问另一个应用程序的捆绑包吗?@JamesWilliams:AFAIK在非越狱设备中您不能这样做。我使用的是越狱设备。@JamesWilliams:Check