我的应用被 Apple 拒绝,因为他们说它不遵循“iOS 数据存储指南”。
我已使用以下代码更新应用程序以标记下载的内容,这样它就不会备份到云端...
- (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *)filePathString {
NSURL *fileURL = [NSURL fileURLWithPath:filePathString];
NSLog(@"Going to add skip attribute to " @"%@", filePathString);
assert([[NSFileManager defaultManager] fileExistsAtPath: [fileURL path]]);
NSError *error = nil;
BOOL success = [fileURL setResourceValue:[NSNumber numberWithBool: YES]
forKey: NSURLIsExcludedFromBackupKey
error: &error];
NSLog(@"Added skip attribute to " @"%@", filePathString);
return success;
}
但是,当我检查设置 -> 常规 -> 使用 -> MyApp 时,它显示“文档和数据”> 30Mb。从 30Mb 的内容已下载到应用程序的角度来看,这是正确的,但这是否也意味着这 30Mb 将备份到云端?
换句话说,如果我标记文件以便不备份它们,它们会被包含在“文档和数据”值中还是被排除在外?
干杯!
最佳答案
用户创建的或用户私有(private)的且不能消失的数据应位于 Documents 目录中。此外,对用户有值(value)且无法重新创建的数据应位于 Documents 目录中。 Documents 目录中的文件会自动备份到 iCloud。
从网上下载的数据应该保存到Caches目录,因为很容易再次下载,所以保存到iCloud没有意义。数据只会占用 iCloud 中的空间。如果用户需要恢复他的设备,应用程序可以从最初下载数据的地方重新下载数据。如果硬盘上的可用空间量变得非常低,则操作系统可以删除 Caches 目录。
有一种特殊情况,即保存在 Documents 目录中的文件设置了 NSURLIsExcludedFromBackupKey
标志。这适用于对用户有值(value)的数据,即使没有互联网连接也应始终可用,但另一方面,可以在需要时轻松重新下载或更新。
包含在 iCloud 备份中的是 Documents 目录的内容,不包括设置了 NSURLIsExcludedFromBackupKey
标志的文件。不备份位于应用程序容器内的所有其他目录。
设置中的“文档和数据”是指文档文件夹的大小。计算不考虑是否从 iCloud 备份中排除了任何内容。大小不是指 iCloud 备份中数据的大小。但是,如果 Settings.app 显示“30MB”,您可以确定 iCloud 备份至少不会超过 30MB。
关于ios - 如何理解iOS "Documents and data"(云备份相关),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24314294/