Как скрыть папку в 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