標籤: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