Obtenir le path vers l'application iOS en fonction du nom ou de l'identifiant du bundle

Existe-t-il un moyen plus simple d'get le path d'access à une application iOS que de searchr /var/mobile/Applications ?

Je connais à la fois le nom et l'identifiant du bundle, mais le path n'est pas cohérent sur les différents appareils iOS.

Ceci est pour une utilisation dans un tweak jailbreak, donc je peux utiliser PrivateFrameworks et d'autres codes non autorisés par Apple.

Si vous exécutez du code qui s'exécute dans Springboard, cela devrait être assez simple. Obtenez l' SBApplicationController de sharedInstance , puis récupérez la SBApplication que vous searchz avec la méthode applicationWithDisplayIdentifier: (ou en utilisant la méthode de votre choix). La class SBApplication contient les propriétés de path , containerPath et bundle (parmi beaucoup d'autres), dont l'une devrait être ce que vous cherchez. Je ne l'ai pas essayé moi-même, donc je ne peux pas garantir que ça marchera, mais en se basant sur les files d'en-tête de Springboard (vous pouvez regarder ici , ou vider les files d'en-tête), ça devrait marcher.

D'un autre côté, si vous n'utilisez pas Springboard (si vous créez une application de style App Store), vous risquez de ne pas avoir de chance. Vous pourriez vous intéresser à la communication inter-process avec Springboard et voir si quelque chose peut être fait là-bas, mais ce serait probablement plus ennuyeux que ça en vaut la peine.

Si vous utilisez une application, vous pouvez définir:

 extern NSSsortingng* SBSCopyBundlePathForDisplayIdentifier(NSSsortingng* bundleId); 

et un lien vers le framework SpringboardServices .

Ou vous pouvez utiliser la bibliothèque AppList , puis c'est:

 ALApplicationList *al = [ALApplicationList sharedApplicationList]; NSSsortingng *appPath = [al valueForKey:@"path" forDisplayIdentifier:bundleID]; 

Dans ce cas, il fait ce que Andrew R. mentionne dans sa réponse pour vous. (Je suppose que les mêmes exigences sont nécessaires, c'est-à-dire qu'elles doivent être exécutées à partir de Springboard.)