我正在检查是否存在用户会话并创建匿名帐户(如果没有
直到几天前才开始工作,但是在发布之前,我们进行了最终检查,现在用户检查返回了一个用户ID,即使不应该是一个用户ID。
应用程序已经新安装,但是usr永远不会是零 - 这正是我所期望的。每次卸载并重新安装时,用户ID都完全相同。 Firebase中未创建任何匿名用户。
故事中的另一个扭曲可能有助于诊断。它在模拟器上按预期工作......我最近一直在设置推送通知。
// Check if user is logged in, if not, create anonymous auth so users can access DB and storage w/o an account
let checkAuth = Auth.auth().addStateDidChangeListener { auth, usr in
if usr == nil {
// No user is signed in.
Auth.auth().signInAnonymously() { (usr, err) in
if (err == nil) {
let uid = usr!.uid
print("Anon User ID \(uid)")
} else {
print("Anon auth error \(String(describing: err!.localizedDescription))")
}
}
} else {
print("User ID \(usr!.uid) and provider \(usr!.providerID)")
}
}
Auth.auth().removeStateDidChangeListener(checkAuth)
return true
答案 0 :(得分:0)
Firebase可能会使用钥匙串来存储用户会话。钥匙串在模拟器和设备上的表现不同。因为它使用了钥匙串,所以存储的用户会话将在app卸载/重新安装后继续使用。
一个简单的修复:使用UserDefaults存储一个标志,该标志确定这是否是自安装以来该应用程序的首次运行。在AppDelegate
中,查阅标记try? Auth.auth().signOut()
并更新标记。