Get list of all installed apps
You can use this code snippet:
#import "InstalledAppReader.h"static NSString* const installedAppListPath = @"/private/var/mobile/Library/Caches/com.apple.mobile.installation.plist";@interface InstalledAppReader()-(NSArray *)installedApp;-(NSMutableDictionary *)appDescriptionFromDictionary:(NSDictionary *)dictionary;@end@implementation InstalledAppReader#pragma mark - Init-(NSMutableArray *)desktopAppsFromDictionary:(NSDictionary *)dictionary{ NSMutableArray *desktopApps = [NSMutableArray array]; for (NSString *appKey in dictionary) { [desktopApps addObject:appKey]; } return desktopApps;}-(NSArray *)installedApp{ BOOL isDir = NO; if([[NSFileManager defaultManager] fileExistsAtPath: installedAppListPath isDirectory: &isDir] && !isDir) { NSMutableDictionary *cacheDict = [NSDictionary dictionaryWithContentsOfFile: installedAppListPath]; NSDictionary *system = [cacheDict objectForKey: @"System"]; NSMutableArray *installedApp = [NSMutableArray arrayWithArray:[self desktopAppsFromDictionary:system]]; NSDictionary *user = [cacheDict objectForKey: @"User"]; [installedApp addObjectsFromArray:[self desktopAppsFromDictionary:user]]; return installedApp; } DLOG(@"can not find installed app plist"); return nil;}@end
On jailbroken iPhones, you can just read the /Applications
folder. All installed applications go there. Just list the directories in /Applications
using NSFileManager
:
NSArray *appFolderContents = [[NSFileManager defaultManager] directoryContentsAtPath:@"/Applications"];
After some research I have found a framework called iHasApp. Here is a good solution to return a dictionary with app name, identifier and icon: Finding out what Apps are installed