我正在下载许多音频和视频文件并将其存储在我的主目录中。 现在我想“阻止备份到iCloud” 所以我为我的每个文件的URL添加了以下代码
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
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;
}
有谁能告诉我这个代码适用于所有IOS版本。 如果没有,请建议正确的方法来做到这一点。 谢谢
答案 0 :(得分:7)
任何人都可以告诉我这个代码适用于所有IOS版本。
不,它没有。在其Technical Note introducing the "do not backup" flag中,Apple明确指出
新的“不备份”属性仅供iOS 5.0.1或更高版本使用。
他们还告诉您需要为旧iOS版本做些什么:
在iOS 5.0及更早版本中,应用程序需要将其数据存储在
<Application_Home>/Library/Caches
中以避免备份。由于旧系统会忽略此属性,因此您需要确保您的应用符合您的应用支持的所有iOS版本上的iOS数据存储指南。
答案 1 :(得分:2)
您可以将此代码用于iOS 5.1或更高版本
- (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;
}