Get list of installed apps on iPhone
Solution 1:
No, apps are sandboxed and Apple-accepted APIs do not include anything that would let you do that.
You can, however, test whether a certain app is installed:
- if the app is known to handle URLs of a certain type
- by using
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"thisapp://foo"]
You can get a list of apps and URL schemes from here.
Solution 2:
For jailbroken devices you can use next snipped of code:
-(void)appInstalledList
{
static NSString* const path = @"/private/var/mobile/Library/Caches/com.apple.mobile.installation.plist";
NSDictionary *cacheDict = nil;
BOOL isDir = NO;
if ([[NSFileManager defaultManager] fileExistsAtPath: path isDirectory: &isDir] && !isDir)
{
cacheDict = [NSDictionary dictionaryWithContentsOfFile: path];
NSDictionary *system = [cacheDict objectForKey: @"System"]; // First check all system (jailbroken) apps
for (NSString *key in system)
{
NSLog(@"%@",key);
}
NSDictionary *user = [cacheDict objectForKey: @"User"]; // Then all the user (App Store /var/mobile/Applications) apps
for (NSString *key in user)
{
NSLog(@"%@",key);
}
return;
}
NSLog(@"can not find installed app plist");
}