【问题标题】: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)。我只想保存一个令牌来识别用户。哪种存储最适合。有没有更好的方法来构建移动应用程序。

感谢您的帮助。

【问题讨论】:

    标签: cordova mobile phonegap-build


    【解决方案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
                  }
              }
          }
      });
      

      【讨论】:

        猜你喜欢
        • 2013-03-31
        • 1970-01-01
        • 2012-03-25
        • 2011-09-19
        • 1970-01-01
        • 1970-01-01
        • 2013-06-03
        • 1970-01-01
        • 2015-03-18
        相关资源
        最近更新 更多