iOS swift 2 2 拒絕2 23 Apps must follow the iOS Data Storage Guideline

liangtongzhuo發表於2017-12-14

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音樂

相關文章