【问题标题】:Cordova App's localStorage wiped after AppStore updateCordova App 的 localStorage 在 AppStore 更新后被擦除
【发布时间】:2018-05-19 10:51:43
【问题描述】:

我需要在我的应用程序上保存一些数据,所以我使用了 localStorage。其实 LocalStorage 非常有用:免费、快速、离线的数据库。

但是当我从 AppStore 更新我的应用程序时,我所有的旧数据都消失了。本地存储已擦除。另外,当我在stackoverflow中搜索时,我了解到当设备的内存已满时,localStorage会被重置。

我正在寻找一种易于使用、支持离线且永久的解决方案。找到了pouchdb,不过有点复杂。

我很好奇你的建议。

最好的。

【问题讨论】:

    标签: database cordova persistence storage local


    【解决方案1】:

    是的,当您重新安装/更新/内存已满时,LocalStorage 会自动清除。

    可能的解决方案

    【讨论】:

    • 我刚刚检查了安全存储。有点复杂。例如,我使用了像这样的早期方法: var x = localstorage.getitem('x');我如何使用安全存储来做到这一点?这是使用 S.Storage 获取数据的最简单方法: ss.get(function (value) { alert('Success, got ' + value); },function (error) { console.log('Error ' + error) ; },'我的钥匙');如何将其分配给变量?
    • 在调用安全存储之前创建一个变量,我的意思是在函数之外;成功回调后,您可以为同一个变量赋值;示例:变量 x; ss.get(function(v) { x = v}, function(e) { console.log(e)} )
    • 谢谢。本地存储是同步的,但本机存储是异步的。这是我的主要问题:(
    • 但是我们没有其他方法可以做到这一点:(
    • 没有持久化同步存储库吗?
    【解决方案2】:

    是的,您不应该依赖 LocalStorage 来处理任何重要的事情。我在几个项目中使用了Sqlite for Cordova,我认为它工作得很好。该插件提供了 Sqlite 的本机实现供您的应用使用。您将获得 SQLite 的功能和运行 SQL 查询等的能力。该插件将数据库持久保存到设备文件系统,因此您的数据将在应用程序更新后存在。没有隶属关系,只是一个满意的客户。

    更新: OP 阐明了要求,对于存储一些简单的键值对,您可以考虑使用Cordova Secure Storage plugin。它适用于 iOS、Android 和 Windows 10,设置和使用相对简单。

    【讨论】:

    • 如你所说,原生 SQLite 是唯一有保证的持久存储。在我的经验测试中,存储空间不足的 iOS 设备会考虑擦除 Webview 公平游戏中的任何数据:LocalStorage、WebSQL 和 IndexedDB 都可以被擦除。
    • 我不想学习一个庞大的库来在我的应用程序中存储 2 个数据。我只是存储 (localStorage.language = en | fr) 和 (localStorage.sound = on | off)。应该有一个简单的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多