从包ID中获取应用名称

时间:2012-12-24 16:22:19

标签: iphone objective-c ios

我从设备上安装的应用程序中找到了包含id的列表,我想获取应用程序名称。解决方案应该适用于不受监狱破坏的设备。该应用程序不会进入应用程序商店,因此应用程序拒绝不会满足。


我找到了这个解决方案,如果它位于应用商店,它将返回应用的详细信息。 http://itunes.apple.com/lookup?bundleId=com.bundle.id

7 个答案:

答案 0 :(得分:24)

大多数时候,你可以得到这个......

NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:(id)kCFBundleNameKey];

编辑:

如果你想找到所有应用程序。

NSString *appName = [[NSBundle bundleWithIdentifier:@"BundleIdentifier"] objectForInfoDictionaryKey:(id)kCFBundleExecutableKey];
NSLog(@"AppName: %@",appName);

答案 1 :(得分:11)

这应该这样做。

NSBundle *bundle = [NSBundle bundleWithIdentifier:@"yourBundleIdentifier"];
NSString *appName = [bundle objectForInfoDictionaryKey:@"CFBundleExecutable"];

方法

- (NSString *)titleOfAppWithBundleIdentifier:(NSString *)bundleIdentifier {
    NSBundle *bundle = [NSBundle bundleWithIdentifier:bundleIdentifier];
    return [bundle objectForInfoDictionaryKey:@"CFBundleExecutable"];
}

答案 2 :(得分:7)

所有捆绑信息都在这里:

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;
}

答案 3 :(得分:1)

如果要获取本地化的包显示名称,请使用localizedInfoDictionary

NSString *appName = [[NSBundle mainBundle] localizedInfoDictionary][@"CFBundleDisplayName"];

答案 4 :(得分:0)

NSString *appName = [[bundleID componentsSeparatedByString:@"."] lastObject];

假设bundleID是反向dns格式..

答案 5 :(得分:0)

我相信这应该给你答案:

NSString *appName = [[NSBundle bundleWithIdentifier:@"BundleIdentifier"] objectForInfoDictionaryKey:@"CFBundleExecutable"];

答案 6 :(得分:0)

迅速:

if let bundle = Bundle(identifier: "com.my.bundleId"),
    let name = bundle.object(forInfoDictionaryKey: kCFBundleNameKey as String) {
    print(name)
}