iOS 7的webview和localStorage持久性

我正在开发使用PhoneGap / Cordova的混合应用程序(仅适用于iOS和Android),并希望使用HTML5 localStorage来存储用于脱机访问的内容。

http://caniuse.com/#search=local存储说:“在iOS 5和6本地存储数据存储在一个位置,有时可能会被操作系统清除。”

  1. iOS 7(及更高版本)webview有什么情况,localStorage会在什么情况下持续存在,或被操作系统或用户清除?

  2. 将更新的应用程序清除localStorage?

  3. 怎么样的用户清除浏览器的Safari浏览器的历史logging – 也将适用于Web视图?

  4. 我是否需要担心(或者我可以控制)localStorage在fils系统上的创build位置。 我知道它不应该备份在iCloud上。


我有一个设备(iPad),并检查文件系统,我看到localStorage文件在应用程序沙箱内的〜/ Library / Caches中,请参阅下图。

从文档:

https://developer.apple.com/icloud/documentation/data-storage/index.html可以再次下载或重新下载的数据应该存储在/ Library / Caches目录中。 您应该放入Caches目录中的文件示例包括数据库caching文件和可下载的内容,例如杂志,报纸和地图应用程序使用的文件。

我只是这样做,以设置数据:

localStorage.setItem('foo','this is the FOO value'); localStorage.setItem('bar','and this is the BAR value'); 

在这里输入图像说明

如果你使用的是cordova,那么这个问题在很久以前就已经修复了,即使是iOS 5和iOS 6也是如此。如果你使用的是最新版本的cordova,那么不用担心。

如果您仍然遇到Cordova-iOS v4的问题,请尝试使用NativeStorage插件。 https://www.npmjs.com/package/cordova-plugin-nativestorage

它已经设置,放置并获得了实现android共享偏好和iOS NSUserDefaults这样的平台function的function,这使得数据存储安全性得到了允许。

 cordova plugin add cordova-plugin-nativestorage NativeStorage.putObject("reference_to_value",<object>, <success-callback>, <error-callback>); NativeStorage.getObject("reference_to_value",<success-callback>, <error-callback>); 

正如其他人所说,我认为你最好的select是使用NativeStorage插件:

https://www.npmjs.com/package/cordova-plugin-nativestorage

回答你的问题:

  1. localStorage数据保存在文件系统的caching目录中,并且caching经常被操作系统清理(例如,当磁盘空间不足时)。
  2. 不,不是自动的(但也许是因为上面1)的原因。
  3. 不,他们是分开的。
  4. 不,不幸的是,我不知道。