我使用localstorage在我的应用程序中保存一个值,与PhoneGap一起使用,但是当Apple发布新的iOS 5.1时,我的应用程序现在不保存该值。
有人知道如何解决这个问题吗?
非常感谢!!!
编辑:我把我正在使用的代码:
window.localStorage.setItem("login", $('#login').val());
我用它来保存值,我用它来读取值:
function onDeviceReady() {
var login = window.localStorage.getItem("login");
if (login != null) {
$('#login').val(login);
}
}
但是当我关闭应用程序时,不会保存这些值。
答案 0 :(得分:23)
phonegap小组中有一个大型线程讨论过这个问题。基本上是因为它们现在将localStorage视为临时项目,可以随时删除。永远不要害怕有聪明人在工作!
这是线程 - https://groups.google.com/forum/?fromgroups#!topic/phonegap/RJC2qA9sDnw
这是代码 - http://pastebin.com/5881768B
答案 1 :(得分:8)
在iOS 5中,默认情况下,localstorage是由Apple保留的。 在iOS 5.1中,localstorage成为一个临时文件夹,只要存储受到限制,操作系统就可以删除它。 在iOS 6中,localstorage成为一个可选的持久性文件夹,在设置中带有一个标志。
Phonegap 2.0针对iOS 5.1并提供了一种插件机制来提供持久性,即使iOS没有。
使用iOS 6和phonegap 2.1时,只有当iOS版本为5.1并且回退到iOS本机机制以保留文件夹时才尝试使用该插件。
但是在iOS 6上存在此修复程序的错误,其中localstorage文件夹第一次被删除,数据被存储:https://issues.apache.org/jira/browse/CB-1535 错误报告也有补丁;但它尚未安排成为任何PhoneGap发布版本的一部分;所以你必须手动应用补丁。