2017-03-30 6 views
3

私のページが読み込まれたら、ユーザーがログインしていて、それに基づいて別のタスクを実行しているかどうかを知る必要があります。私が最初に行うことは、ログインしているかどうかを確認することですが、なんらかの理由でifステートメントがそれが2回検証されていることを確認することです。ここに私のコードがあります:認証状態変更リスナーが2回発生していますか?

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

ページが1回ではなく読み込まれたときに、「ユーザーがログインしました」というメッセージがコンソールに2回出力されます。間違って何かしていますか?

+0

にそれらの一つをチェックするには、かもしれません。 –

+0

最初の検証後にフラグ変数を設定するだけで、すべての関数を2回実行する必要はありませんか? – MarksCode

答えて

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

  • 関連する問題