インストールされているすべてのアプリ(NSArray)のリストを取得したいと思います。私のアプリは脱獄アプリであり、/ Applicationsにあるので、サンドボックスは問題ありません。アプリストアアプリのリストを取得する方法はありますか?私はこれを他のアプリ(Activator、SBSettings ...)ですでに見ました。すべてのアプリサンドボックスにその巨大なコードが含まれているため、これを行う方法がわかりません。サンドボックス内の.appフォルダーにアクセスする方法がわかりません。
次のコードスニペットを使用できます。
#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
ジェイルブレイクされたiPhoneでは、/Applications
フォルダを読み取るだけです。インストールされているすべてのアプリケーションがそこに移動します。 NSFileManager
を使用して、/Applications
のディレクトリをリストするだけです。
NSArray *appFolderContents = [[NSFileManager defaultManager] directoryContentsAtPath:@"/Applications"];
汚い処理をすべて行うAppList library
もあります。 rpetrich/AppList 多くのジェイルブレイクの微調整で使用されているので、なぜそうではなかったのかわかりません。前にここで提案しました。
AppStoreアプリのみを取得する1つの方法は、リストで返された各アプリのisSystemApplication
の値を確認することです。値がNO
に設定されているものは、通常のAppStoreアプリです。関数applicationsFilteredUsingPredicate:predicate
もあるので、リストを事前にフィルタリングすることもできます。
いくつかの調査の後、私は iHasApp というフレームワークを見つけました。アプリ名、識別子、アイコンを含む辞書を返すための良い解決策は次のとおりです: インストールされているアプリを見つける