苹果iOS 5限制应用本地存储问题

标签: 苹果 ios 限制 | 发表时间:2011-10-28 10:51 | 作者:投稿 (guest) linsen
出处:http://www.williamlong.info/

  苹果 iOS 5 系统增加了一个新的机制——在设备容量空间不足的情况下自动清除高速缓存文件或临时目录的内容。这意味着,如果你设备的容量快到极限了,应用存储的很多离线内容,包括文章、杂志、图书、漫画以及其他数据都将被清空!如果用户需要,将不得不重新下载这些内容。

  关于苹果 iOS 5 的这次“变革”,困扰了不少开发者。新规则实施之后,用户想使用离线数据将会有很多困难,而且也有开发者反应他们的应用通不过苹果应用审核团队的审核。关于这次更新的讨论非常“火热”,当然也是相当杂乱,因为其中参杂了好几个问题,简单的归纳就是:

  1. 缓存和临时文件夹的语义问题
  2. 苹果相关文件的变化
  3. 应用审核被拒
  4. iTunes 和 iCloud 到底备份了哪些内容
  5. iOS 5 行为变化

苹果iOS 5限制应用本地存储问题

  下面我们来分开讨论以上5个问题:

  1.缓存和临时文件夹的语义问题

  虽然苹果应用使用的临时文件夹同跟目录下的 /tmp 并非同一个文件夹,但是开发者不应该认为它们有什么显著的差别,他们都是临时文件夹,所以性质相同。如果你有过 OS X 、Unix 或 Linux 背景,你应该能理解,苹果其实没有义务向用户保证缓存和临时文件到底能保存多久。

  即使你以前从来没有听说过临时文件夹和缓存文件夹里面的东西会被系统删除这种情况,也不代表这个情况将来会有所改善,特别是苹果已经在文件中申明这些。

  2.苹果相关文件的变化

  最晚到2011年6月29日的时候,iOS发布之前,苹果的文件(web.archive.org存档,被墙)中涉及到<Application_Home>/Documents 的部分是这样描述的:

Use this directory to store user documents and application data files.

使用这个文件夹来存储用户文件和应用数据文件。

  这个说明相当容易理解,这也很清楚的说明了为什么开发者对 iOS 5 中文件目录规则的改变不满。

  关于<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” 这些字眼,可以明显看出苹果基本上就是在警告开发者系统将怎么对待这些文件了。

  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.

译者:为了保证数据备份的可能性和有效性,请确保你的应用数据符合以下规则:

1.只有用户生成的文件、其他数据及其他程序不能重新创建的文件,应该保存在<Application_Home>/Documents 目录下面,并将通过iCloud自动备份。

  2.可以重新下载或者重新生成的数据应该保存在 <Application_Home>/Library/Caches 目录下面。举个例子,比如杂志、新闻、地图应用使用的数据库缓存文件和可下载内容应该保存到这个文件夹。

  3.只是临时使用的数据应该保存到 <Application_Home>/tmp 文件夹。尽管 iCloud 不会备份这些文件,但在应用在使用完这些数据之后要注意随时删除,避免占用用户设备的空间。

  如果我们暂时暂时忘记很多新闻、杂志、地图应用的唯一目的就是显示离线内容这个事实的话,以上条款还是相当清楚和有意义的。

  3.应用审核被拒

  最近不断有开发者反应在 Documents 文件夹存储 “任何/一些/很多”(any/some/much) 数据的应用被苹果的应用审核团队拒绝。但有些开发者已经成功地向应用审核团队解释他们的应用存储文件的原理,并表明他们的应用是完全遵守开发规则的。

  现在看来,苹果应用审核团队也并没有十足的把握判断到底哪些文件夹中存储的哪些数据是用户生成的,而哪些数据又是可以重新下载和重新生成的。

  4.iTunes 和 iCloud 到底备份了哪些内容

  应用文件夹所有内容都会备份,除了:

  • 应用程序本身bundle(.app)
  • <Application_Home>/tmp
  • <Application_Home>/Library/Caches directory

  这在iCloud 数据存储准则中有很清楚的说明。

  其他的文件也清楚的申明了,应用程序支持文件夹也会被iTunes备份。在讨论中一些开发者建议应用支持文件夹应该比缓存文件夹更安全点(更持久点)。在我看来,自从iCloud 存储推出以来,苹果应用审核团队将会重点打击那些需要存储大量应用支持文件在Documents 文件夹中的应用。

  5.iOS 5 的行为变化

  在 iOS 5 设备中,当用户收到存储空间不足的警告时,如果此时应用没有运行,那么该应用的 <Application_Home>/Library/Caches文件夹中的数据将被清空。

  这意味着在 iOS 5 中应用将没有任何文件夹可以存储以下文件:

  • 没有备份到iTunes/iCloud的文件
  • 删除不会带来危险的文件

  显然,现在要让 iOS 5.0 给开发者有一个文件夹存放文件已经不可能了,但是假如有足够的开发者向苹果表明他们确实需要这样一个文件夹来存储一些数据,我想在将来的版本当中,也许会出现改善。

  给开发者的建议:赶紧给苹果提交漏洞报告

  原文作者:Our4.org,原文链接

