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.

Create Wordpress page template

When creating a new page in Wordpress, we usually have a choice for the page template. It's call Default template . However, we sometimes need to make a new page with a new appearance. Then another page template is needed. Instead of downloading a shared page template from internet, we can create a new page template by below instructions.