Verwenden einer Firebase Angular-Anwendung offline

8

Ich baue gerade eine Angular 1.x-Anwendung mit Firebase und AngularFire als Backend / Server der Wahl. Da die Anwendung / Website für mobile Geräte optimiert ist und perfekt als Anwendung beim Hinzufügen zur Homepage passt, habe ich mich gefragt, wie ich den Benutzer verwenden kann, selbst wenn das Telefon offline ist.

Beim Suchen im Internet habe ich festgestellt, dass Firebase für das Gegenstück von Android Java ein keepSynced (true) bietet, allerdings konnte ich für die js keine solche Option finden. Ich entschied mich dann für einen manuellen Ansatz mit LocalStorage von HTML5 und einer Synchronisierung basierend auf der Zeit der letzten Änderungen, aber da ich einige der praktischen Befehle von AngularFire nutze (wie $ save), ist der meiste Code so kaputt.

Irgendwelche Vorschläge?

    
Francesco S 09.08.2015, 06:25
quelle

2 Antworten

2

Verwenden Sie $provide.decorator eckige Dokumente
Ein guter Anwendungsfall von $ provide.decorator ist, wenn Sie kleinere Änderungen an einem Drittanbieter / Upstream-Dienst vornehmen müssen, von dem Ihr Modul abhängig ist, während Sie den Dienst intakt lassen (weil Sie nicht Eigentümer / Betreuer des Dienstes sind) stackoverflow Frage .

Im Grunde könnten Sie überprüfen, ob navigator.onLine === true im Dekorator ist (oder einen anderen Ansatz verwenden, um zu erkennen, ob die Anfrage an Firebase fehlschlägt) und dann einige Methoden von angularFire basierend auf Ihren Bedürfnissen überschreiben (schreiben Sie an localStorage, anstatt tatsächlich angularFire zu senden) Anfrage)

Hier ist mein Beispiel , das die anglefire-Methode $add mit Decorator verwendet

Und hier ist das grundlegende Beispiel von Decorator

    
Medet Tleukabiluly 13.08.2015 08:10
quelle
1

Eine vollständig funktionierende App für den Offline-Fall manuell zu verwalten, kann ein sehr kniffliger Weg sein, aber es gibt ein paar Möglichkeiten, wie Sie das überwinden können: kinveyy , überprüfen Sie die Seite Ich denke, es ist genau das, wonach Sie suchen.

Ein anderer Weg ist die Verwendung von indexedDB anstelle von localStorage und die Auswahl eines Ziels für Ihre Speichervorgänge basierend auf Ihrem Verbindungsstatus. Es gibt viele Ressourcen, die Sie zum Thema finden, indem Sie einfach über die Synchronisierung von offline html5 indexedDB googlen. Ich hoffe, das hat dir geholfen.

    
Labib Ismaiel 16.08.2015 22:41
quelle