iOS Data Storage Guidelines 和 "do not back up"檔案屬性

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   os   

OS 5有了iCloud後,Apple更新了資料存放區指導方針,以適應於iCloud儲存,同時增加了“不要備份”檔案屬性,可以指定檔案不備份和上傳到iCloud


摘錄如下,供大家參考:


iOS 資料存放區指導方針

iCloud包括了備份,會通過Wi-Fi每天自動備份使用者iOS裝置。app的home目錄下的所有東西都會被備份,除了應用Bundle本身、緩衝目錄和temp目錄。已購買的音樂、應用、書籍、Camera Roll、裝置設定、主畫面、App組織、訊息、鈴聲也都會被備份。由於備份通過無線進行,並且為每個使用者儲存在iCloud中,應用需最小化自己儲存的資料數量。大檔案會延長備份時間,並且消耗使用者的可用iCloud空間。

為了確保備份儘可能快速高效,應用儲存資料需要遵循以下指導方針:

1. 只有那些使用者產生的文檔或其它資料,或者應用不能重新建立的資料,才應該儲存在<Application_Home>/Documents目錄下,並且會被自動備份到iCloud。

2. 可以重新下載或產生的資料,應該儲存在<Application_Home>/Library/Caches目錄。例如資料庫快取檔案、可下載檔案(雜誌、報紙、地圖應用使用的資料)等都屬於這一類。

3. 臨時使用的資料應該存放在<Application_Home>/tmp目錄。儘管這些檔案不會被iCloud備份,應用在使用完之後需要記得刪除這些檔案,這樣才不會繼續佔用使用者裝置的空間。

4. 使用"不要備份"屬性來指定那些需要保留在裝置中的檔案(即使是低儲存空間情況下)。那些能夠重建,但在低儲存空間時仍需保留,對應用正常運行有影響,或者使用者希望檔案在離線時可用的檔案,需要使用這個屬性。無論哪個目錄下的檔案(包括Documents目錄),都可以使用這個屬性。這些檔案不會被刪除,也不會包含在使用者的iCloud或iTunes備份中。由於這些檔案一直佔用著使用者裝置的儲存空間,應用有責任定期監控和刪除這些檔案。





iOS 5.0.1開始支援"do not back up"檔案屬性,允許開發人員明確地指定哪些檔案應該被備份,哪些是本機快取可以自動刪除,哪些檔案不需要備份但不能刪除。此外,對目錄設定這個屬性,會阻止備份該目錄和目錄中的所有內容。

注意"do not back up"屬性只能用於iOS 5.0.1以後版本。之前版本的應用需要儲存資料到<Application_Home>/Library/Caches目錄才能避免被備份。由於老的系統忽略這個屬性,你需要確保應用在所有iOS版本中,都遵循上面的iOS Data Storage Guidelines。

資料處理分類
com.apple.MobileBackup檔案屬性就是iOS 5.0.1引入的"do not back up"特性,用於指定檔案或目錄不需要備份(不管在檔案系統的什麼位置)。通過使用這個新的檔案屬性,並且將檔案存放在指定的目錄下,檔案可以分為以下四種資料類型:s.

關鍵資料
這些是使用者建立的資料,或其它不能重建的資料。應該存放在<Application_Home>/Documents目錄下,並且不應該標記為"do not backup"屬性。關鍵資料在低儲存空間時也會保留,而且會被iCloud或iTunes備份。

快取資料
可以重新下載或產生的資料,而且沒有這些資料也不會妨礙使用者離線使用應用的功能。快取資料應該儲存在<Application_Home>/Library/Caches目錄下。快取資料在裝置低儲存空間時可能會被刪除,iTunes或iCloud不會對其進行備份。

臨時資料
應用需要寫到本機存放區,內部使用的臨時資料,但不需要長期保留使用。臨時資料應該儲存在<Application_Home>/tmp目錄。系統可能會清空該目錄下的資料,iTunes或iCloud也不會對其進行備份。應用在不需要使用這些資料時,應該儘快地刪除臨時資料,以避免浪費使用者的儲存空間。

離線資料
可以下載,或重新建立,但使用者希望在離線時也能訪問這些資料。離線資料應該存放在<Application_Home>/Documents目錄或<Application_Home>/Library/Private Documents目錄,並標記為"do not backup"屬性。這兩個位置的資料在低儲存空間時都會保留,而"do not backup"屬性會阻止iTunes或iCloud備份。應用不再需要離線資料檔案時,應該儘快刪除,以避免浪費使用者的儲存空間。ce.


設定Do Not Backup擴充屬性
注意:"do not backup"擴充屬性可以添加到任何檔案或目錄,在舊版本的系統中也能夠設定。但舊系統仍然會備份這些檔案,一旦裝置更新到iOS 5.0.1,這些檔案會被重新正確地配置。

使用下面方法來設定"do not back up"擴充屬性。當你建立不需要備份的檔案或目錄時,向檔案寫入資料,然後調用下面方法,並傳遞一個檔案URL。

設定擴充屬性
#include <sys/xattr.h>
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
const char* filePath = [[URL path] fileSystemRepresentation];

const char* attrName = "com.apple.MobileBackup";
u_int8_t attrValue = 1;

int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
return result == 0;
}

 

 1 //設定擴充屬性 2 #include <sys/xattr.h> 3 - (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL 4 { 5 const char* filePath = [[URL path] fileSystemRepresentation]; 6   7 const char* attrName = "com.apple.MobileBackup"; 8 u_int8_t attrValue = 1; 9  10 int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);11 return result == 0;12 }

原文連結:http://www.cocoachina.com/bbs/read.php?tid=86244

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.