В моем приложении я должен хранить базу данных Core Data и аудиофайлы, поэтому я расшифровал их, чтобы поместить их в каталог документов. Чтобы они не выполняли резервное копирование, при первом запуске приложения я устанавливаю флаг Не выполнять резервное копирование вот так.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self addSkipBackupAttributeToItemAtURL:[self applicationDocumentsDirectory]];
}
- (NSURL *)applicationDocumentsDirectory
{
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
if (&NSURLIsExcludedFromBackupKey == nil) { // iOS <= 5.0.1
const char* filePath = [[URL path] fileSystemRepresentation];
const char* attrName = "com.apple.MobileBackup";
u_int8_t attrValue = 1;
int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
return result == 0;
} else { // iOS >= 5.1
return [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil];
}
}
Но похоже, что это не работает - я все еще получаю отказ:
Мы обнаружили, что ваше приложение не соответствует Руководству по хранению данных iOS, которое требуется в соответствии с Руководством по проверке App Store.
В частности, мы обнаружили, что при запуске и/или загрузке контента ваше приложение сохраняет 3,6 МБ. Чтобы проверить, сколько данных хранит ваше приложение:
- Установите и запустите свое приложение
- Перейдите в «Настройки» > «iCloud» > «Хранилище и резервное копирование» > «Управление хранилищем».
- При необходимости нажмите «Показать все приложения».
- Проверьте хранилище вашего приложения
И другая проблема в том, что я просто не могу это проверить - я не вижу свое приложение в
Настройки > iCloud > Хранилище и резервное копирование > Управление хранилищем
Может быть, проблема только с 5.0, о которой я здесь не думаю?