[ios2]苹果iOS 5限制应用本地存储问题 【转】
蘋果?iOS 5?系統(tǒng)增加了一個新的機制——在設備容量空間不足的情況下自動清除高速緩存文件或臨時目錄的內容。這意味著,如果你設備的容量快到極限了,應用存儲的很多離線內容,包括文章、雜志、圖書、漫畫以及其他數據都將被清空!如果用戶需要,將不得不重新下載這些內容。
關于蘋果 iOS 5 的這次“變革”,困擾了不少開發(fā)者。新規(guī)則實施之后,用戶想使用離線數據將會有很多困難,而且也有開發(fā)者反應他們的應用通不過蘋果應用審核團隊的審核。關 于這次更新的討論非常“火熱”,當然也是相當雜亂,因為其中參雜了好幾個問題,簡單的歸納就是:
下面我們來分開討論以上5個問題:
1.緩存和臨時文件夾的語義問題
雖然蘋果應用使用的臨時文件夾同跟目錄下的 /tmp 并非同一個文件夾,但是開發(fā)者不應該認為它們有什么顯著的差別,他們都是臨時文件夾,所以性質相同。如果你有過 OS X 、Unix 或 Linux 背景,你應該能理解,蘋果其實沒有義務向用戶保證緩存和臨時文件到底能保存多久。
即使你以前從來沒有聽說過臨時文件夾和緩存文件夾里面的東西會被系統(tǒng)刪除這種情況,也不代表這個情況將來會有所改善,特別是蘋果已經在文件中申明這些。
2.蘋果相關文件的變化
最晚到2011年6月29日的時候,iOS發(fā)布之前,蘋果的文件(web.archive.org存檔,被墻)中涉及到<Application_Home>/Documents? 的部分是這樣描述的:
Use this directory to store user documents and application data files.
使用這個文件夾來存儲用戶文件和應用數據文件。
這個說明相當容易理解,這也很清楚的說明了為什么開發(fā)者對 iOS 5 中文件目錄規(guī)則的改變不滿。
關于<Application_Home>/Library/Caches 是這樣說明的:
Use this directory to write any application-specific support files that you want to persist between launches of the application or during application updates. Your application is generally responsible for adding and removing these files. It should also be able to re-create these files as needed because iTunes removes them during a full restoration of the device.
使用這個文件夾來寫應用在運行期間和更新期間需要用到的任何文件。你的應用必須負責好添加和刪除這些文件。而且這些文件應該是可以被重建的,因為 iTunes 會在還原設備備份的時候刪除這些文件。
這段說明中的措詞,不可否認是比較模糊的。讀這段說明的時候我的第一印象就是蘋果在 iOS 5 中實施了一些與本條款相矛盾的根本性改變。但換個角度來說,通過”generally” 和 “able to re-create” 這些字眼,可以明顯看出蘋果基本上就是在警告開發(fā)者系統(tǒng)將怎么對待這些文件了。
iCloud 數據存儲準則(需登錄查看) 這樣說明:
To ensure that backups are as efficient as possible, be sure to store your app’s data according to the following guidelines:
1. Only documents and other data that is user-generated, or that cannot otherwise be recreated by your application, should be stored in the <Application_Home>/Documents directory and will be automatically backed up by iCloud.
2. Data that can be downloaded again or regenerated should be stored in the <Application_Home>/Library/Caches directory. Examples of files you should put in the Caches directory include database cache files and downloadable content, such as that used by magazine, newspaper, and map applications.
3. Data that is used only temporarily should be stored in the <Application_Home>/tmp directory. Although these files are not backed up to iCloud, remember to delete those files when you are done with them so that they do not continue to consume space on the user’s device.
譯者:為了保證數據備份的可能性和有效性,請確保你的應用數據符合以下規(guī)則:
1.只有用戶生成的文件、其他數據及其他程序不能重新創(chuàng)建的文件,應該保存在<Application_Home>/Documents 目錄下面,并將通過iCloud自動備份。
2.可以重新下載或者重新生成的數據應該保存在 <Application_Home>/Library/Caches 目錄下面。舉個例子,比如雜志、新聞、地圖應用使用的數據庫緩存文件和可下載內容應該保存到這個文件夾。
3.只是臨時使用的數據應該保存到 <Application_Home>/tmp 文件夾。盡管 iCloud 不會備份這些文件,但在應用在使用完這些數據之后要注意隨時刪除,避免占用用戶設備的空間。
如果我們暫時暫時忘記很多新聞、雜志、地圖應用的唯一目的就是顯示離線內容這個事實的話,以上條款還是相當清楚和有意義的。
3.應用審核被拒
最近不斷有開發(fā)者反應在 Documents 文件夾存儲 “任何/一些/很多”(any/some/much) 數據的應用被蘋果的應用審核團隊拒絕。但有些開發(fā)者已經成功地向應用審核團隊解釋他們的應用存儲文件的原理,并表明他們的應用是完全遵守開發(fā)規(guī)則的。
現(xiàn)在看來,蘋果應用審核團隊也并沒有十足的把握判斷到底哪些文件夾中存儲的哪些數據是用戶生成的,而哪些數據又是可以重新下載和重新生成的。
4.iTunes 和 iCloud 到底備份了哪些內容
應用文件夾所有內容都會備份,除了:
- 應用程序本身bundle(.app)
- < Application_Home>/tmp
- < Application_Home>/Library/Caches directory
這在iCloud 數據存儲準則中有很清楚的說明。
其他的文件也清楚的申明了,應用程序支持文件夾也會被iTunes備份。在討論中一些開發(fā)者建議應用支持文件夾應該比緩存文 件夾更安全點(更持久點)。在我看來,自從iCloud 存儲推出以來,蘋果應用審核團隊將會重點打擊那些需要存儲大量應用支持文件在Documents 文件夾中的應用。
5.iOS 5 的行為變化
在 iOS 5 設備中,當用戶收到存儲空間不足的警告時,如果此時應用沒有運行,那么該應用的 <Application_Home>/Library/Caches文件夾中的數據將被清空。
這意味著在 iOS 5 中應用將沒有任何文件夾可以存儲以下文件:
- 沒有備份到iTunes/iCloud的文件
- 刪除不會帶來危險的文件
顯然,現(xiàn)在要讓 iOS 5.0 給開發(fā)者有一個文件夾存放文件已經不可能了,但是假如有足夠的開發(fā)者向蘋果表明他們確實需要這樣一個文件夾來存儲一些數據,我想在將來的版本當中,也許會出現(xiàn)改善。
給開發(fā)者的建議:趕緊給蘋果提交漏洞報告!
原文作者:Our4.org,原文鏈接。
轉載于:https://www.cnblogs.com/jinjiantong/p/3213586.html
總結
以上是生活随笔為你收集整理的[ios2]苹果iOS 5限制应用本地存储问题 【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 2444
- 下一篇: MAC地址如何在windows与unix