LocalStorage 在带有 os 10 的 iphone/ipad 中无法正常工作

Posted

技术标签:

【中文标题】LocalStorage 在带有 os 10 的 iphone/ipad 中无法正常工作【英文标题】:LocalStorage is not working as expected in iphone/ipad with os 10 【发布时间】:2017-08-25 09:25:32 【问题描述】:

我在 iphone/Ipad 操作系统版本为 10 及更高版本时遇到本地存储问题。

场景是这样的。

当我第一次打开应用程序时,本地存储键值为 null 。那时我正在为相应的键赋值。

当我第二次打开应用程序时,localStorage 键仍然为空,再次将值分配给相应的键。

当我第三次打开应用程序时,我从 localStorage 获得价值。如果我重复上述步骤 no.of time ,每次我都能从本地存储中获得价值。

这里的问题是第二次出现在 localStorage 上。

以下是我正在使用的技术 IBM 移动优先 V7.1 科尔多瓦 V3.7 Ionic V1.2.4 和 angular 1.4

请在下面的示例代码中找到在 iphone 和 ipad 中运行良好的 os 9(低于 10)

if(localStorage && $window.localStorage.getItem("isFirst") ==  "first") 
  alert("Data available"); 

else 
 alert("LocalStorage is empty");               
$window.localStorage.setItem("isFirst", "first"); 


得到“数据可用”两次而不是一次。

【问题讨论】:

可能是您正在清除您的应用数据,这就是为什么 localstorage 值可能会产生空值。 您能否编辑您的帖子以包含一些示例代码? @ Talentandrew,我们不会清除应用数据。如前所述,它正在第三次工作。 关注此链接***.com/questions/9948284/… 【参考方案1】:

众所周知,ios 上的 LocalStorage 是不可预测的。重新启动应用程序(甚至没有 Cordova 或 MFP)时,某些 LocalStorage 会被删除,而有些则不会。当设备内存不足时,iOS 可能会擦除 LocalStorage。但这并不是 iOS 10 特有的。

这不是 MFP 或 Cordova 的问题,它可能正是 iOS 的工作原理。

要可靠地保存数据并使用加密,您可以使用 JSONStore。更多细节在这里:

1) JSONStore Tutorial

2) Overview

【讨论】:

我们只在 ios 10 中遇到这个问题,在 os 10 以下的验证次数没有重现。 如果在我的情况下 localstorage 的“内存不足”问题是在第二次尝试后写入,这不应该发生,对吗?? 内存不足是何时清除的一个示例。您正在处理 html5 存储,而这不是由 MFP 或 Cordova 处理的。该行为取决于 Webview/HTML5 引擎,无法在您的 /MFP 代码中进行控制。如果您想要持久性,请使用 JSONStore。 我们已经尝试过了,但是 JSONStore 集合的初始化在加载应用程序时需要一些时间 @RavaliAbboju,这是一个不同的讨论,jsonstore初始化应该在应用程序加载之后。你的收藏有多大?

以上是关于LocalStorage 在带有 os 10 的 iphone/ipad 中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

带有 chrome 扩展的 cookie 或 localStorage

带有 chrome 扩展的 cookie 或 localStorage

有没有简单的方法在带有 mamp 的 MAC OS 10.8 上安装 mytop?

带有 localStorage 的 jQuery 图片上传器。部分工作。默认图片不显示

尝试使用 localStorage 在 JavaScript 中保存和加载带有对象的数组时出错

带有 Alamofire POST(内容类型 JSON)的 iOS OS 10.3.3 问题