I was recently rejected for my NSLibraryDirectory backing up bad data in iCloud. I am trying to prohibit backing up the entire directory in iCloud, as this directory contains nothing but the downloaded content. Will this code in AppDelegate.m work?
- (NSString *)applicationDocumentsDirectory { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSURL *pathURL= [NSURL fileURLWithPath:documentsDirectory]; [self addSkipBackupAttributeToItemAtURL:pathURL]; return documentsDirectory; } - (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL { if (NSURLIsExcludedFromBackupKey) { assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]); NSError *error = nil; BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES] forKey: NSURLIsExcludedFromBackupKey error: &error]; if(!success){ NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error); } return success; } else { assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]); 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; } }
source share