在电话间隙中使用本地存储

Posted

技术标签:

【中文标题】在电话间隙中使用本地存储【英文标题】:Using Local storage in phone gap 【发布时间】:2013-04-12 10:19:33 【问题描述】:

我想为我的网络项目创建一个移动应用程序。我找到了phonegap。它说使用 html、CSS 和 javascript 轻松创建应用程序。我以前没有使用电话间隙创建移动应用程序。共有三个存储选项 memory-store.js (MemoryStore)、ls-store.js (LocalStorageStore) 和 websql-store.js (WebSqlStore)。我只想保存一个令牌来识别用户。哪种存储最适合。有没有更好的方法来构建移动应用程序。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

使用本地存储可能最容易满足您的需求。

从根本上说,PhoneGap 应用是原生应用(因此它们可以通过应用商店分发),它们只运行一个或多个网页。然后,PhoneGap API 将 JavaScript 挂钩提供到相机等设备功能中。还有更多内容,但现在这就是背景。

因此,由于该应用本质上是一个网页(HTML5、CSS、JS),因此您可以使用 LocalStorage(HTML5 的一部分)。

本地存储使用示例:

设定值:

localStorage.myname = "Greg";

获取值:

localStorage.myname; // returns "Greg"

更多关于本地存储的信息:http://diveintohtml5.info/storage.html

对于 Windows Phone 7:http://docs.phonegap.com/en/3.4.0/cordova_storage_storage.md.html#Storage

语法如下

localStorage.setItem("name", "Alen");

localStorage.getItem("name"); //will return Alen

【讨论】:

如果应用程序关闭并重新打开,则执行本地存储存储值。感谢您的帮助。 是的。即使手机关机。请记住,LocalStorage 只有 5mb 的限制。更多关于底部的链接...... 哦,很棒的解决方案老兄... Cheerzzz 我有一个问题。本地存储是否适用于 Windows Phone 设备? @RenatoRamosNascimento 我编辑了 Gregs 答案以反映您的需求!【参考方案2】:

关于使用 localStorage 的补充一点是,它仅受 HTML5 兼容设备支持。对于较早的设备(对于新设备也是一个不错的选择),选项是使用 phonegap 的 SQLite 实现。 See here...

【讨论】:

Phonegap 的 SQLite 实现是否适用于 Cordova?【参考方案3】:

我建议您也研究一下 Lawnchair 持久存储解决方案。它采用移动优先的方法构建。我在一些项目中使用过它;效果很好。

示例代码

var store = new lawnchair(name:'testing', function(store) 
    // create an object
    var me = key:'brian';

    // save it
    store.save(me);

    // access it later... yes even after a page refresh!
    store.get('brian', function(me) 
        console.log(me);
    );
);

您可以在http://brian.io/lawnchair/阅读更多信息

【讨论】:

【参考方案4】:

朋友,我也尝试过使用带有 phonegap 的 cookie,但没有成功。解决方案是使用 localStorage。

关键快速示例:

 var keyName = window.localStorage.key(0);

设置项目快速示例:

 window.localStorage.setItem("key", "value");

获取项目快速示例

 var value = window.localStorage.getItem("key");
 // value is now equal to "value"

删除项目快速示例:

 window.localStorage.removeItem("key");

清除快速示例:

 window.localStorage.clear();

如果您将 javascript 用于移动设备和网络,则可以使用此代码来检测该环境:

var wl = window.location.href;
var mob = (wl.indexOf("android")>0);

参考资料: http://docs.phonegap.com/en/1.2.0/phonegap_storage_storage.md.html#localStorage http://cordova.apache.org/docs/en/6.x/cordova/storage/storage.html#page-toc-source

注意:在 ios 上使用匿名导航可能会使本地存储无法正常工作。一个对我来说很好的简单测试:

$(document).ready(function () 
    try 
        localStorage.setItem('test', '1');
     catch (Err) 
        if (Err.message.indexOf('QuotaExceededError') > -1) 
            // Tell the user they are in anonymous mode
            // Sugest it to go to https://support.apple.com/pt-br/HT203036 to get help to disable it
            
        
    
);

【讨论】:

以上是关于在电话间隙中使用本地存储的主要内容,如果未能解决你的问题,请参考以下文章

我想在 iPad 上的电话间隙应用程序中自动加载本地视频和音频

如何在html上实现本地存储?

数据密集型应用程序的电话差距与单点触控

我应该使用本地存储来存储用户数据吗

如何使用 Angularjs 将数据存储在本地存储中?

使用 phonegap 创建应用程序