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

Insert Google Search box into blog/website

Normally, every  blog/website has a search function which supports everyone to easily browse the site contents. But it maybe not really useful and effective. Then Google Custom Search is a brilliant choice for you. How to get it?

Access Facebook.com with Google DNS and hosts file

Facebook is now the most popular social network. You have many friends and many informations which need to be check on it. But a day, you can't access Facebook or can't post an image. You can resolve this problem by simple steps:

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.