Я хочу обновить базу данных Firebase, когда пользователь не подключен к Интернету. Это похоже на то, что вы находитесь в приложении, и вы закрываете интернет-соединение, теперь вы закрываете приложение. Поэтому я использую LifeCycleObserver
, чтобы определить, находится ли приложение на переднем плане или в фоновом режиме. Я хочу установить статус пользователя в автономном режиме, когда onStop вызывается в моем классе приложения. Когда подключение к Интернету включено, оно работает отлично.
Я пробовал OnDisconnect().setValue(-), но он не работает. Может ли кто-нибудь помочь мне решить эту проблему?
userDatabase.child(AppConstants.USER_IS_ONLINE).onDisconnect().setValue(status,object : DatabaseReference.CompletionListener{
override fun onComplete(p0: DatabaseError?, p1: DatabaseReference) {
Log.d("Success","YES")
}
})
Когда ты звонишь onDisconnect()
? Имейте в виду, что вы должны вызвать это, когда пользователь является подключился к серверу, иначе клиент не сможет отправить эту инструкцию на сервер.
Я вызываю onDisconnect(), когда приложение находится на переднем плане и в фоновом режиме оба раза. При включенном интернет-соединении все работает нормально.
Спасибо за вашу помощь @Frank van Puffelen и Alex Mamo. Я решил эту проблему. Еще раз спасибо Фрэнку ван Паффелену, что ваш пункт «вы должны вызывать это, когда пользователь подключен к серверу» щелкнул в моей голове. теперь он работает отлично. OnDisconnect вызывается, когда наше приложение подключается к серверу. Следующая проблема, с которой я столкнулся, как вернуть пользователя в сеть, когда у меня снова появился интернет, для которого я использовал график работы. Теперь все работает нормально, спасибо, ребята
I want to update firebase database when user is not connected to internet.
Вы не можете сделать это. Поскольку между устройством пользователя и серверами Firebase нет интернет-соединения, вы не можете ничего обновить. Подключение к Интернету обязательно для доступа к серверной части Firebase.
Пользователь может отключиться от базы данных Firebase двумя способами. Для этого см. Ответ Франка ван Пуффелена из следующего сообщения:
В сообщении выше он упомянул: «В случае чистого отключения ваши обработчики onDisconnect немедленно сработают, и, таким образом, ваша база данных будет немедленно обновлена». но я использую onDisconnect(). все равно не работает??
Да, в случае чистого отключения сработают обработчики onDisconnect. Если обработчики не сработают, значит у вас не чистый дисконнект, верно?