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

nic*_*nes 5 database iphone ios cordova

我正在使用phonegap为iOS创建一个测验风格的应用程序.该应用程序允许用户创建然后进行测验.

目前我正在使用HTML5数据库,使用phonegap API来存储测试和结果数据.我担心的是,当设备存储空间已满时,iOS 5.1现在可以删除数据库.

无论如何都要标记存储数据库的webkit缓存文件夹,以便永远不会删除它?如果这是不可能的,那么有任何关于存储始终持久的数据的方法的建议.

Sam*_*uel 7

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

可以更改调用私有API的WebKit数据的位置.您应该能够将位置设置为文档等安全文件夹.我还没有测试过这个解决方案,但请看这篇文章:如何在基于WebKit的应用程序中启用本地存储?

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

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

这是Native SQLite phonegap插件:https://github.com/davibe/Phonegap-SQLitePlugin 关于这个插件,它有点但比WebSQL慢一些,并且WebSQL API之间存在一些差异,但这里有一个适配器:https: //gist.github.com/2009518

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

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


Ren*_*lin 1

Webkit 存储和 iOS 5.1 的两个问题均已修复

  1. 存储从 /Webkit 移至 /Cache
  2. iOS 5.1 下应用程序更新时存储未调整为更新的文件夹结构(WebKit Bug)

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

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

最好的是:使用较旧 iOS 版本的用户使用包含该修复程序的应用程序,在任何 iOS 更新的情况下都不会遭受损失。这就是为什么人们不应该等待......