美文网首页
iOS Data Storage

iOS Data Storage

作者: Dream_Maker | 来源:发表于2016-08-30 11:37 被阅读151次

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第二天通过了)

相关文章

网友评论

      本文标题:iOS Data Storage

      本文链接:https://www.haomeiwen.com/subject/nnmfettx.html