Phonegap应用程序 - iOS上的localStorage(需要澄清)

时间:2017-06-28 14:23:59

标签: javascript ios cordova local-storage phonegap

我正在使用PhoneGap构建混合应用程序。它需要在iOS上运行。我有点困惑,希望有人可以提供帮助。

我在导航中使用localStorage。 我的应用程序有不同的章节,我正在重用UI。

<a href="chapter.html" data-ajax="false" onClick="localStorage.setItem('chapter', '1')" class="ui-btn">Chapter 1</a>

当你点击网址时,它会从localStorage获取章节并知道要获取哪些内容。

var chapter = localStorage.getItem('chapter');

我的要求
只要用户正在使用应用程序,localStorage只需要持久化。
没关系,如果在使用关闭应用程序时localStorage丢失了。

但是当他使用该应用程序时,他应该可以访问localStorage。要获得正确的内容,您需要从localStorage获得的章节。

我很困惑。
在cordava网站上,它说明了这一点 iOS将localStorage数据存储在可在需要空间时由OS清除的位置。

我的问题 当用户仍在使用该应用程序时,是否可能发生这种情况? 我不希望他在导航到新页面的过程中,并且由于localStorage丢失而导致数据不正确。

使用sessionStorage会更好吗?

我真正想做的就是将章节nr发送到新页面,这样我就可以获取正确的内容。 (将信息发送到新页面)

使用localStorage和sessionStorage是否有正确的方法来执行此操作?

如果有更好的方法,请告诉我。

提前致谢。

2 个答案:

答案 0 :(得分:3)

您可以使用cordova-plugin-nativestorage。 (npm link

在您引用的storage page中,他们指定使用其他插件,因为LocalStorage 非持久性。此处提到的其他方法 none ,例如WebSQLIndexedDB也符合您的要求。

此插件在Android中使用SharedPreferences,在iOS中使用NSUserDefaults。因此,在卸载应用程序之前,存储的变量值是持久的。 :)

这就是原因,开发人员声称,这个插件是开发的。看看原因here

另请参阅when使用和when不要使用该插件。

答案 1 :(得分:0)

目前(2019年3月),cordova-plugin-nativestorage在8个月内没有更新,因此我最终选择了cordova-sqlite-storage。这是另一个可靠的跨平台选项,目前是最活跃的。

要回答有关发生的问题,我相信这可能会在用户使用应用程序时发生,因为iOS会独立于任何用户行为清除数据,但我仍无法确认。

我可能偶然发现了一种防止iOS清除本地存储at the bottom of this post的方法。不确定我是否会愿意依靠此功能来保持数据持久性,但仍试图对其进行跟踪,对此表示欢迎。