我的应用程序被苹果拒绝了,因为他们说它不遵循"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;
}但是,当我检查“设置”( Settings -> General -> Usage -> MyApp )时,它将“文档和数据”显示为>30 as。从下载到应用程序的30 up内容来看,这是正确的,但这是否也意味着这30 up将被备份到云上?
换句话说,如果我将文件标记为不被备份,那么它们会被包含还是被排除在“文档和数据”值之外?
干杯!
发布于 2014-06-19 19:12:47
用户创建的或对用户来说是私有的、不能只是消失的数据应该在Documents目录中。此外,对用户有价值且无法重新创建的数据应该位于Documents目录中。文档目录中的文件将自动备份到iCloud。
从互联网下载的数据应该保存到缓存目录中,因为可以轻松地重新下载,因此将它们保存到iCloud中是没有意义的。数据只会占用iCloud中的空间。如果用户需要恢复他的设备,应用程序可以直接从任何地方下载数据。如果硬盘上的空闲空间非常少,操作系统就可以删除缓存目录。
有一个特殊情况,即文件保存在Documents目录中,并设置了NSURLIsExcludedFromBackupKey标志。这是为了提供对用户有价值的数据,这些数据应该随时可用,即使在没有互联网连接的情况下也是如此,但另一方面,这些数据可以在需要时轻松地重新下载或更新。
iCloud备份中包含的是文档目录的内容,不包括设置了NSURLIsExcludedFromBackupKey标志的文件。所有位于应用程序容器内的其他目录都没有备份。
设置中的“文档和数据”引用文档文件夹的大小。如果从iCloud备份中排除了任何内容,则计算没有考虑。大小不引用iCloud备份中数据的大小。但是,如果Settings.app表示“30 if”,则可以确保iCloud备份至少不会大于30 if。
https://stackoverflow.com/questions/24314294
复制相似问题