Чтобы решить эту проблему, вы можете создать новый узел в вашей базе данных Firebase для хранения всех онлайн-пользователей, поэтому, когда пользователь откроет приложение, вы немедленно добавите его идентификатор в этот новый созданный узел.Затем, если вы хотите проверить, находится ли пользователь в сети, просто проверьте, есть ли его идентификатор в списке.
Вы также можете добавить новое свойство с именем isOnline
для каждого пользователя в вашей базе данных, а затем соответственно.
Для этого я рекомендую использовать встроенный в Firebase метод onDisconnect()
.Это позволяет вам заранее определить операцию, которая произойдет, как только клиент отключится.
См. Документация Firebase .
Вы также можете определить состояние подключения пользователя,Для многих функций, связанных с присутствием, вашему приложению полезно знать, когда оно подключено к сети или отключено.База данных Firebase Realtime предоставляет специальное местоположение в /.info/connected
, которое обновляется каждый раз, когда изменяется состояние подключения клиента базы данных Firebase Realtime.Вот пример также из официальной документации:
DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
System.out.println("connected");
} else {
System.out.println("not connected");
}
}
@Override
public void onCancelled(DatabaseError error) {
System.err.println("Listener was cancelled");
}
});