2017-08-07 3 views
0

Je construis une conversation en utilisant Firebase, en utilisant la fonction hors-ligne (keepSynced(true))Comment savoir quand Firebase DataSnapshot a été persisté côté serveur

Il fonctionne très bien, sauf que je ne peux pas trouver un moyen de savoir si le message DataSnapshot a en effet été sauvegardé côté serveur, comme si je demandais le message Firebase me dira qu'il existe (il le fait localement!).

J'ai trouvé des informations sur les transactions, mais elles ne sont pas enregistrées hors ligne.

J'ai également trouvé sur la vérification de l'état de connexion de Firebase, mais il s'agit d'un état global, et ne reflète pas un état par instantané.

La seule solution que j'ai trouvée est d'ajouter une propriété "persisted" sur mon message objecté, cette propriété étant définie par une fonction côté serveur, mais cela semble excessif à cette fin. Je suis assez sûr que Firebase sait localement quelles valeurs ne sont pas encore persistées?

Répondre

1

Sur Android, lorsque vous effectuez une opération qui écrit, vous obtiendrez un objet Task en retour, ou vous pouvez spécifier un CompletionListener en tant qu'argument. L'un ou l'autre indiquera quand les données sont reçues par le serveur. Si vous ne les utilisez pas, vous n'avez aucune autre indication. L'utilisation d'une fonction Cloud pour marquer l'emplacement lors de l'écriture est certainement une autre façon de le faire, si vous ne pouvez pas conserver Tâche ou CompletionListener.

+0

Bonne prise! il y a un rappel dans iOS aussi. Mais cela ne va pas persister si, par exemple, je quitte l'écran de discussion pour y revenir, je n'ai aucune idée si le message a été envoyé ou non (je ne pense pas pouvoir tenir la tâche entre le redémarrage de l'application, etc.). Je vais rester avec la fonction cloud alors! Merci de votre aide – PhilippeAuriach