Подтвердить что ты не робот

Как получить размер хранилища программных приложений в iPhone

Я хочу получить размеры хранилища для каждого приложения в iPhone с помощью объектного C.
Кто-нибудь может это сделать... enter image description here

4b9b3361

Ответ 1

Предполагая, что вы разрабатываете джейлбрейк-устройство (если нет, тогда невозможно получить доступ к приложениям на устройстве), SpringBoard должен иметь предопределенные методы для доступа к метаданным всех установленных приложений. Если вы посмотрите на заголовки SBApplication.h, тогда есть методы для получения метаданных.

Ответ 2

    NSString *folderPath = "give application path here"

Пример: NSString * folderPath = @ "/private/var/mobile/Applications/2B63FD7F-2082-415D-A00C-F07C4BE281AA/Example.app";

    NSArray *filesArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:folderPath error:nil];

    NSEnumerator *filesEnumerator = [filesArray objectEnumerator];
    NSString *fileName;
    unsigned long long int fileSize = 0;

    while (fileName = [filesEnumerator nextObject])

    {
        NSDictionary *fileDictionary = [[NSFileManager defaultManager] fileAttributesAtPath:[folderPath stringByAppendingPathComponent:fileName] traverseLink:YES];

        NSLog(@" fileDictionary   %@",fileDictionary);

        fileSize += [fileDictionary fileSize];
    }

    NSLog(@" App Name and App size: %@ : %lld", folderPath,fileSize);

если вы хотите найти все размеры приложений, взять весь путь приложений в массиве и написать для оператора цикла для пути к папке

   NSArray *applicationsPath="Here array contain all applications path"
   for (int i=0; i<applicationPath.count; i++)
   {
    NSString *folderPath = [applicationPath objectAtIndex:i]

    NSArray *filesArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:folderPath error:nil];

    NSEnumerator *filesEnumerator = [filesArray objectEnumerator];
    NSString *fileName;
    unsigned long long int fileSize = 0;

    while (fileName = [filesEnumerator nextObject])

    {
        NSDictionary *fileDictionary = [[NSFileManager defaultManager] fileAttributesAtPath:[folderPath stringByAppendingPathComponent:fileName] traverseLink:YES];

        NSLog(@" fileDictionary   %@",fileDictionary);

        fileSize += [fileDictionary fileSize];
    }

    NSLog(@" App Name and App size: %@ : %lld", folderPath,fileSize);
   }

Ответ 3

Если устройство не заблокировано, вы не сможете обращаться к каждой папке приложения программно.

Это связано с тем, что каждое приложение iOS работает в изолированной среде, то есть ваше приложение может ТОЛЬКО получать доступ к активам в этом каталоге. Если устройство заблокировано, это требование удаляется, и вам предоставляется полный доступ к диску устройства.