[ios2]苹果iOS 5限制应用本地存储问题 【转】
蘋果?iOS 5?系統(tǒng)增加了一個新的機(jī)制——在設(shè)備容量空間不足的情況下自動清除高速緩存文件或臨時目錄的內(nèi)容。這意味著,如果你設(shè)備的容量快到極限了,應(yīng)用存儲的很多離線內(nèi)容,包括文章、雜志、圖書、漫畫以及其他數(shù)據(jù)都將被清空!如果用戶需要,將不得不重新下載這些內(nèi)容。
關(guān)于蘋果 iOS 5 的這次“變革”,困擾了不少開發(fā)者。新規(guī)則實施之后,用戶想使用離線數(shù)據(jù)將會有很多困難,而且也有開發(fā)者反應(yīng)他們的應(yīng)用通不過蘋果應(yīng)用審核團(tuán)隊的審核。關(guān) 于這次更新的討論非常“火熱”,當(dāng)然也是相當(dāng)雜亂,因為其中參雜了好幾個問題,簡單的歸納就是:
下面我們來分開討論以上5個問題:
1.緩存和臨時文件夾的語義問題
雖然蘋果應(yīng)用使用的臨時文件夾同跟目錄下的 /tmp 并非同一個文件夾,但是開發(fā)者不應(yīng)該認(rèn)為它們有什么顯著的差別,他們都是臨時文件夾,所以性質(zhì)相同。如果你有過 OS X 、Unix 或 Linux 背景,你應(yīng)該能理解,蘋果其實沒有義務(wù)向用戶保證緩存和臨時文件到底能保存多久。
即使你以前從來沒有聽說過臨時文件夾和緩存文件夾里面的東西會被系統(tǒng)刪除這種情況,也不代表這個情況將來會有所改善,特別是蘋果已經(jīng)在文件中申明這些。
2.蘋果相關(guān)文件的變化
最晚到2011年6月29日的時候,iOS發(fā)布之前,蘋果的文件(web.archive.org存檔,被墻)中涉及到<Application_Home>/Documents? 的部分是這樣描述的:
Use this directory to store user documents and application data files.
使用這個文件夾來存儲用戶文件和應(yīng)用數(shù)據(jù)文件。
這個說明相當(dāng)容易理解,這也很清楚的說明了為什么開發(fā)者對 iOS 5 中文件目錄規(guī)則的改變不滿。
關(guān)于<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.
使用這個文件夾來寫應(yīng)用在運行期間和更新期間需要用到的任何文件。你的應(yīng)用必須負(fù)責(zé)好添加和刪除這些文件。而且這些文件應(yīng)該是可以被重建的,因為 iTunes 會在還原設(shè)備備份的時候刪除這些文件。
這段說明中的措詞,不可否認(rèn)是比較模糊的。讀這段說明的時候我的第一印象就是蘋果在 iOS 5 中實施了一些與本條款相矛盾的根本性改變。但換個角度來說,通過”generally” 和 “able to re-create” 這些字眼,可以明顯看出蘋果基本上就是在警告開發(fā)者系統(tǒng)將怎么對待這些文件了。
iCloud 數(shù)據(jù)存儲準(zhǔn)則(需登錄查看) 這樣說明:
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.
譯者:為了保證數(shù)據(jù)備份的可能性和有效性,請確保你的應(yīng)用數(shù)據(jù)符合以下規(guī)則:
1.只有用戶生成的文件、其他數(shù)據(jù)及其他程序不能重新創(chuàng)建的文件,應(yīng)該保存在<Application_Home>/Documents 目錄下面,并將通過iCloud自動備份。
2.可以重新下載或者重新生成的數(shù)據(jù)應(yīng)該保存在 <Application_Home>/Library/Caches 目錄下面。舉個例子,比如雜志、新聞、地圖應(yīng)用使用的數(shù)據(jù)庫緩存文件和可下載內(nèi)容應(yīng)該保存到這個文件夾。
3.只是臨時使用的數(shù)據(jù)應(yīng)該保存到 <Application_Home>/tmp 文件夾。盡管 iCloud 不會備份這些文件,但在應(yīng)用在使用完這些數(shù)據(jù)之后要注意隨時刪除,避免占用用戶設(shè)備的空間。
如果我們暫時暫時忘記很多新聞、雜志、地圖應(yīng)用的唯一目的就是顯示離線內(nèi)容這個事實的話,以上條款還是相當(dāng)清楚和有意義的。
3.應(yīng)用審核被拒
最近不斷有開發(fā)者反應(yīng)在 Documents 文件夾存儲 “任何/一些/很多”(any/some/much) 數(shù)據(jù)的應(yīng)用被蘋果的應(yīng)用審核團(tuán)隊拒絕。但有些開發(fā)者已經(jīng)成功地向應(yīng)用審核團(tuán)隊解釋他們的應(yīng)用存儲文件的原理,并表明他們的應(yīng)用是完全遵守開發(fā)規(guī)則的。
現(xiàn)在看來,蘋果應(yīng)用審核團(tuán)隊也并沒有十足的把握判斷到底哪些文件夾中存儲的哪些數(shù)據(jù)是用戶生成的,而哪些數(shù)據(jù)又是可以重新下載和重新生成的。
4.iTunes 和 iCloud 到底備份了哪些內(nèi)容
應(yīng)用文件夾所有內(nèi)容都會備份,除了:
- 應(yīng)用程序本身bundle(.app)
- < Application_Home>/tmp
- < Application_Home>/Library/Caches directory
這在iCloud 數(shù)據(jù)存儲準(zhǔn)則中有很清楚的說明。
其他的文件也清楚的申明了,應(yīng)用程序支持文件夾也會被iTunes備份。在討論中一些開發(fā)者建議應(yīng)用支持文件夾應(yīng)該比緩存文 件夾更安全點(更持久點)。在我看來,自從iCloud 存儲推出以來,蘋果應(yīng)用審核團(tuán)隊將會重點打擊那些需要存儲大量應(yīng)用支持文件在Documents 文件夾中的應(yīng)用。
5.iOS 5 的行為變化
在 iOS 5 設(shè)備中,當(dāng)用戶收到存儲空間不足的警告時,如果此時應(yīng)用沒有運行,那么該應(yīng)用的 <Application_Home>/Library/Caches文件夾中的數(shù)據(jù)將被清空。
這意味著在 iOS 5 中應(yīng)用將沒有任何文件夾可以存儲以下文件:
- 沒有備份到iTunes/iCloud的文件
- 刪除不會帶來危險的文件
顯然,現(xiàn)在要讓 iOS 5.0 給開發(fā)者有一個文件夾存放文件已經(jīng)不可能了,但是假如有足夠的開發(fā)者向蘋果表明他們確實需要這樣一個文件夾來存儲一些數(shù)據(jù),我想在將來的版本當(dāng)中,也許會出現(xiàn)改善。
給開發(fā)者的建議:趕緊給蘋果提交漏洞報告!
原文作者:Our4.org,原文鏈接。
轉(zhuǎn)載于:https://www.cnblogs.com/jinjiantong/p/3213586.html
總結(jié)
以上是生活随笔為你收集整理的[ios2]苹果iOS 5限制应用本地存储问题 【转】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 2444
- 下一篇: Poj 2503 Babelfish(M