簡體   English   中英

我應該在iOS上的哪個目錄中存儲分析數據?

[英]What directory should I store analytics data in on iOS?

我正在嘗試存儲在本地保存的有關用戶操作的分析數據,以便以后在用戶具有Internet連接時可以上載。 我希望將數據存儲在本地,並且在正常情況下在應用程序的后續打開之間不刪除數據。 我不希望數據同步到iCloud。 理想情況下,我還希望在兩次更新之間保留數據。 如果在空間不足的情況下刪除了數據,那就很好了。

我從不同的來源那里得到了關於將數據存儲在NSCachesDirectory或NSLibraryDirectory中的不同答案。 注意NSCachesDirectory是NSLibraryDirectory的子目錄,例如。 文件系統看起來像Application_Home / Library / Caches /。

根據官方文檔: http : //developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuning.html#//apple_ref/doc/uid/TP40007072-CH8-SW9暗示我應該使用NSCachesDirectory來存儲數據,並且在大多數情況下不會刪除它。 這也意味着NSLibraryDirectory已同步到iCloud。

根據這些答案: 如何在iPhone上獲得可寫路徑? https: //stackoverflow.com/a/5444762/340520/何時從NSCachesDirectory中刪除文件? ,因此在應用程序更新和要求我必須不斷重新創建NSCachesDirectory之間不會保留NSCachesDirectory。 第一個答案還暗示NSLibraryDirectory是存儲數據的最佳位置。 但是這些答案已有兩年歷史了。

根據文檔和此答案: http : //developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuning.html#//apple_ref/doc/uid/TP40007072-CH8-SW10https ://stackoverflow.com/a/8830746/340520,NSCachesDirectory在應用程序更新之間保留。

Localytics的iOS SDK將其數據存儲在NSCachesDirectory中: https : //github.com/twobitlabs/Localytics-iOS/blob/master/src/LocalyticsDatabase.m Mixpanel的iOS SDK將其數據存儲在NSLibraryDirectory中: https : //github.com/ mixpanel / mixpanel-iphone / blob / master / Mixpanel / Mixpanel.m

在所有這些來源之間,我一直傾向於使用NSCachesDirectory,但我不確定在某些情況下不會定期刪除數據。

NSCachesDirectory是存儲永久性信息的錯誤位置,您在整個應用程序啟動甚至設備重新啟動時都需要這些信息。

為了證明我的觀點,嘗試一下...

  1. 獲取僅具有8GB磁盤空間的iPhone設備。
  2. 使用您的應用程序在NSCachesDirectory中寫入文件。
  3. 開始下載隨機應用程序以填充磁盤空間。 很快您將看到操作系統顯示的“存儲限制”對話框。
  4. 現在,只需重新啟動手機,啟動應用程序,看看是否可以找到您編寫的文件。

如果是第一次找到該文件,請重試該實驗,您會發現文件丟失。 在設備啟動期間,如果看到設備日志,則會注意到日志,指示清除目錄以騰出空間等。

使用NSCachesDirectory存儲可以繼續從服務器下載的信息。 不是您需要上傳到服務器的信息。

緩存目錄僅應用於您的應用刪除后即可輕松替換的文件。 在應用程序更新期間以及如果設備存儲空間不足的情況下,可能會清除或可能不會清除Caches目錄。 僅將其用於臨時文件或可以輕松替換的文件。

我的第一個選擇是Library/Application Support目錄( NSApplicationSupportDirectory )。 請注意,默認情況下未創建此目錄。 您的應用必須在首次啟動時創建它。 此路徑在應用程序更新過程中(與大多數應用程序沙箱一樣)保留,並通過iTunes(或iCloud)設備備份進行備份。

我認為最好的地方是Library/Application Support (NSApplicationSupportDirectory)請參閱如何防止文件備份到iCloud和iTunes? 有關詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM