2017-08-07 1 views
0

Ich baue einen Chat mit Firebase, Offline-Funktion (keepSynced(true))Wie kann man wissen, wenn Firebase DataSnapshot Server-Seite beibehalten wurde

Es ausgenommen sehr gut funktioniert, dass ich, wenn die DataSnapshot Nachricht eine Möglichkeit wissen, finden kann nicht wurde tatsächlich Server-Seite gespeichert, als ob ich für die Nachricht abfragen Firebase wird mir sagen, dass es existiert (es tut lokal!).

Ich habe über Transaktionen gefunden, aber es speichert nicht offline.

Ich habe auch gefunden, um den Verbindungsstatus von Firebase zu überprüfen, aber es ist ein globaler Status und spiegelt nicht einen Snapshot-Status.

Die einzige Lösung, die ich gefunden habe, ist das Hinzufügen einer Eigenschaft "persistent" auf meine Nachricht widersprochen, diese Eigenschaft wird von einer serverseitigen Funktion festgelegt, aber das scheint für diesen Zweck übertrieben. Ich bin mir ziemlich sicher, dass Firebase lokal weiß, welche Werte noch nicht erhalten sind?

Antwort

1

Wenn Sie bei Android eine Operation ausführen, die schreibt, erhalten Sie entweder ein Objekt Task als Gegenleistung, oder Sie können ein CompletionListener als Argument angeben. Beide zeigen an, wenn die Daten vom Server empfangen werden. Wenn Sie diese nicht verwenden, haben Sie keine anderen Hinweise.

Die Verwendung einer Cloud-Funktion zum Markieren der Position beim Schreiben ist sicherlich eine andere Möglichkeit, dies zu tun, wenn Sie den Task oder CompletionListener nicht festhalten können.

+0

Guter Fang! Es gibt auch einen Rückruf in iOS. Aber das bleibt nicht bestehen, wenn ich zum Beispiel den Chat-Bildschirm verlasse und zurückkomme. Ich habe keine Ahnung, ob die Nachricht gesendet wurde oder nicht (ich glaube nicht, dass ich die Aufgabe zwischen App-Neustart usw. halten kann). Ich werde dann bei der Cloud-Funktion bleiben! danke für Ihre Hilfe – PhilippeAuriach

Verwandte Themen