问题 PhoneGap应用的持久数据


编辑#2 - 到目前为止(2天后)的回复是个人意见和偏好,而不是对离线phoneGap应用程序在所有相关设备上轻松存储简单数据的各种选项的分析。因此我没有接受任何答案,但我正在关注这个问题。

对于我正在构建的PhoneGap Web应用程序,我应该考虑哪种格式的持久性数据,我有点困惑。我一直在研究这个,但考虑到我平庸的要求,事情并不清楚。

该应用程序是一个教育应用程序,有大约100个左右的多项选择题和附加的一些记忆游戏。

下载后的应用程序可以保持脱机状态

它适用于所有支持phonegap的设备。

我想要读写的唯一数据是用户的表现,总计错误的次数,每张卡等以及游戏的任何高分。

这是所有非常基本的信息,可以在非常简单的js对象中保存。

我希望它是一个相当简单的解决方案,很容易维护/重复。

什么是我最好的选择?手机档文件api? JSON / lawnchair?本地存储?饼干?有没有办法'更新'应用程序并将其作为javascript中的对象?的WebSQL? sqilite?存储API?

其中一些似乎有点矫枉过正。

编辑 设备是否存在差异,我应该进行一些设备检测并使用不同的技术?


12997
2017-11-25 19:13


起源

我想通过一些阅读和搜索,你应该能够消除这些可能性中的几个,并描述你对其他人的担忧。只是总结一下你能找到的每一种技术“都可能会征求辩论,争论,民意调查或扩展讨论”。 - GolezTrol
我当然想过我的问题是否是主观的。几个小时前我尝试了“小”阅读方法。是什么让我相信我不只是在问'我懒惰,什么是最好的?'问题是我对需求的准确分析,即phoneGap技术最近才解决的问题,移动平台也在不断变化,使许多互联网文章不合适和/或过时。 - Gamemorize


答案:


我个人喜欢localStorage。它很直接,适用于大多数情况。

如果您只记录上面提到的数据,localStorage将是完美的。我会通过使用say将数据对象转换为字符串来简化数据对象 JSON.stringify(),然后在使用中拉回来 JSON.parse() 把它变回一个可用的JS对象。


7
2017-11-25 19:59



谢谢,我对本地存储的担忧是基于今年早些时候phoneGap与iphone localstorage存在的问题。 - Gamemorize
这是由于iOS的变化,并由PhoneGap团队迅速解决。这不再是一个问题。 - Devgeeks
谢谢,你有没有理由不使用草坪椅? - Gamemorize
草坪椅对我的使用案例来说太过分了。我只需要奇数键/值对或一些序列化对象。 - Devgeeks
我有一个与问题中描述的用例类似的用例。我使用类似于本答案中描述的localStorge。它非常简单,效果很好。我推荐它用于这样一个简单的用例! - Ben


试试我的图书馆怎么样? http://dev.yathit.com/ydn-db/getting-started.html 由IndexedDB(优秀的性能,通过索引扫描查询),WebSQL(良好性能,SQL查询)或localStorage(公平性能,无查询,按键获取,2.5 MB限制)支持。

db = new ydn.db.Storage('test-store');

db.put('store1', {test: 'Hello World!'}, 123);

req = db.get('store1', 123);
req.done(function(record) {
  console.log(record);
});

高性能,同时仍然很容易。

不喜欢库依赖​​,在原始源代码 https://bitbucket.org/ytkyaw/ydn-db


4
2017-11-26 04:17



很酷,谢谢,很抱歉是一个痛苦,但你有任何链接,以帮助我理解基本原理,我从来没有使用过类似的任何东西,我有点小心谨慎写这个,然后发送它关闭应用程序商店,您能预见到任何phoneGap或任何设备/操作系统的任何潜在问题吗?我认为浏览器兼容性很好。它是否经过了相当多的测试? - Gamemorize


看起来这些都是好的,虽然我还没试过。

如果你正在使用 离子骨架 哪个使用AngularJS,我喜欢 ngStorage。这个我尝试了,它很棒。


2
2017-08-27 04:32





我使用localStorage来保存我的持久数据,但它在某种程度上不可靠。我看到一些数据丢失了,但我不知道为什么。但我的持久数据使用并不那么重要,所以我不介意这些不一致。

但你的情况似乎更重要。我会将持久数据存储在 文件夹,与 文件API


1
2017-11-25 20:41



干杯,你最近一直有问题吗? - Gamemorize
它与存储API相比如何? - Gamemorize
我偶尔会在最近丢失数据。这也可能是一个实施问题。但我没有研究根本原因。正如我所说,我真的不太关心这一点。我没有丢失Documents文件夹中的任何数据。 - noway
localStorage是非事务性的。因此,如果您编写然后阅读,则不会立即获得更新的数据。 - Kyaw Tun
localStorage文件保存在Library / Caches目录中,如果系统空间很小,操作系统可能会删除此目录。对我来说,这就是为什么我的数据有时会丢失的原因。 - Kiki


Phonegap具有SQL Lite的本地存储支持 http://docs.phonegap.com/en/2.2.0/cordova_storage_storage.md.html#Storage

对不起,我没有更多信息。我对这个话题感兴趣,碰巧碰到了它。


0
2018-04-01 18:13