iOS swift 2.2 拒绝2.23 - Apps must follow the iOS Data Storage Guidelines or they will be rejected

2.23 - Apps must follow the iOS Data Storage Guidelines or they will be rejected

  • 意思是违反了 苹果储存规则
  • 我摘要了一些文章

应用在启动时就在Documents下产生了5.6 M的数据,说明不是用户自行创建并用于备份的,通过修改应用,在document目录加一个不备份的属性(NSURLIsExcludedFromBackupKey)后审核通过。再来总结一下iOS5以后的存储规范:
ü 只有那些用户生成的文档和其他数据或者是那些不能被你的应用所重建的数据应当保存在/Documents 目录内。这些数据文件将会自动的通过iCloud备份。
ü 那些可以重新下载或者重新创建的数据应当保存在/Library/Caches 目录内。你可以把数据库缓存文件或者可下载的内容如杂志、报纸、地图应用的数据等放入缓存目录里(Caches directory)
ü 临时需要的数据应该保存在/tmp 目录内。尽管这些文件不会备份到iCloud里,但记住不再需要它们时立即删除掉这些文件,这样它们就不会继续浪费用户设备的储存空间了。
ü 使用“do not back up”属性指定不需要iCloud备份的文件(比如需要离线环境使用的文件;该属性能在任何目录下生效)。由于这些文件占用设备空间,所以应用需要有一套定期监控与清理这些文件的机制。

  • 我们一般有这样的需求,既不是用户 必须备份到icloud ,但是又不是临时文件。

那我们就要需要 让这个文件不备份 icloud

  • 苹果文档写的很清楚 ,但是我只找到oc 版本
    https://developer.apple.com/library/ios/qa/qa1719/_index.html

  • 我就翻译为swift的版本
    let docPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
    addSkipBackupAttributeToItemAtPath(docPath as String)

        func addSkipBackupAttributeToItemAtPath(filePath:String) {
            if let url:NSURL = NSURL(fileURLWithPath: filePath) {
          do {
              try url.setResourceValue(NSNumber(bool: true), forKey: NSURLIsExcludedFromBackupKey)
          } catch _ as NSError {
                print("出错")
          }
      }
    }
    
  • 版本二
    func addSkipBackupAttributeToItem() {
    ///获取目录
    let xx = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory,inDomains: .UserDomainMask)[0]
    let url = xx.URLByAppendingPathComponent("output.mp4")
    do {
    try url.setResourceValue(NSNumber(bool: true), forKey: NSURLIsExcludedFromBackupKey)
    } catch _ as NSError {
    print("出错")
    }

}

  • 看我那么可爱n(≧▽≦)n
  • 关注我的微薄 (梁同桌):http://weibo.com/tongrenyinsheng
  • 网站(同人音声) http://www.tongrenyinsheng.com
  • ios 个人写的app (同人音声)ASMR音乐

你可能感兴趣的:(iOS swift 2.2 拒绝2.23 - Apps must follow the iOS Data Storage Guidelines or they will be rejected)