2012-01-11 34 views
7

我們正在將數據存儲到應用程序的Document目錄中,並且我們拒絕了應用程序。我們已經嘗試使用「不備份」屬性來存儲具有以下代碼的當前版本的數據。由於未遵循iOS數據存儲指南而拒絕應用程序

- (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; 

} 

我們根據iOS數據存儲指南使用了它。

在早期版本中,我們也嘗試將數據存儲在私人目錄中。但是,我們無法獲得申請的批准。

您能否介紹一下我們爲什麼無法獲得應用程序的批准?或者,我們還需要對數據存儲進行其他更改嗎?所以,我們可以獲得批准,並且我們已經在iTunes上推出了新版本的應用程序。

+7

你究竟存儲什麼,爲什麼?緩存項目應放入Caches目錄中,任何用戶創建的數據應存儲在Documents中,其他內容應位於Application捆綁包或tmp目錄中。 – Jasarien 2012-01-11 11:05:12

+0

感謝您的意見。我有大型的數據庫文件,並保存單詞的聲音文件。我首先嚐試保存文檔,然後嘗試使用「不備份」屬性。那麼,你能告訴我應該怎麼做批准申請嗎? – 2012-01-12 10:04:44

回答

6

我認爲@ Jasarien的評論是正確的答案,但沒有進一步的通訊,這個問題是相對較新的,所以我會擴大。

給別人看的拒絕你:

iOS的數據存儲準則規定:

  1. 只有文件和其他數據是用戶生成的,或者不能以其他方式重建通過您的應用程序,應存儲在/ Documents目錄中,並將自動由iCloud進行備份。

  2. 可以再次下載或重新下載的數據應存儲在/ Library/Caches目錄中。您應該放入Caches目錄中的文件示例包括數據庫緩存文件和可下載內容(如雜誌,報紙和地圖應用程序使用的內容)。

  3. 僅臨時使用的數據應存儲在/ tmp目錄中。雖然這些文件沒有備份到iCloud,但請記住在完成這些文件後刪除這些文件,以便它們不會繼續佔用用戶設備上的空間。

  4. 使用「不備份」屬性來指定應保留在設備上的文件,即使在存儲量低的情況下也是如此。將此屬性與可重新創建的數據一起使用,但即使在存儲情況較少的情況下也需要持續保存,以便您的應用正常運行,或者因爲客戶希望在脫機使用期間可以使用該數據。此屬性適用於標記的文件,而不管它們在哪個目錄中,包括Documents目錄。這些文件不會被清除,也不會被包含在用戶的iCloud或iTunes備份中。由於這些文件都使用設備上的存儲空間,你的應用程序是負責監測和定期清除這些文件。」

例如,只有用戶創建的使用你的應用程序,例如,文檔,新文件的內容,編輯等可以存儲在/ Documents目錄中 - 並由iCloud備份。

應用程序使用的臨時文件應該只存儲在/ tmp目錄中;請記得刪除存儲在這個文件中的文件當用戶退出應用程序時的位置

可以重新創建的數據,但必須堅持正常運行您的應用程序 - 或者因爲客戶期望它可供離線使用 - 應標記爲「不備份」屬性。有關更多信息,請參閱技術問答Q & A 1719:如何防止將文件備份到iCloud和iTunes?

所以,我明白你爲什麼會用「不備份」,並期望得到遵守,但我認爲像@Jasarien說 - 他們對你意味着移動到多個離散的目錄,如高速緩存或臨時。

實際上肯定會通過審覈的是切換到核心數據和使用內部SQLite - 但這可能是太多的工作。

所以包裹起來 - 如何保存到緩存或TMP後 - Where to save files in iOS 5 applications? (實際上,也許這是一個......的所有副本: - /)

GL! 俄德

- 編輯 -

另一個好後: https://stackoverflow.com/questions/8164868/ios-data-storage-guidelines-available-since-when

- 編輯#2 -

而另一個好帖子: iOS 5 does not allow to store downloaded data in Documents directory?

想我應該我剛剛指出了重複... :)

相關問題