ver todas sirve significa que para mis manager instaladas app aplicaciones actualizar objective-c ios jailbreak

objective-c - todas - que significa facebook app manager



Obtener una lista de todas las aplicaciones instaladas (4)

Me gustaría obtener una lista de todas las aplicaciones instaladas (NSArray). Mi aplicación es una aplicación jailbreak y está ubicada en / Applications, por lo que Sandbox no es problema allí. ¿Hay alguna forma de obtener una lista de aplicaciones de la tienda de aplicaciones? Ya lo he visto en otras aplicaciones (Activator, SBSettings ...). No tengo idea de cómo hacer esto, porque todos los sandboxes de aplicaciones tienen ese código enorme, así que no sé cómo sería posible acceder a la carpeta .app dentro del entorno limitado.



En iPhones jailbroken, puede leer la carpeta /Applications . Todas las aplicaciones instaladas van allí. Simplemente liste los directorios en /Applications usando NSFileManager :

NSArray *appFolderContents = [[NSFileManager defaultManager] directoryContentsAtPath:@"/Applications"];


Puedes usar este fragmento de código:

#import "InstalledAppReader.h" static NSString* const installedAppListPath = @"/private/var/mobile/Library/Caches/com.apple.mobile.installation.plist"; @interface InstalledAppReader() -(NSArray *)installedApp; -(NSMutableDictionary *)appDescriptionFromDictionary:(NSDictionary *)dictionary; @end @implementation InstalledAppReader #pragma mark - Init -(NSMutableArray *)desktopAppsFromDictionary:(NSDictionary *)dictionary { NSMutableArray *desktopApps = [NSMutableArray array]; for (NSString *appKey in dictionary) { [desktopApps addObject:appKey]; } return desktopApps; } -(NSArray *)installedApp { BOOL isDir = NO; if([[NSFileManager defaultManager] fileExistsAtPath: installedAppListPath isDirectory: &isDir] && !isDir) { NSMutableDictionary *cacheDict = [NSDictionary dictionaryWithContentsOfFile: installedAppListPath]; NSDictionary *system = [cacheDict objectForKey: @"System"]; NSMutableArray *installedApp = [NSMutableArray arrayWithArray:[self desktopAppsFromDictionary:system]]; NSDictionary *user = [cacheDict objectForKey: @"User"]; [installedApp addObjectsFromArray:[self desktopAppsFromDictionary:user]]; return installedApp; } DLOG(@"can not find installed app plist"); return nil; } @end


También está la AppList library , que hará todo el trabajo sucio para usted: rpetrich/AppList Se usa en muchos ajustes de Jailbreak, por lo que no sé por qué no se sugirió antes.

Una forma de obtener aplicaciones AppStore sería verificar el valor de isSystemApplication para cada aplicación devuelta en la lista. Aquellos con el valor establecido en NO son aplicaciones regulares de AppStore. También hay una función applicationsFilteredUsingPredicate:predicate , por lo que quizás incluso sería posible filtrar la lista de antemano.