2013-04-12 10 views
22

Volevo creare un'app mobile per il mio progetto web. Ho trovato PhoneGap. Dice: Crea facilmente app utilizzando HTML, CSS e JavaScript. Non ho ancora creato un'app mobile utilizzando il gap telefonico. Sono disponibili tre opzioni di memoria: memoria-store.js (MemoryStore), ls-store.js (LocalStorageStore) e websql-store.js (WebSqlStore). Voglio solo salvare un token per riconoscere l'utente. Quale spazio di archiviazione è più adatto. C'è un modo migliore per costruire un'app mobile.Utilizzo della memoria locale nello spazio telefonico

Apprezzo qualsiasi aiuto.

risposta

39

L'utilizzo di Archiviazione locale sarà probabilmente più semplice per le vostre esigenze.

Fondamentalmente le app PhoneGap sono app native (quindi possono essere distribuite tramite app store) che eseguono semplicemente una pagina Web o pagine. L'API PhoneGap fornisce quindi i ganci JavaScript nelle funzioni del dispositivo come la videocamera ecc. C'è di più, ma per ora questo è lo sfondo.

Pertanto, poiché l'app è essenzialmente una pagina Web (HTML5, CSS, JS), è possibile utilizzare LocalStorage (parte di HTML5).

Esempio locale l'utilizzo dello storage:

Valori di impostazione:

localStorage.myname = "Greg"; 

valori Come:

localStorage.myname; // returns "Greg" 

maggiori informazioni qui per la memorizzazione locale: http://diveintohtml5.info/storage.html

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

La sintassi è la seguente

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

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

memorizza i valori di memorizzazione locale se l'app viene chiusa e riaperta. Apprezzo il vostro aiuto. –

+2

Sì. Anche quando il telefono è spento. Ricorda però che hai solo un limite di 5mb con LocalStorage. Altro su quel link in basso ... – Greg

+1

Ooh Ottima soluzione Amico ... Cheerzzz – chhameed

0

vi consiglio di guardare anche nella soluzione di memorizzazione persistente Lawnchair. È stato costruito con un primo approccio mobile. L'ho usato in alcuni progetti; funziona davvero bene.

codice di esempio

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); 
    }); 
}); 

Si può leggere di più su di esso a http://brian.io/lawnchair/

1

Un punto per aggiungere sull'utilizzo localStorage è che è supportata solo dai dispositivi HTML5-compliant. Per i dispositivi precedenti (anche una scelta eccellente per i nuovi dispositivi) l'opzione è quella di utilizzare l'implementazione SQLite di phonegap. See here...

+0

L'implementazione SQLite di Phonegap funziona per Cordova? – Vivek

0

Amico, anche io ho provato senza successo a utilizzare i cookie con PhoneGap. La soluzione era usare localStorage.

chiave rapido esempio:

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

Set Articolo rapida Esempio:

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

Get Elemento Esempio rapida

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

Rimuovi Articolo rapida Esempio:

window.localStorage.removeItem("key"); 

chiaro esempio rapida:

window.localStorage.clear(); 

Se si utilizza JavaScript sia per mobile e web, è possibile utilizzare questo codice per rilevare che ambiente:

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

Riferimenti: 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

Attenzione: l'uso della navigazione anonima su iOS può rendere lo spazio locale non funzionante come spectato. Un semplice test che sta funzionando bene per me:

$(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 
      } 
     } 
    } 
});