我会在注册时将用户数据保存到firebase中,但是如果他创建了Auth帐户然后在保存他的信息之前丢失了连接,则会出现问题,这意味着他将获得没有任何电子邮件的密码个人资料信息。
所以问题是如果他失去连接或退出应用程序后如何再次设置值?
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.
答案 0 :(得分:2)
您需要启用磁盘持久性:
Database.database().isPersistenceEnabled = true
Firebase应用自动处理临时网络中断。离线时可以使用缓存数据,Firebase会在网络连接恢复后重新发送任何写入内容。
答案 1 :(得分:0)
这里有两个选项:
使用磁盘持久性,这意味着当用户重新联机时将写入数据。这就是Pipiks的回答所解释的。
不要依赖客户端来创建注册信息,而是使用云功能。
对于第二个选项,您使用Cloud Functions for Firebase撰写JavaScript code that is executed on Google's servers when the user account is created。请参阅此example of sending a welcome email(您必须修改以写入数据)。