2015-08-09 31 views
8

Attualmente sto costruendo un'applicazione Angular 1.x utilizzando Firebase e AngularFire come backend/server di scelta. Poiché l'applicazione/sito Web è ottimizzata per i dispositivi mobili e si adatta perfettamente come un'applicazione quando la si aggiunge alla homepage, mi chiedevo come poter consentire all'utente di utilizzarla anche se il telefono è offline.Utilizzo offline di un'applicazione Firebase Angolare

Cercando sul web, ho trovato che Firebase fornisce un keepSynced (true) per la controparte di Java Java, tuttavia non sono riuscito a trovare una tale opzione per il js. Poi sono andato per un approccio manuale usando localStorage di HTML5 e una sincronizzazione basata sul tempo delle ultime modifiche, ma dal momento che sto usando alcuni dei comodi comandi di AngularFire (come $ save), la maggior parte del mio codice è rotta in questo modo.

Qualche suggerimento?

+0

Questa domanda (http://stackoverflow.com/questions/25990048/offline-firebase) indica che AngularFire supporta la riconnessione di una connessione interrotta, ma non il vero supporto offline. Sembra che dovrai implementare la tua soluzione o utilizzare un altro servizio. – Isaac

risposta

2

Usa $provide.decoratorangular docs
Un buon caso d'uso di $ provide.decorator è quando hai bisogno di fare "Tweak" minore su alcuni di terze parti di servizio/a monte, su cui il modulo dipende, lasciando intatto il servizio (perché non sei il proprietario/manutentore del servizio) stackoverflow question.

In pratica si potrebbe verificare se navigator.onLine === true all'interno decoratore (o utilizzare qualsiasi altro approccio per rilevare se la richiesta di Firebase sta per fallire) e poi sovrascrivere alcuni metodi di angularFire in base alle esigenze (scrivere a localStorage invece di inviare angularFire reale richiesta)

Ecco il mio example utilizzando angularfire $add metodo ridefinito con decoratore

E here's the basic example di decoratore

1

il mantenimento di un completamente funct L'app di ioning per il caso offline può essere una strada molto difficile, ma ci sono un paio di modi in cui puoi superare questo, puoi provare a usare kinvey, controllare la pagina Penso che sia esattamente quello che stai cercando.

un altro modo è utilizzare indexedDB invece di localStorage e scegliere una destinazione delle operazioni di salvataggio in base allo stato della connessione, ci sono un sacco di risorse che puoi trovare sull'argomento semplicemente googling sulla sincronizzazione offline html5 indexedDB. Spero che questo ti abbia aiutato

Problemi correlati