Получить имя приложения из идентификатора пакета
У меня есть список с идентификатором пакета из приложений, установленных на устройстве, и я хочу получить имена приложений. Решение должно работать на не сломанных устройствах. Приложение не будет работать в магазине приложений, поэтому отклонение приложения не будет выполнено.
Я нашел это решение, которое вернет подробную информацию для приложения, если она находится в магазине приложений.
http://itunes.apple.com/lookup?bundleId=com.bundle.id
Ответы
Ответ 1
В большинстве случаев вы можете получить это...
NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:(id)kCFBundleNameKey];
EDIT:
AS, который вы хотите найти для всех приложений.
NSString *appName = [[NSBundle bundleWithIdentifier:@"BundleIdentifier"] objectForInfoDictionaryKey:(id)kCFBundleExecutableKey];
NSLog(@"AppName: %@",appName);
Ответ 2
Это должно сделать это.
NSBundle *bundle = [NSBundle bundleWithIdentifier:@"yourBundleIdentifier"];
NSString *appName = [bundle objectForInfoDictionaryKey:@"CFBundleExecutable"];
Метод
- (NSString *)titleOfAppWithBundleIdentifier:(NSString *)bundleIdentifier {
NSBundle *bundle = [NSBundle bundleWithIdentifier:bundleIdentifier];
return [bundle objectForInfoDictionaryKey:@"CFBundleExecutable"];
}
Ответ 3
Вся информация о связке находится здесь:
NSDictionary *bundleInfo = [[NSBundle mainBundle] infoDictionary]);
NSString *appName = [bundleInfo objectForKey:@"CFBundleDisplayName"];
bundleInfo
сброшено
{
BuildMachineOSBuild = ...;
CFBundleDevelopmentRegion = ...;
CFBundleDisplayName = ...;
CFBundleExecutable = ...;
CFBundleIcons = {
CFBundlePrimaryIcon = {
CFBundleIconFiles = (
"AppIcon29x29.png",
"[email protected]",
"[email protected]",
"AppIcon57x57.png",
"[email protected]",
"[email protected]",
"[email protected]"
);
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;
}
Ответ 4
Если вы хотите получить локализованное отображаемое имя пакета, используйте localizedInfoDictionary
:
NSString *appName = [[NSBundle mainBundle] localizedInfoDictionary][@"CFBundleDisplayName"];
Ответ 5
NSString *appName = [[bundleID componentsSeparatedByString:@"."] lastObject];
Предполагая, что идентификаторы bundle находятся в обратном формате dns..
Ответ 6
Я считаю, что это должно дать вам ответ:
NSString *appName = [[NSBundle bundleWithIdentifier:@"BundleIdentifier"] objectForInfoDictionaryKey:@"CFBundleExecutable"];