评论《苹果iOS 5限制应用本地存储问题》的内容...

相关文章:

统计
关于我们: 地址 - www.williamlong.info - 谷歌阅读器 - 新浪微博 - 腾讯微博
月光博客投稿信箱:williamlong.info(at)gmail.com

相关 [苹果 ios 限制] 推荐:

苹果iOS 5限制应用本地存储问题

- linsen - 月光博客
  苹果 iOS 5 系统增加了一个新的机制——在设备容量空间不足的情况下自动清除高速缓存文件或临时目录的内容. 这意味着,如果你设备的容量快到极限了,应用存储的很多离线内容,包括文章、杂志、图书、漫画以及其他数据都将被清空. 如果用户需要,将不得不重新下载这些内容.   关于苹果 iOS 5 的这次“变革”,困扰了不少开发者.

苹果暗渡陈仓:BootCamp for iOS 现身

- 小白 - 爱范儿 · Beats of Bits
iOS 无疑是苹果的骄傲,以苹果的心气而言,自然是不可能看得上别的手机操作系统的. 但是,在巨大的市场和潜在竞争对手面前,选择兼容并包,有容乃大,也不失为一个高明的手法. 就好象当初苹果在 MAC 上推出 BootCamp 使得“窗户”也可以运行在苹果电脑上一样,现在苹果又打算在手机市场故伎重演了.

苹果iOS遭破解 可运行Linux

- Jerry Hou - cnBeta.COM
在可以运行Android的惠普TouchPad于日前出现在eBay拍卖网站上之后,苹果运行iOS的设备遭到破解就变成仅是时间上的问题而已. 消息指出,Droid计划成员Patrick Wildt与Ricky Taylor已经成功破解苹果的移动设备,让它们可以运行Linux,也即这套操作系统将可在iPad、iPhone或第四代iPod Touch上运行.

苹果iOS 5的八大缺陷

- 阿邪 - 月光博客
  上周iOS 5发布之后受到获得强烈的反响,最新iOS 5为iPad、iPhone、iPod touch提供200多项新功能,12项重点升级. 然而“金无赤金,人无完人”,iOS 5还是有一些令人不爽的缺陷,虽然不知名,但还是希望苹果能尽快解决. 现在就盘点一下它的缺点,看看大家有没有其他的方法解决.

苹果IOS APP 通关秘籍

- - CSDN博客推荐文章
作为手机应用开发者,你需要向应用商店提交应用审核,迅速通过审核可以让你抢占先机. 对苹果iOS应用开发者来说尤其如此. 苹果应用商店的审核近乎吹毛求疵,下面这些清单可以让你知道苹果会在哪些地方找茬. 不能导致手机故障(比如崩溃或屏幕问题). 长时间/过度使用之后反应仍然很快. 应用内的所有价格信息中不能用固定值代替可变变量.

苹果正式放出iOS 6更新

- - 36氪
今天凌晨,苹果悄然放出了iOS 6. 也许是考虑到服务器承受能力有限,目前的更新正在逐步放出,因此如果你无法更新的话,试着多刷几次. 更新的方式有两种:可以选择通过iTunes来进行更新,如果你装了iOS 5,也可以直接在设置菜单中进行无线升级. 因为 iOS 6 的更新是基于 iOS 5 基础上的一次升级,不需要彻头彻尾地重新安装.

开发者抱怨 iOS 5 限制应用本地存储

- 丁丁 - Solidot
tbw 写道 "苹果 iOS 5 系统增加了一个新的机制——在设备容量空间不足的情况下自动清除高速缓存文件或临时目录的内容. 这意味着,如果你设备的容量快到极限了,应用存储的很多离线内容,包括文章、杂志、图书、漫画以及其他数据都将被清空. 如果用户需要,将不得不重新下载这些内容. 关于苹果 iOS 5 的这次“变革”,困扰了不少开发者.

苹果IOS 4.2.1越狱工具Greenpois0n WIN版发布

- 小猫 - Engadget 中国版
对于那些还在为自己的IOS 4.2.1系统无法越狱的同学来说,这个春节最大的礼物是可以完美越狱了,看了一下淘宝的IP4售价,依然坚挺无比,要越狱的同学可以去下载了. 下载地址在这里,不过最好是看了教程再动手. 引用来源 | 此文章网址 | 转寄此文章 | 回应.

更多证据显示苹果将把LTE引入iOS

- 茫茫 - cnBeta.COM
周六一份文件名为LTE.plist的配置文件在iOS测试版本代码中出现,这被认为是苹果开始了LTE的支持度研究工作,虽然2012年以前发布的下一代的iPhone设备可能并不支持它(HSPA+的可能性较大). 另一方面,苹果已经开始招聘LTE专业人员,以为4G的长期进化做准备.

苹果将在iOS 5中弃用唯一设备标识符

- xing - cnBeta.COM
据美国科技新闻网站TechCrunch报道,苹果对iOS 5 Beta 6的文档进行了更新,表示将逐步移除iOS设备的唯一设备标识符(unique device identifier),简称UDID. 许多应用和移动广告网络使用UDID来追踪用户的情况和动作. 苹果取消UDID意味着,应用发布者需要创建自己的UDID,以前积累的用户数据没用了.