美文网首页
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