Cordova iOS localStorage旧值

时间:2018-03-07 15:50:00

标签: javascript ios cordova

每次打开appp时,用户都会收到Ajax请求中的数据,它存储在浏览器localStorage中,当用户下次打开app时,它会在第一次设置时显示localStorage值。似乎在最初设置localStorage项目后,它们不会改变。它们在应用程序中工作正常,但再次打开它时,仍然存在第一个值。

App使用Cordova最新版本(截至当前版本)在iOS和Android上构建,使用jQuery Ajax请求和浏览器localStorage。

示例:

  1. 用户首次打开应用。

  2. 请求访问令牌并保存在localStorage localStorage.setItem('token', '1234');

  3. 用户使用app一段时间后退出。

  4. 下次用户打开应用并获取令牌时,它会再次保存在localStorage中localStorage.setItem('token', 'abcd');

  5. 用户使用app,然后退出。

  6. 再次打开应用并检查localStorage,存储的访问令牌从第一次开始就是1234

1 个答案:

答案 0 :(得分:0)

iOS认为存储在应用程序Webview中的任何数据(HTML5本地存储,WebSQL,IndexedDB,Cookie等)都是临时/缓存数据。

因此,如果iOS设备开始空间不足,iOS可能会决定擦除Webview数据以恢复空间。 发生这种情况时,主屏幕上的应用程序名称将更改为"清洁..."当您下次启动应用程序时,所有Webview数据都将消失。

出于这个原因,我从使用Cordova应用程序的Webview中存储数据转移到使用cordova-sqlite-storage plugin将其存储在本机SQLite数据库中。 本机DB文件被认为是#34;正确的"当iOS设备的存储空间不足时,iOS上的数据不会被擦除。

我通过在iPad上填充电影来实验测试这两种情况,直到空间不足为止,触发iOS开始其清洁"安装的应用程序。

有关详细信息,请参阅this related issue