Auth状态更改侦听器被触发两次?

时间:2017-03-30 04:22:42

标签: ios swift firebase firebase-authentication

当我的页面加载时,我需要知道用户是否已登录并基于此执行不同的任务。我要做的第一件事是检查它们是否已登录,但由于某种原因,要检查的if语句是否正在验证两次。这是我的代码:

override func viewDidAppear(_ animated: Bool) {
    FIRAuth.auth()?.addStateDidChangeListener { auth, user in
        if let user = user {
           print("User is logged in")
        }

“用户已登录”在页面加载时打印两次而不是仅打印一次。我做错了吗?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。它不是用于登录的。它可以面临流动的选择  https://firebase.google.com/docs/reference/android/com/google/firebase/auth/FirebaseAuth.AuthStateListener

  • 听众注册后
  • 用户登录后
  • 当前用户退出时
  • 当前用户更改时
  • 当前用户的代币
  • 发生变化时

所以只需要一个标志然后检查一个。或检查回复nil是否

尝试这种方式:

override func viewDidAppear(_ animated: Bool) {
    FIRAuth.auth()?.addStateDidChangeListener { auth, user in
        if let user = user {
            if user != nil {
               print("User is logged in")
           }
        }

注意:尝试同时使用flag并检查user =! nil