Phonegap iOS 5.1 和 localStorage

Posted

技术标签:

【中文标题】Phonegap iOS 5.1 和 localStorage【英文标题】:Phonegap iOS 5.1 and localStorage 【发布时间】:2012-03-28 16:40:07 【问题描述】:

我在我的应用程序中使用 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);
    

但是当我关闭应用程序时,值并没有保存。

【问题讨论】:

【参考方案1】:

phonegap 组里有一个大线程在讨论这个问题。基本上是因为他们现在将 localStorage 视为可以随时删除的临时项目。永远不要担心工作中有非常聪明的人!

这是线程 - https://groups.google.com/forum/?fromgroups#!topic/phonegap/RJC2qA9sDnw

这是代码 - http://pastebin.com/5881768B

【讨论】:

@ScottC 是的。该补丁已添加到 3.0,因此您真的不需要再做太多了。【参考方案2】:

在 iOS 5 中,本地存储默认是由 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 发布版本的一部分;所以你必须手动应用补丁。

【讨论】:

即使用户使用的是 iOS 5.1,在最新版本的 PhoneGap 中使用这是否可以接受? LocalStorage 现在会随着补丁继续存在吗?

以上是关于Phonegap iOS 5.1 和 localStorage的主要内容,如果未能解决你的问题,请参考以下文章

如何防止meteor.local的负载(使用phonegap构建ios应用程序时)

在适用于 iOS 的 Cordova / PhoneGap 应用程序上修改用户代理字符串

参考错误:找不到变量:ChildBrowser、Cordova 1.7.0、jQueryMobile 1.0.1、iOS 5.1

Cordova Local Notification 为 iOS 和 Android 播放本地声音

为啥 cordova-local-notification-plugin 不起作用(Phonegap,Android)?

Phonegap/Cordova 中的本地通知