2017-01-08 5 views
0

私のアプリユーザーは、デバイス間で同期することなく作業できます。その場合、私はanonymousユーザーアカウントを使用します。 AppDelegate.swiftで :Firebaseで複数の匿名ユーザーデータをマージする

FIRAuth.auth()?.addStateDidChangeListener { auth, user in 
      if user != nil { 
       print("User auth with account") 
      } else { 
       FIRAuth.auth()?.signInAnonymously() { (user, error) in 
        if FIRAuth.auth()?.currentUser != nil { 
         print("User auth anonymously") 
        } else { 
         print(error) 
        } 
       } 
      } 
     } 

今、ユーザーは自分がログインする必要がありますTODOリストを同期したい場合、私はこの機能でこれを実行します。

let credential = FIREmailPasswordAuthProvider.credential(withEmail: self.textFieldLoginEmail.text!, password: self.textFieldLoginPassword.text!) 
    FIRAuth.auth()?.currentUser?.link(with: credential, completion: { user, error in 
     if error == nil { 
      FIRAuth.auth()!.signIn(withEmail: self.textFieldLoginEmail.text!, 
            password: self.textFieldLoginPassword.text!) 
     } 
    }) 

私のようなFirebaseでのtodo-アイテム保管:

todoitems 
----user_id 
--------todo-item_id 

しかし、私がログインしたときに、「匿名」アカウントのすべてのデータが失われました。どうして?この「匿名」アカウントを既存のデータとすべてのデータにマージする必要があります。または私はこれを手動で行う必要がありますか?

+1

どのデータを参照してください? Firebaseのユーザーのアカウントを意味しますか?またはデータベース内にありますか? – Jad

+0

データはFirebaseのデータであり、データが削除されない限り、データは失われません。開発者は、どのデータにアクセスできるかを制御します。問題は超曖昧である。匿名ユーザーが50人いる場合はどうなりますか?各匿名ユーザーにどのデータが属しているかはどのように分かりますか? Firebaseにはマージ機能がないので、現在のユーザがその匿名データにアクセスできるようにアプリケーションをコーディングすることは、コードの機能です。私たちがそれに答えるように質問を明確にしてください。 – Jay

+0

@Jay ok、不明な質問を申し訳ありません。各ユーザーには、たとえばToDoリストがあります。だから私はアカウントをリンクするときに私は手動で新しいユーザーにすべてのアイテムの所有者を変更する必要がありますか? – Arti

答えて

関連する問題