Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Firebase.database.getReference(".info/connected") not working #1499

Open
hicks17 opened this issue May 24, 2023 · 0 comments
Open

Firebase.database.getReference(".info/connected") not working #1499

hicks17 opened this issue May 24, 2023 · 0 comments

Comments

@hicks17
Copy link

hicks17 commented May 24, 2023

Step 1: Describe your environment

  • Android device: Xiaomi Redmi Note 10s
  • Android OS version: 12
  • Google Play Services version: 1.37 (my cellphone)
  • Firebase/Play Services SDK version: 31.1.1 && 4.3.14

Step 2: Describe the problem:

I have an app that uses Realtime Database, and I need to handle connection errors so I use Firebase.database.getReference(".info/connected") to know when I'm connected and when I'm not. everything works fine when i start or restart the app, but about a minute (sometimes more, never less) it disconnects from firebase, and the connection is always negative, i can't upload scores (i have a quiz) or make queries, it just disconnects without apparent reason.

Steps to reproduce:




Observed Results:

  • What happened? This could be a description, logcat output, etc.

At some point in the life cycle of the application in the logcate it appears to me that it has been disconnected for no reason, even without doing anything in the application, this logcat simply appears:

023-05-24 14:08:45.348 18112-18112 ContentValues com.example.geoquizmx W my Class: not connected
2023-05-24 14:08:45.348 18112-18112 ContentValues com.example.geoquizmx W callbackgetUserData byUid: false
2023-05-24 14:08:45.348 18112-18112 ContentValues com.example.geoquizmx W my Class: not connected
2023-05-24 14:08:45.348 18112-18112 ContentValues com.example.geoquizmx W callback getSinglerecordByUid: false
2023-05-24 14:08:45.348 18112-18112 ContentValues com.example.geoquizmx W my Class: not connected
2023-05-24 14:08:45.348 18112-18112 ContentValues com.example.geoquizmx W callback getSinglerecordByUid: false
2023-05-24 14:08:45.348 18112-18112 ContentValues com.example.geoquizmx W my Class: not connected
2023-05-24 14:08:45.348 18112-18112 ContentValues com.example.geoquizmx W callbackgetUserData byUid: false
2023-05-24 14:08:45.348 18112-18112 ContentValues com.example.geoquizmx W my Class: not connected
2023-05-24 14:08:45.348 18112-18112 ContentValues com.example.geoquizmx W callbackgetUserData byUid: false
2023-05-24 14:08:45.348 18112-18112 ContentValues com.example.geoquizmx W my Class: not connected
2023-05-24 14:08:45.348 18112-18112 ContentValues com.example.geoquizmx W callbackgetUserData byUid: false
2023-05-24 14:08:45.349 18112-18112 ContentValues com.example.geoquizmx W my Class: not connected
2023-05-24 14:08:45.349 18112-18112 ContentValues com.example.geoquizmx W callbackgetUserData byUid: false
2023-05-24 14:08:45.349 18112-18112 ContentValues com.example.geoquizmx W my Class: not connected
2023-05-24 14:08:45.349 18112-18112 ContentValues com.example.geoquizmx W callbackgetUserData byUid: false
2023-05-24 14:08:45.349 18112-18112 ContentValues com.example.geoquizmx W my Class: not connected
2023-05-24 14:08:45.349 18112-18112 ContentValues com.example.geoquizmx W callback getSinglerecordByUid: false

Expected Results:

  • What did you expect to happen?

Relevant Code:

// TODO(you): code here to reproduce the problem

class FirebaseConnection {
      private var connected: Boolean = false

      fun checkConnection(callback: (Boolean) -> Unit) {
          val connectedRef = Firebase.database.getReference(".info/connected")

          connectedRef.addValueEventListener(object : ValueEventListener {
              override fun onDataChange(snapshot: DataSnapshot) {
                  val isConnected:Boolean? = snapshot.getValue(Boolean::class.java)
                  if (isConnected == true) {
                      connected = true
                      Log.w(TAG, "my Class: connected")
                  } else if(isConnected == false){
                      Log.w(TAG, "my Class: not connected")
                      connected = false
                  }

                  callback(connected)
              }

              override fun onCancelled(error: DatabaseError) {
                  Log.w(TAG, "Listener was cancelled")
                  callback(false)
              }
          })
      }

}

override suspend fun getSingleRecordByUid(uid: String, typeRec: String): DataSnapshot? {
      return withContext(Dispatchers.IO){
          val myClass = FirebaseConnection()

          var connection: Boolean? = null
          myClass.checkConnection { isConnected ->
              Log.w(TAG, "callback getSinglerecordByUid: $isConnected")
              connection = isConnected
          }

          while (connection == null) {
              // Esperar hasta que se complete la llamada de retorno
              delay(10)
          }

          if(connection as Boolean) userInstance.child(uid).child(typeRec).get().await() else null
      }
  }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant