开发者应对iOS 5限制本地存储的非官方指南

标签: 开发 ios 限制 | 发表时间:2011-10-29 22:36 | 作者:投稿 (guest) 云飞风起
出处:http://www.williamlong.info/

  众所周知,由于 iOS 5 新增的机制,在设备容量空间不足的情况下系统会自动清除高速缓存文件或临时目录的内容,迫使开发者将应用存储的数据最小化。

  在 iOS 5 系统中,那些涉及到离线工作、需要用到本地存储的应用都会有相同的问题。很多的果迷热衷于使用这一类应用,尤其是在那些没有 Wi-Fi 网络的地方(地铁、飞机)。如果某一天你安装了一些很大的应用或者同步了大量的图书、音乐,这时候系统的自动清除机制被激活,随之而来的问题就是,你在地铁里、飞机上想要打发时间的时候突然发现找不到之前下载好的一些离线数据了。(如果对此还不清楚,可以看看这篇文章。)

  苹果设计这个机制的初衷是为了保护好的用户体验,但是现在看来,苹果设计师还没有考虑得万分周全(或者是用户和开发者暂时还不能接受这种“激进”做法)。

  作为开发者,现在要让苹果提供另外一个可以存储离线下载数据的文件夹已经不可能了,但是假如有足够的开发者向苹果表明他们确实需要这样一个文件夹来存储一些数据,我想在将来的版本当中,这种欠妥当情况也许会出现改善。

开发者应对iOS 5限制本地存储的非官方指南

  开发者应该怎么做?

  如果 APP 目前是把文件存储在 Documents 文件夹

  现在它在 iOS 5 中运行是不会有任何问题出现的,只是用户可能会抱怨 iCloud 备份了太多数据,浪费时间和存储空间。

  但是当你的应用下次更新时,很可能会被苹果应用审核团队以在 Documents 文件夹存储太多数据为由拒绝,这绝对会是让你头疼的事情。

  如果 APP 目前已经(或打算)把文件存储在 Caches 目录

  请确保你的应用能漂亮的处理任何存储在 Caches 目录里的文件(被)消失的情况,一种解决这个问题的办法是创建一份应用存储在 Caches 目录里的文件的 URL(统一资源定位符) 列表。

  显然开发者要把这个列表文件存储在一个更持久的不同地方。可以在应用启动时检查一下列表中的文件是否还呆在那里。如果发现有任何文件丢失,可以弹出提示框告知用户这个情况,然后询问是否重新下载。当然如果设备是离线状态,你的任何道歉和解释都将被认为是白痴行为。

  要考虑到实际情况可能更复杂,比如有时候只有部分数据仍然有效,你需要决定怎么和多少提示需要显示。

  迁移现有的数据

  如果你打算更新应用,把数据存储在 Caches 目录里,以适应苹果 iOS 5/iCloud 的新规则,那么你可能会需要把原来存储在 Documents 目录里面的文件迁移到 Caches 目录。可以肯定,Apple 的应用审核团队不会对此进行测试,因为他们不会有你旧版本存储有数据的应用,所以,选择迁移数据可能是个正确的选择。

  记住不要在应用启动时在主线程里面做大量数据迁移的工作,因为这可能会引起“启动时间看门狗”的注意,并被它终结掉。

  提早警告用户

  当应用运行时,你可以经过用户设备存储空间不足,这种警告并不会改变文件被清除的命运,但至少可以让更多的人知道这个问题的存在,从而引起苹果的注意。

  让苹果知道这是个大问题

  向苹果相关人员提交漏洞报告,或者疯狂的在twitter、微博、博客里面抱怨,或者像中国的网店主一样到淘宝公司门口举牌抗议,更可以学习华尔街事件的做法(不建议)。

  用户应该怎么做?

  知道现在,存储了大量数据的应用在备份时都是个大麻烦,因为 iTunes 备份进程不得不运行很长一段时间,特别是我们确实有那么多有用的数据需要备份的时候。

  在 iCloud 备份过程中,用户可能不愿意使用免费的 5 GB 标配空间来备份他们认为不重要的数据(当然更不愿意付费购买额外空间),这是用户可以设置关闭某个应用的 iCloud 备份。设置的具体路径在:

iCloud > Storage & Backup > Manage Storage > Backups

  根据上面的路径进入设置界面,可以选择 开启/关闭 每个应用的 iCloud 备份,并不是每一个用户都会知道有这么个设置功能,所以可以在程序帮助文档、支持邮件中说明,或者,还是用老办法,弹出一个漂亮的提示框,告知用户这一切。当然,这好像是苹果应该做的事情。

  最后,想说的是,苹果推出了新机制,大部分总是以用户体验更好为初衷的,但是限制本地存储的新机制或许对部分用户和开发者都存在欠妥的地方,本文只是应对 iOS 5 限制本地存储的非官方指南,希望文中没有提供有害的建议,仅供参考。

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

