iOS Data Storage

1 审核被拒

屏幕快照 2016-08-29 下午3.31.06.png

2 被拒原因

大概意思是app在下载后,在iCloud需要备份的体积变大了。
根据iOS Data Storage Guidelines 说明,得出几点重要信息

  • 只有用户创建的,并且不能被App重现的文档、数据,才应该被保存在“/Documents”路径下。

  • 可以重新产生、下载的数据可以放在“/Library/Caches”目录下,如用于缓存的数据库文件。

  • 纯粹用于缓存的数据可以放在“/tmp”目录下

  • 可以通过对NSURL加参数,来保证特定的文件夹及其内容不被iCloud备份,也不会被清除,如Document文件

苹果的审核人员认为这些文件不应该备份

真正应该备份的数据:
真正需要备份的文件是用户创建的,不能通过程序重新产生的,如记事本应用中用户创建的文本数据,绘画应用中用户画的画等

3 解决方法

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions{

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDirectory = [paths objectAtIndex:0];
 [self addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:documentsDirectory]];
 return YES;

}

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{ 
assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);
NSError *error = nil;
NSLog(@"addSkipBackupAttributeToItemAtURL");
BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES] forKey: NSURLIsExcludedFromBackupKey error: &error];
if(!success){
    NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
}
return success;
}

官网解决方案:
https://developer.apple.com/library/ios/qa/qa1719/_index.html

特点:

  • /Documents根目录也可以通过上面的函数设置成不备份。(如应用AVPlayer)
  • 设置是递归的,所以其所有子目录和文件都不用再设置一次,都会自动不被备份
    (亲测有效,app第二天通过了)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容