Iphone 防止备份到iCloud,以下代码正确吗?
我正在下载许多音频和视频文件,并将它们存储在我的主目录中。 现在我想“防止备份到iCloud” 因此,我为每个文件的url添加了以下代码Iphone 防止备份到iCloud,以下代码正确吗?,iphone,ios,backup,icloud,home-directory,Iphone,Ios,Backup,Icloud,Home Directory,我正在下载许多音频和视频文件,并将它们存储在我的主目录中。 现在我想“防止备份到iCloud” 因此,我为每个文件的url添加了以下代码 - (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL { const char* filePath = [[URL path] fileSystemRepresentation]; const char* attrName = "com.apple.MobileBackup";
- (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版本吗。
如果没有,请建议正确的方法。
多谢各位
谁能告诉我这段代码适用于所有IOS版本吗
不,没有。苹果在其声明中明确表示
新的“不备份”属性将仅由iOS 5.0.1或更高版本使用
它们还告诉您需要为较旧的iOS版本执行哪些操作:
在iOS 5.0及更早版本上,应用程序需要将数据存储在/Library/Caches
中,以避免备份数据。由于此属性在较旧的系统上被忽略,因此您需要确保您的应用程序在您的应用程序支持的所有iOS版本上都符合iOS数据存储指南
您可以将此代码用于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;
}
如果您有一个可更新的数据库,这似乎是一个难题,因为存储在缓存中的数据库是不可更新的!我想知道如何在文件而不是url上添加此属性。