如何在使用Phonegap和iOS 5.1时停止删除HTML 5数据库

我正在使用phonegap为iOS创build测验样式的应用程序。 该应用程序允许用户创build然后参加测验。

目前,我正在使用一个使用phonegap API的HTML 5数据库来存储testing和结果数据。 我担心的是,当设备存储空间已满时,数据库现在可以被iOS 5.1删除。

有没有反正标记的数据库存储的WebKitcaching文件夹,以便它永远不会被删除? 如果这是不可能的,是否有任何build议,以另一种方式来存储将永远是持久的数据。

对于Webkit存储和iOS 5.1这两个问题有一个修复

  1. 存储从/ Webkit移动到/caching
  2. 在iOS 5.1下的应用更新(WebKit Bug)中,存储未调整为更新的文件夹结构

https://issues.apache.org/jira/browse/CB-330

这个解决scheme似乎比改变调用私有API的Webkit数据的位置更安全。 当应用程序运行时,使用Webkit存储位置。 在恢复或终止所有数据备份到文档文件夹。 时间戳确保旧的备份无法覆盖较新的存储数据(如果应用程序崩溃…)。

最好的:在iOS版本较旧的版本中,使用带有修复程序的应用程序,在iOS更新的情况下不会遭受损失。 这就是为什么不应该等待…

是的,可惜的是苹果在iOS5.1中做到了这一点

可以改变调用私有API的WebKit数据的位置。 您应该能够将该位置设置为一个安全的文件夹,如文档。 我没有testing这个解决scheme,但看看这篇文章: 我如何启用本地存储在我的基于WebKit的应用程序?

Phonegap团队也在处理这个问题: https ://issues.apache.org/jira/browse/CB-330

Antoher的方式是使用带有phonegap插件的SQLite(与WebSQL相同)。 该插件将数据库保存到“文档”文件夹中,这意味着数据库不会被删除并由iCloud保存。

这里是Native SQLite的phonegap插件: https : //github.com/davibe/Phonegap-SQLitePlugin关于这个插件,在某些情况下,它比WebSQL稍微慢一些,WebSQL API也有一些差异,但是这里是一个适配器: https : //gist.github.com/2009518

您还应该将旧的WebSQL数据库文件(存储在Library / WebKit或Caches目录中)迁移到Document文件夹。 这是一个代码来做到这一点: https : //gist.github.com/2009491

如果数据很重要,则应将其保存到服务器。 我写了一个小的lib来同步SQlite数据库到服务器: https : //github.com/orbitaloop/WebSqlSync

我不会使用html5数据库,而是通过ajax(在远程服务器上,使用php和mysql)发送/接收数据,最好是encryption(和base64编码)。