Encontrar la lista de aplicaciones instaladas en iphone

¿Es posible encontrar programáticamente el nombre de todas las aplicaciones instaladas en mi dispositivo iOS? ¿Hay alguna API disponible para el mismo?

Gracias por la ayuda

No, en las aplicaciones iOS no tiene acceso a la información de / sobre otras aplicaciones debido al entorno de espacio aislado.

Sí, es posible obtener una lista de todas las aplicaciones instaladas

-(void) allInstalledApp { NSDictionary *cacheDict; NSDictionary *user; static NSString *const cacheFileName = @"com.apple.mobile.installation.plist"; NSString *relativeCachePath = [[@"Library" stringByAppendingPathComponent: @"Caches"] stringByAppendingPathComponent: cacheFileName]; NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent: @"../.."] stringByAppendingPathComponent: relativeCachePath]; cacheDict = [NSDictionary dictionaryWithContentsOfFile: path]; user = [cacheDict objectForKey: @"User"]; NSDictionary *systemApp=[cacheDict objectForKey:@"System"]; } 

systemApp Dictionary contiene la lista de todas las aplicaciones relacionadas con el sistema y user Dictionary user contiene otra información de la aplicación.

No desde el dispositivo. Sin embargo, desde el escritorio puede echar un vistazo a la biblioteca de iTunes.

Hay formas de hacer esto sin un dispositivo con jailbreak y no obtener su aplicación rechazada.
1. obtener una lista de los procesos que se están ejecutando actualmente, vea esta respuesta SO. Deberá traducir del nombre del proceso al nombre de la aplicación.
2. Verifique si alguna aplicación ha registrado un esquema de URL único con UIApplicationDelegate canOpenURL. Hay algunos sitios que catalogan esquemas de URL conocidos, este es el mejor.

Si una aplicación no se está ejecutando actualmente y no registra un esquema de URL personalizado, no será detectado por estos métodos. Estoy interesado en escuchar un método que se permitirá en la tienda de aplicaciones que funciona mejor que esto.

Puede hacerlo comprobando si una aplicación está instalada o no utilizando el método canOpenURL o verificando los procesos en segundo plano y canOpenURL con el nombre de la aplicación que le interesa.

prueba esto, funcionará incluso con dispositivos que no tienen jailbreak:

 #include  Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace"); SEL selector=NSSelectorFromString(@"defaultWorkspace"); NSObject* workspace = [LSApplicationWorkspace_class performSelector:selector]; SEL selectorALL = NSSelectorFromString(@"allApplications"); NSLog(@"apps: %@", [workspace performSelector:selectorALL]);//will give you all **Bundle IDS** of user's all installed apps 

Puede usar el objective de tiempo de ejecución c para obtener la lista de todas las aplicaciones instaladas. Le dará una matriz de objetos LSApplicationProxy .

Lo que sigue es un fragmento de código que imprime el nombre de todas las aplicaciones instaladas en su dispositivo.

 Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace"); NSObject* workspace = [LSApplicationWorkspace_class performSelector:NSSelectorFromString(@"defaultWorkspace")]; NSMutableArray *array = [workspace performSelector:NSSelectorFromString(@"allApplications")]; NSMutableArray *mutableArray = [[NSMutableArray alloc] init]; for (id lsApplicationProxy in array) { if(nil != [lsApplicationProxy performSelector:NSSelectorFromString(@"itemName")]){ [mutableArray addObject:[lsApplicationProxy performSelector:NSSelectorFromString(@"itemName")]]; } } NSLog(@"********* Applications List ************* : \n %@",mutableArray); 

No olvide incluir .