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
しかし、私がログインしたときに、「匿名」アカウントのすべてのデータが失われました。どうして?この「匿名」アカウントを既存のデータとすべてのデータにマージする必要があります。または私はこれを手動で行う必要がありますか?
どのデータを参照してください? Firebaseのユーザーのアカウントを意味しますか?またはデータベース内にありますか? – Jad
データはFirebaseのデータであり、データが削除されない限り、データは失われません。開発者は、どのデータにアクセスできるかを制御します。問題は超曖昧である。匿名ユーザーが50人いる場合はどうなりますか?各匿名ユーザーにどのデータが属しているかはどのように分かりますか? Firebaseにはマージ機能がないので、現在のユーザがその匿名データにアクセスできるようにアプリケーションをコーディングすることは、コードの機能です。私たちがそれに答えるように質問を明確にしてください。 – Jay
@Jay ok、不明な質問を申し訳ありません。各ユーザーには、たとえばToDoリストがあります。だから私はアカウントをリンクするときに私は手動で新しいユーザーにすべてのアイテムの所有者を変更する必要がありますか? – Arti