Как скрыть папку в NSDocumentsDirectory и запретить резервное копирование через iTunes и iCloud

Я создаю личную папку в NSDocumentDirectory и хочу спрятать ее в iTunes и запретить резервное копирование.

В этом вопросе Как скрыть папки, созданные в Document Directory в ios? Люди предлагают сохранить в личном каталоге.

Но это не так, согласно документации Apple, https://developer.apple.com/library/mac/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html

Application_Home / Library / Вы не должны использовать этот каталог для файлов пользовательских данных.

До iTunes11 это решение работало для меня

Могу ли я добавить "Не выполнять резервное копирование" в "Каталог документов" для iCloud

но теперь я вижу папку с личными документами в iTunes.

Может ли кто-нибудь помочь мне?

1 ответ

Решение

Чтобы скрыть свое приложение от общего доступа к файлам iTunes, вы можете установить нижеприведенную клавишу на No в вашем info.plist.

Приложение поддерживает общий доступ к файлам iTunes

В качестве альтернативы, добавьте ваши имена файлов / каталогов, добавив каталог Documents с . чтобы скрыть это без отключения общего доступа к файлам iTunes. Например .folderName,

Используйте это, чтобы предотвратить резервное копирование iCloud, от Prevent Backup до iCloud, правильный ли следующий код?

- (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *)filePathString {
    NSURL *fileURL = [NSURL fileURLWithPath:filePathString];

    assert([[NSFileManager defaultManager] fileExistsAtPath: [fileURL path]]);

    NSError *error = nil;

    BOOL success = [fileURL setResourceValue:[NSNumber numberWithBool: YES]
                                  forKey: NSURLIsExcludedFromBackupKey
                                 error: &error];
    return success;
}

И чтобы предотвратить резервное копирование приложения из XCode Organizer, когда устройство заблокировано, используйте этот фрагмент

//************************************************************************
// Method for making files and folders secure
//************************************************************************
+ (void)makeItemAtPathSecure:(NSString *)path
{
    NSError *securingFilesError;

    NSFileManager *manager=[NSFileManager defaultManager];

    NSDictionary *attrs = [manager attributesOfItemAtPath:path error:&securingFilesError];


    if(![[attrs objectForKey:NSFileProtectionKey] isEqual:NSFileProtectionComplete])
    {

        if(![manager setAttributes:[NSDictionary dictionaryWithObject:NSFileProtectionComplete                                                                       forKey:NSFileProtectionKey] ofItemAtPath:path error:&securingFilesError])
        {
            NSLog(@"Problem in securing files: %@",[securingFilesError localizedDescription]);
        }
    }

    else
    {
        NSLog(@"Problem in securing files: %@",[securingFilesError localizedDescription]);

    }

}

Для выборочного скрытия папок в iTunes попробуйте переименовать папку с помощью. перед ним, как folderName должно быть .folderName

Другие вопросы по тегам