在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