Skip to main content

tplogin.cn首页 > 新闻资讯 >

如何防止文件被备份到iCloud和iTunes

2013-01-25 21:21 浏览:

应用有一些文件需要永久的存储在本地使应用支持离线功能。但是这些文件并不包含用户数据,无需备份。如何防止这些文件被备份。在iOS上,应用负责确保只有用户数据而不包含应用数据被备份到iCloud和iTunes上。具体的步骤在不同的iOS 版本各有不同。所以对不同的版本进行区分描述。关于具体哪些数据不应该被备份,参见App Backup Best Practices section of the iOS App Programming Guide。

注意:应用应该避免将应用数据和用户数据和在相同的文件中。这样会增加不必要的备份大小并且被认为是违反iOS的数据存储指南。

iOS 5.1 以及更新

从iOS 5.1开始,应用可以使用NSURLIsExcludedFromBackupKey 或 kCFURLIsExcludedFromBackupKey 文件属性来防止文件被备份。这些API是通过通过旧的,弃用的方式的直接设置额外属性。所有运行在iOS5.1的都应该使用这些API包防止文件被备份。

在iOS5 .1上防止文件被备份

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL

{

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;

}

iOS 5.0.1

如果你的应用必须支持iOS 5.0.1,你可以使用下面的方式来设置“不要备份”的拓展属性。当你创建无须备份文件或者文件夹时,将数据写入文件然后调用这个方法,传入一个文件URL。

下面的这些代码已经被弃用并只应该使用在iOS5.0.1及更早的版本上。当运行的iOS5.1上时,应用应用使用NSURL和CFURL键来进行描述。

在iOS 5.0.1上设置额外属性

#import

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL

{

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;

}

iOS 5.0

无法在iOS5.0上防止数据被备份。如果你的应用必须支持iOS5.0,然你需要保持你的应用数据在Caches中来避免数据被备份。iOS将会在不需要的时候删除Caches目录中的数据。所以如果数据被删除的话应用将需要重新解压出这些数据。

本文出自 “ArthurChen” 博客

相关文章

et文件怎么在电脑跟手机中打开

2022-04-15 08:40:33    浏览: 74

华为系统权限管理在哪里(如何打开华为系统权限管理)

2022-04-15 08:42:41    浏览: 150

中国移动中兴ZXHN E503路由器,如何登录wifi.cmcc设置

2022-04-15 08:22:30    浏览: 155

电脑跟手机如何打开tp-link路由器登录入口:tplogin.cn

2022-04-15 08:11:01    浏览: 125

crx文件安装到edge浏览器教程

2022-04-14 12:21:03    浏览: 149