Skip to main content

Get installed apps list on iOS by object-C

When programming with object-C for iOS, in some case, you may need to get list of installed apps on iOS device. Here we have a simple step to get that list which contains BundleURLSchemes.



BOOL isDir= NO;
static NSString *const cacheFileName = @"com.apple.mobile.installation.plist";
NSString *relativeCachePath = [[@"Library" stringByAppendingPathComponent: @"Caches"] stringByAppendingPathComponent: cacheFileName];
NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent: @"../.."] stringByAppendingPathComponent: relativeCachePath];
NSMutableArray *list;
if ([[NSFileManager defaultManager] fileExistsAtPath: path isDirectory: &isDir] && !isDir) // Ensure that file exists
{
cacheDict = [NSDictionary dictionaryWithContentsOfFile: path]; //cacheDict contains 3 key: System, Metadata, User
//get list System apps
list = [NSMutableArray arrayWithArray:[[cacheDict objectForKey: @"System"] allKeys]];
//get list user apps
[list addObjectsFromArray:[[cacheDict objectForKey: @"User"] allKeys]];
}
}

Each item in list contains some attribute as:

  • CFBundleIdentifier

  • CFBundleDisplayName

  • CFBundleURLTypes (some apps don't have value in this attribute)

    • CFBundleURLName

    • CFBundleURLSchemes



  • ...


Additional, you can filter list to delete some app which don't have BundleURL:
//remove app without having url
NSMutableArray *tmpList = [NSMutableArray arrayWithArray:list];
NSString *appType;
for (NSString *app in tmpList) {
if ([[cacheDict objectForKey:@"System"] objectForKey:app]) {
appType = @"System";
}
else {
appType = @"User";
}
if (!([[[cacheDict objectForKey:appType] objectForKey:app] objectForKey:@"CFBundleURLTypes"])) {
[list removeObject:app];
}
}

 

With the list, you can use item's CFBundleURLSchemes to run an iOS app by CFBundleURLSchemes.

That's all.

Wish succeed!

Comments

Popular posts from this blog

Turn off AutoPlay on Windows

On Windows, when you insert an USB or a CD/DVD into your computer, they are usually opened automatically. So the computer maybe infected autorun virus. To avoid that, you should turn off AutoPlay function.

Install and play Pokemon Go on unsupported device

Pokemon Go is great mobile game for smart devices (Android, iOS...). Many people can install and play it normally. However, some device has not been supported yet (Intel inside smartphone: Asus Zenfone, Dell Veune, ...; Windows Phone devices...). Here we show you how to play it in all your devices. For Android devices: Enable “Unknown sources” in the settings. Download Pokemon Go app setup:  Link 1  / Link 2   Open the downloaded file to install app. Enable all the settings when promted. Now you can open and run Pokemon Go to catch 'em. ... That's all. Wish succeed!