2013-04-08 13 views
7

Ho una semplice applicazione Web creata con PhoneGap e Android che chiama risorse esterne (js, css, html) dal server invece di memorizzarlo nella cartella di risorse Phonegap. Preferisco usare risorse esterne perché il mio server può fornire pagine html che si occupano di internazionalizzazione.HTML5 L'app Android Phone Web non funziona offline con il manifest di cache

Questa app Web funziona correttamente sul mio dispositivo Android quando WIFI è attivo ma non riesce quando si arresta WIFI. Il mio file index.html fornito dal mio server contiene un file manifest valido con il mimetype corretto ('text/cache-manifest') che elenca tutti i file necessari per l'applicazione.

si suppone La mia classe di attività Android ad avere la cache abilitare:

this.appView.getSettings().setDomStorageEnabled(true); 
    this.appView.getSettings().setAppCacheMaxSize(1024 * 1024 * 15); 

    String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath(); 
    this.appView.getSettings().setAppCachePath(appCachePath); 
    this.appView.getSettings().setAllowFileAccess(true); 
    this.appView.getSettings().setAppCacheEnabled(true); 

Può pena mentionning che la mia applicazione uso chiamata AJAX con URL del tipo/aaa/bbb/a chiamare le pagine web da server e I don' so se questo può essere il problema (non sto chiamando pagine fisiche direttamente come index.html) ... Tuttavia, questa web app funziona bene nel browser desktop (Google Chrome) quando offline ...

Qualsiasi idea che altro posso fare per abilitare questa funzione cache HTML5 sulla mia app Phonegap?

Grazie mille

risposta

6

Dopo aver giocato per un po 'ho capito di lavorare. Ecco alcuni punti si dovrebbe verificare quando stucked con questo tipo di problema di caching: la cura

  • Prendere sui parametri URL passato con metodo GET ... ero di passaggio dei parametri durante la navigazione tra le pagine della mia app e quei parametri stava facendo i miei url diversi da quelli presenti nel file manifest, rendendo la cache fallita.
  • Durante il test della modalità offline sul mio telefono, stavo solo spegnendo il WIFI pensando che fosse sufficiente per attivare la versione cache della mia app ma non era ... Come stavo testando la mia app pubblicata sotto un IP di rete locale (come 192.168.2.11), sembra che la mia app stia cercando di raggiungere quell'IP attraverso la rete 3G che era ancora attiva ... Quindi usa la modalità aereo quando esegui il test offline.
  • Non sono sicuro se questo fosse necessario poiché l'ho letto su alcuni altri thread, ma ho rinominato il file manifest in cache.manifest.

saluti

1

Sto sviluppando un sistema simile. Quello che ho fatto è stato creare le pagine web di PhoneGap e memorizzarle nella cartella www del mio server WAMP. Quindi quello che faccio è fondamentalmente super.LoadURL ("insert_ip_address_here/insert_name_of_folder_where_webpage_is_located") nel metodo onCreate e questo carica perfettamente l'applicazione di PhoneGap (sì, tutto ciò che serve è solo una semplice riga di codice nell'app Android stessa). Tuttavia, devi comunque assicurarti che il file config.xml, manifest e tutte le configurazioni necessarie per PhoneGap siano eseguiti correttamente (per istruzioni su questo vedi http://www.google.ca/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CEAQFjAA&url=http%3A%2F%2Fwww.adobe.com%2Fdevnet%2Fhtml5%2Farticles%2Fgetting-started-with-phonegap-in-eclipse-for-android.html&ei=XfBuUcmKNu684AP3vYDQBw&usg=AFQjCNG16oUTDylMqz20YiiMZTlDxrfbPg&bvm=bv.45368065,d.dmg).

Fammi sapere se questo è il percorso che scegli di perseguire. Posso fornire supporto extra con cose come rendere dinamico l'indirizzo IP (nella riga super.loadurl (...)) per il sistema locale usando multi-casting, ecc.

+0

Sì, questo è fondamentalmente quello che sto facendo, chiamo il mio index.html remoto con super.LoadURL (il mio URL http) nel metodo onCreate. Se controlli la mia domanda, definisco anche varie impostazioni per abilitare la memorizzazione nella cache in questo stesso metodo ... –

+0

Interessante, la memorizzazione nella cache renderà l'applicazione più veloce? (Sto pensando di implementarlo nel mio codice). – aagarwal

Problemi correlati