首先我需要在这种情况下,知道这是第一个用户登录(登录-后注册也算作第一),所以我可以将它们添加到数据库中。 为了这个目的,我有这样的检查:
func isNewUser(userMetadata: UserMetadata) -> Bool {
return userMetadata.creationDate == userMetadata.lastSignInDate && !UserDefaults.standard.hasLoggedIn
}
我需要UserDefaults
检查,因为creationDate和lastSignInDate将等于直到用户注销的那一刻。
一切正常,直到今天,当我得到这些奇怪的日志:
(lldb) po userMetadata.creationDate
▿ Optional<Date>
▿ some : 2019-02-06 21:18:15 +0000
- timeIntervalSinceReferenceDate : 571180695.0
(lldb) po userMetadata.lastSignInDate
▿ Optional<Date>
▿ some : 2019-02-06 21:18:15 +0000
- timeIntervalSinceReferenceDate : 571180695.1040001
日期看起来是一样的,但对平等检查失败。
在那里我调用的代码isNewUser
:
authListener = Auth.auth().addStateDidChangeListener { [unowned self] (auth, user) in
if let firebaseUser = user, Auth.auth().isNewUser(userMetadata: firebaseUser.metadata) {
self.handleNewUser(firebaseUser)
}
}
该文件并没有说太多关于首次登录。 我知道有一个isNewUser
物业AdditionalUserInfo
类,但我不知道我该如何使用它。 因此,任何帮助将不胜感激。 谢谢