如何防止在iOS 5.1中HTML 5数据库被删除

4
这基本上是与这个问题相同,只是我没有使用PhoneGap(因此我认为那里提供的解决方案都不适用)。
我有一个纯HTML / JS Web应用程序,可以离线工作(使用WebSQL进行存储,并使用AppCache进行断开连接的使用)。
该应用程序具有“导出”选项,该选项将数据序列化为JSON并将其上传到AWS S3存储桶进行备份;以及相应的“导入”选项以进行还原。但是,由于这是整个数据库的完整转储/还原,因此该过程并不是很快,因此通常我每周备份一次。
正如预期的那样,从iOS 5升级到5.1 OTA删除了我的本地WebSQL数据库,但是我能够成功地从S3恢复数据(幸运的是,在升级之前我刚刚进行了备份)。
不幸的是,在运行iOS 5.1几周后,它再次决定需要空间,并且删除了我的WebSQL数据库。再次幸运的是,这发生在我定期每周备份之后;但是我担心如果这变成经常发生的情况(iOS删除这个“临时”数据库以回收空间),那么在几天没有备份的情况下我就会受到影响。
我计划最终放弃已废弃的WebSQL,并使用IndexedDB;但是,当然,iOS目前不支持IndexedDB。我还计划修改我的应用程序中的导出/导入过程,使其仅同步任何更改的记录与S3(以便将备份到S3降至最低,因此可能比每周更频繁地进行)。
同时,是否有任何黑客/解决方法/技巧可以确保iOS 5.1不清除WebSQL数据库?或者是否有任何方式可以预测何时可能发生清理,以便我可以尝试通过运行导出来备份我的数据来预防它?
1个回答

0
PhoneGap社区提供的解决方案绝对是适用的。对我们来说,https://issues.apache.org/jira/browse/CB-330?focusedCommentId=13237796&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13237796 中的代码对我们来说效果最好,只要在初始化任何WebView之前调用(即在应用程序的init()方法中),并在初始化WebView之后调用它。
上述链接的代码将数据库移动到安全位置,并编辑WebKit首选项以引用新位置。需要运行两次,以便在加载WebKit并在加载后更新到新位置之前移动和更新现有数据库(因为WebKit将创建指向错误/不安全位置的首选项)。

1
我想你可能忽略了我说的那一点,即我正在使用纯HTML/JS应用程序;也就是一个在Safari中查看的网站,然后通过“添加到主屏幕”按钮添加到主屏幕,使其成为全屏“应用程序”。因此,在我的情况下,没有应用程序init()方法或WebView。 - Scott
啊,对不起。从问题中没有表达清楚。也许你应该提到这是一个Web应用而不是应用程序。 - EionRobb
好的观点...谢谢EionRobb。我已经更新了它,改成了"webapp"而不是"app"。 - Scott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接