【问题标题】:Cordova IOS app, loosing value Stored using window.localStorageCordova IOS 应用程序,失去价值使用 window.localStorage 存储
【发布时间】:2015-09-24 12:16:46
【问题描述】:

应用概述: 我们有两个(IOS Cordova 和 IOS 本机)工作应用程序,我们计划将这两个应用程序与现有技术堆栈集成。我们通过在 cocoapods 的帮助下将 Cordova 应用程序转换为二进制文件并将其集成到 IOS 原生应用程序中成功地进行了集成,应用程序功能运行良好。

在 IOS 原生应用中,我们有多个 webview。

问题:在 Cordova 应用程序中,有时我们会丢失使用“window.localStorage”保存的数据,此问题并不一致,但在 10 次尝试中会发生 2 或 3 次。

上述问题仅在应用程序的集成版本(Cordova + Native)中出现,而不在 Cordova 应用程序的独立版本中出现。

我们在集成版本(Android native + Cordova android)中遇到了同样的问题,我们设法通过使用“addJavascriptInterface”覆盖“windows.localstorage”来解决这个问题

问题: 1)有没有人经历过本地存储价值的损失。 2)我们是否也有适用于 IOS 的此类选项(即“addJavascriptInterface”),如果有,请您解释一下如何或您能建议一些其他更好的选项来在 Cordova webview 到本机层之间通勤

注意:这种从 Cordova webview 到本地 IOS 的通勤应该是同步的不是异步的,因为我需要覆盖“windows.localstorage” 使用cordova 3.6.3版

提前致谢

【问题讨论】:

    标签: javascript android ios html cordova


    【解决方案1】:

    从 iOS 5 开始,本地存储不再是持久的。 localstorage 的文件保存在目录 .../Library/Caches 中,如果系统空间非常低,操作系统可能会删除该目录。有关 iOS 中文件系统的更多信息,请参阅:File System Programming Guide

    根据cordova的文档,他们提到数据丢失是本地存储的一个缺点:"iOS stores localStorage data in a location that may be cleaned out by the OS when space is required."

    因此,如果您的空间不足,数据丢失不是错误。

    由于这个问题,我们也在寻找本地存储的替代方案。

    经过研究,我发现了一个plugin 专门针对这个问题。该插件使用 NSUserDefaults (iOS) 和 SharedPreferences (Android) 来永久存储数据。这实际上是我对这个问题的首选解决方案。

    解决这个问题的其他方法,经常被建议是:

    • 将值存储在位于持久目录中的文件中。此解决方案应该适用于所有具有文件插件的平台。
    • 使用 sqlLite。有许多插件可以提供此功能。

    【讨论】:

      【解决方案2】:

      我在某些设备上也遇到过同样的问题。在我们使用的十几个模型中,有一个存在类似问题。我在本地存储中存储了 6 个对象(字符串),并且在这些设备上 一些 对象在意外时刻可能会变为空。

      在挖掘 stackoverflow 之后,我发现了一些类似的案例,这些案例并不能明确地回答这个问题。例如,他们报告说:

      所以,我还没有答案。

      我自己的计划——使用文件或 SqlLite。我确信使用 FileAPI 存储的文件在那里并且不会丢失。

      【讨论】:

        【解决方案3】:

        在深入研究该问题后,我们设法发现本地存储文件已损坏,导致持久数据丢失。

        对我们有用的解决方案是:我们开始通过 iOS 的本机层备份本地存储文件。在我们的应用程序中,只有当用户从 Native 堆栈导航到混合堆栈时,我们才会遇到这个问题,因为 Native 堆栈将始终是用户事务的起点。

        注意:我们已将 Cordova 应用程序 (Cocoapods) 集成到本机应用程序中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-05
          • 2012-08-17
          • 1970-01-01
          • 2020-11-23
          • 2015-08-09
          • 1970-01-01
          相关资源
          最近更新 更多