我有一个装在设备上的应用程序包 ID 列表,我想要获取相应的应用程序名称。解决方案应该可以在未越狱设备上运行。因为该应用程序不会发布到应用商店,所以应用程序拒绝并不重要。
我找到了这个解决方案,如果应用程序位于应用商店中,它将返回应用程序的详细信息。 http://itunes.apple.com/lookup?bundleId=com.bundle.id
我有一个装在设备上的应用程序包 ID 列表,我想要获取相应的应用程序名称。解决方案应该可以在未越狱设备上运行。因为该应用程序不会发布到应用商店,所以应用程序拒绝并不重要。
我找到了这个解决方案,如果应用程序位于应用商店中,它将返回应用程序的详细信息。 http://itunes.apple.com/lookup?bundleId=com.bundle.id
大部分时间,你可以通过这个来解决问题...
NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:(id)kCFBundleNameKey];
编辑:
由于您想找到所有的应用程序。
NSString *appName = [[NSBundle bundleWithIdentifier:@"BundleIdentifier"] objectForInfoDictionaryKey:(id)kCFBundleExecutableKey];
NSLog(@"AppName: %@",appName);
这样就可以了。
NSBundle *bundle = [NSBundle bundleWithIdentifier:@"yourBundleIdentifier"];
NSString *appName = [bundle objectForInfoDictionaryKey:@"CFBundleExecutable"];
- (NSString *)titleOfAppWithBundleIdentifier:(NSString *)bundleIdentifier {
NSBundle *bundle = [NSBundle bundleWithIdentifier:bundleIdentifier];
return [bundle objectForInfoDictionaryKey:@"CFBundleExecutable"];
}
我将bundle字典设置如下:
NSDictionary *bundleInfo = [[NSBundle mainBundle] infoDictionary];
NSString *appName = [bundleInfo objectForKey:@"CFBundleDisplayName"];
这里是 bundleInfo
的转储:
{
BuildMachineOSBuild = ...;
CFBundleDevelopmentRegion = ...;
CFBundleDisplayName = ...;
CFBundleExecutable = ...;
CFBundleIcons = {
CFBundlePrimaryIcon = {
CFBundleIconFiles = (
"AppIcon29x29.png",
"AppIcon29x29@2x.png",
"AppIcon40x40@2x.png",
"AppIcon57x57.png",
"AppIcon57x57@2x.png",
"AppIcon60x60@2x.png",
"AppIcon60x60@3x.png"
);
UIPrerenderedIcon = 1;
};
};
CFBundleIdentifier = ...;
CFBundleInfoDictionaryVersion = ...;
CFBundleInfoPlistURL = ...;
CFBundleName = ...;
CFBundleNumericVersion = 0;
CFBundlePackageType = APPL;
CFBundleShortVersionString = ...;
CFBundleSignature = "????";
CFBundleSupportedPlatforms = (
iPhoneOS
);
CFBundleVersion = "1.0.11";
DTCompiler = ...;
DTPlatformBuild = ...;
DTPlatformName = iphoneos;
DTPlatformVersion = "8.3";
DTSDKBuild = ...;
DTSDKName = "iphoneos8.3";
DTXcode = ...;
DTXcodeBuild = ...;
LSRequiresIPhoneOS = 1;
MinimumOSVersion = "5.1";
UIBackgroundModes = (
...,
...
);
UIDeviceFamily = (
1
);
UILaunchImageFile = LaunchImage;
UILaunchImages = (
{
UILaunchImageMinimumOSVersion = "7.0";
UILaunchImageName = ...;
UILaunchImageOrientation = Portrait;
UILaunchImageSize = "{320, 568}";
}
);
UIMainStoryboardFile = Main;
UIRequiredDeviceCapabilities = (
armv7
);
UISupportedInterfaceOrientations = (
UIInterfaceOrientationPortrait
);
UIViewControllerBasedStatusBarAppearance = 0;
}
如果您想获取本地化捆绑显示名称,请使用localizedInfoDictionary
:
NSString *appName = [[NSBundle mainBundle] localizedInfoDictionary][@"CFBundleDisplayName"];
我相信这应该能给你答案:
NSString *appName = [[NSBundle bundleWithIdentifier:@"BundleIdentifier"] objectForInfoDictionaryKey:@"CFBundleExecutable"];
Swift:
if let bundle = Bundle(identifier: "com.my.bundleId"),
let name = bundle.object(forInfoDictionaryKey: kCFBundleNameKey as String) {
print(name)
}
NSString *appName = [[bundleID componentsSeparatedByString:@"."] lastObject];
假设bundleIDs采用反向DNS格式..
CFBundleDisplayName
是应用程序在主屏幕等位置显示的实际人性化名称。 - devios1