gpt4 book ai didi

javascript - Cordova IOS 应用程序,失去使用 window.localStorage 存储的值(value)

转载 作者:行者123 更新时间:2023-11-29 10:25:13 27 4
gpt4 key购买 nike

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

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

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

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

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

问题:1)有没有人经历过本地存储值(value)的损失。2) 对于 IOS,我们是否也有这样的选项(即“addJavascriptInterface”)?如果有,您能否解释一下如何或建议一些其他更好的选项来在 Cordova webview 与 native 层之间进行通信

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

提前致谢

最佳答案

自 iOS 5 起,localstorage 不再持久化。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."

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

由于这个问题,我们也在寻找 localstorage 的替代品。

经过研究,我找到了一个 plugin特别是对于这个问题。此插件使用 NSUserDefaults (iOS) 和 SharedPreferences (Android) 永久存储数据。对于这个问题,这实际上是我的首选解决方案。

通常建议的解决此问题的其他方法是:

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

关于javascript - Cordova IOS 应用程序,失去使用 window.localStorage 存储的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32761099/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com