3 votes

Firebase setValue sur hors ligne

Je voudrais sauvegarder les données de l'utilisateur dans Firebase lorsqu'il s'inscrit, mais il y a un problème : s'il a créé un compte Auth et qu'il perd la connexion avant de sauvegarder ses informations, il recevra un e-mail. \Password sans aucune information sur le profil.

La question est donc de savoir comment rétablir la valeur s'il perd la connexion ou quitte l'application.

FIRAuth.auth()?.createUser(withEmail: self.emailTxt.text!, password: self.passTxt.text!, completion: {
        (user, error) in
        if error != nil {
            if let isError = error?.localizedDescription
            {
                print(isError)
            } else {
                print("Error: 33")
            }
        }
        else if user != nil
        {
            // Email and password created
            let userInfo: [String : Any] = ["timestamp": FIRServerValue.timestamp(),
                                            "uid" : user!.uid,
                                            "email" : self.emailTxt.text!,
              //  This info must be send again if its failed.
                                        ]
              self.ref.child("users").child("profile").child((user?.uid)!).setValue(userInfo) {
                (error, ref) in

                if error != nil {
                    print("error set profile info")
                    // What should i do if its failed? 
                } else {
                    print("done creating user's profile")
                }
        }
    }
    }// Completion end.

2voto

Pipiks Points 1663

Vous devez activer le Persistance des disques :

Database.database().isPersistenceEnabled = true

Les applications Firebase gèrent automatiquement les interruptions temporaires du réseau. Les données mises en cache sont disponibles lorsqu'elles sont hors ligne et Firebase renvoie toute écriture lorsque la connectivité réseau est rétablie.

Ici, le Documentation sur les capacités hors ligne de Firebase.

0voto

Frank van Puffelen Points 16029

Vous avez deux options ici :

  1. Utilisez la persistance du disque, ce qui signifie que les données seront écrites lorsque l'utilisateur se reconnectera. C'est ce qu'explique la réponse de Pipiks.

  2. Ne comptez pas sur le côté client pour créer les informations d'enregistrement, mais utilisez une fonction cloud.

Pour la deuxième option, vous utilisez Fonctions en nuage pour Firebase pour écrire Code JavaScript qui est exécuté sur les serveurs de Google lors de la création du compte utilisateur. . Voir cette exemple d'envoi d'un courriel de bienvenue (que vous devrez modifier pour écrire dans les données à la place).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X