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

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!

Integrate blogspot blogger blog with Dot TK free domain

Blogspot or Blogger is a blog service from Google. This service provides us many functions to make a small website as creating a blog, posting, commenting, . . . But there is a thing which might cause you dissatisfy. That's the blog address is too long, like http://www.your-tips-tricks.blogspot.com . If you own a short Dot TK domain , then your problems will be solved.