评论《开发者应对iOS 5限制本地存储的非官方指南》的内容...

找不到相关文章,请发表留言

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

相关 [开发 ios 限制] 推荐:

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

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

开发者应对iOS 5限制本地存储的非官方指南

- 云飞风起 - 月光博客
  众所周知,由于 iOS 5 新增的机制,在设备容量空间不足的情况下系统会自动清除高速缓存文件或临时目录的内容,迫使开发者将应用存储的数据最小化.   在 iOS 5 系统中,那些涉及到离线工作、需要用到本地存储的应用都会有相同的问题. 很多的果迷热衷于使用这一类应用,尤其是在那些没有 Wi-Fi 网络的地方(地铁、飞机).

iOS开发资源

- - Starming星光社最新更新
iOS App UI 欣赏、分享精美的App界面设计. iOS代码实例搜索、iOS特效示例、iOS代码例子下载. 以web的形式提供iOS UI设计的素材,你可以在web上拖动一些控件做出简单的ios 应用效果,并且生成一个URL,能分享给其他人. 一款 Photoshop 插件,由 UI Parade 推出的一款针对iOS UI 的设计工具,设计师动动鼠标即可制作精美的 iOS 应用原型.

iOS MDM开发流程

- - CSDN博客移动开发推荐文章
一年前曾参与过中石油的一个移动平台项目,实现了通过MDM对iOS设备进行管理. 由于苹果对于mdm这块的接口及开发流程只向几个合作伙伴进行了分享,并没有对具体实现的文档进行公开,所以这方面的资料非常少. 现在把实现的过程分享给大家,希望能对大家有所帮助. MDM的全称是Mobile Device Management,是企业IT 向移动互联网过渡的平台技术,帮助企业将IT管理能力从传统的 PC 延伸到移动设备甚至 移动应用APP.

iOS App开发那些事

- - IT江湖
自从做Team Leader之后,身上权责发生了变化,于是让我烦恼的不再是具体某个功能,某个界面的实现,而是如何在现有代码的基础上做渐进式的改进,创造出比较合适规范和框架,使得组内成员更快更好地完成任务. 一年下来,颇有点想法,于是啰嗦几句关于iOS App开发的那些事. 首先明确一点,合适的人是指纯技术团队的建设.

iOS 开发笔记-andriod/java/iOS三方AES通用加密 - jiangys

- - 博客园_首页
AES在线加解密验证工具:  http://www.seacha.com/tools/aes.html. AES加密有多种算法模式,下面提供两套模式的可用源码. 将数据进行Base64解码. 一、CBC(Cipher Block Chaining,加密块链)模式. 是一种循环模式,前一个分组的密文和当前分组的明文异或操作后再加密,这样做的目的是增强破解难度..

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

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

从互动广告到iOS开发

- - Kevin Cao's Blog
一年以前,我还在做各种Flash网站,而现在却是拥有一间小 工作室的iOS独立开发者. 从互动广告行业转型到移动互联网,也许也是正在阅读本文的你心中的一点小念头. 即便你仍然打算奋斗在互动广告行业,对移动互联网带来的冲击也不可能置身事外. 移动互联网,正在真真切切的改变我们每一个人的生活,对你我正在从事的事业,都不能例外.

困难重重的iOS开发现状

- - CocoaChina移动观察
文/ Chris Buffa ( gamesindustry). 2012年2月将会因为“林来疯(Linsanity)”的出现而被历史永远铭记. 虽然之前一直面临被球队裁掉的窘境,但NBA纽约尼克斯队的得分后卫林书豪在今年2月4日对阵新泽西网队的一场比赛中全面爆发,随后带领球队取得了一连串的胜利,如今,林书豪已经成为全世界家喻户晓的篮球明星.

IOS上objective-c开发调试方法

- - 瞄的技术
常用总结,陆续补充,免得忘记. 1.如果问题是可以复现的,用Breakpoint可以跟踪出错位置在进行分析. 2.如果使用Breakpoint无法查出crash问题,问题无法复现,可以用profile记录运行过程中的内存,cpu使用,看是否在某一功能突然升高,不稳定. 3.可以通过将所有的NSLOG控制台输出截获到文件输出,在真机上运行来排查在模拟器上无法复现的问题.