iOS 5.1的Web存储方式改变会影响到Web App吗?

ClassRaito 2012-05-09

比如,这一款App看起来正受着影响:

iOS 5.1的Web存储方式改变会影响到Web App吗?

其他的开发者表示:

“我收集的统计数据表明,用户经常因为App每次打开之后,之前的设置常常被删除,而抛弃一款App。这其实是一个相当致命的错误,应该被马上纠正。而且不要忘了,开发者纠正以后,到Apple允许新版本上架,还有段时间要等。”

准确地说,WebKit被用于存储本地数据文件到Library/Webkit中。Library/Webkit这个存储目录在过去被操作系统看做是永久的,并且备份于iCloud中。而iOS5.1中,数据被存储于Library/Caches中,这意味着这都被当成了临时数据,并有可能被删除。W3C的候选意见,对localStorage给出的评价是(原文点击这里):

“用户代理应该将本地存储中的数据分散开,这是基于安全性的考虑,或者在用户需要他们这么做时他们应该如此。”

一个嵌入式浏览器和传统Web浏览器并不完全一样。如果你在Webkit中用SQLite,那这将不包含在W3CHTML5API中,因为这些API已不再提供WebSQL。

这个问题的复杂性在于,还会存在一个Bug(详情点击这里),它导致升级App至新版本之后数据的丢失。还有其他问题存在于目前的WebApp,以及应用了嵌入式UIWebView的App中。

PhoneGap在这个问题上是有一定弹性的。因为它可以调用本地API,这将在可能出现问题时继续工作。不过不好的情况是,代码会因此更针对特定平台,而破坏其跨平台性。

从Apple开发者论坛上在iOS5.1的beta版发布期间的讨论,可以看出Apple已经意识到这个问题,但正式版发布时仍没得到解决。这给我们的感觉是,Apple似乎恼怒于众多的App(无论Web还是本地)运用Web存储来加速,而不是仅用来存储用户创建的内容。Apple觉得,这是在给iOS设备上本来就捉襟见肘的存储空间施加更大压力。

想扩大一部iPad或者iPhone的存储空间,除了花更多的钱再买一部,我们都知道别无他法。

这的确是个问题。不过你不能否认的是,Apple认为PhoneGap一类的开发工具,或者体验接近本地App的WebApp,这对于Apple而言某种程度绕过了它的商业开发体系,而它绝对不鼓励这么做。Apple更喜欢的还是完全采用iOSSDK开发的App。

Apple从真正意义上的本地App受益,这导致了Apple平台常显出一定程度的排他性。而且App只能从AppStore上获得,同时Apple从中抽取一定比例费用。

官方的iOS数据存储指南可以点击这里获得。

文章发表于2012年4月1日。

原文作者TimAnderson,著名IT自由记者。

相关推荐