I have added the following code to exclude files from iCloud backup, but my application was still rejected:
- (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
NSLog(@"%d",[URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil]);
return [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil];
}
}
and I passed the below url in as an NSURL, in the case of the Simulator:
file:///Users/TEST/Library/Application%20Support/iPhone%20Simulator/5.1/Applications/62854BAB-AB51-4771-895F-28C61983A7AC/Documents/MyFolder"
Can any one suggest where my mistake is in this?
The problem is with the URL your passing in.
Even though you are storing your data in a Folder, that Data is still two things
- In the documents folder, so it will be syncs
- The Folder is Associated with your App
To solve this you need to store it in /Library instead of /Documents
So your URL would be
file:///Users/TEST/Library/Application%20Support/iPhone%20Simulator/5.1/Applications/62854BAB-AB51-4771-895F-28C61983A7AC/Library/MyFolder
Storing non sync-able data or just any external data in the Library folder is Apples new preference since iCloud was implemented
Code looks fine to me.
Are you sure that all the files/folders are getting the flags set properly.
You can do that by this terminal command -> ls -al -@
来源:https://stackoverflow.com/questions/10588652/why-was-my-application-still-rejected-after-excluding-files-from-icloud-backup-u