final DatabaseReference db = FirebaseDatabase.getInstance().getReference();
Query mSeenRef = db.child("Messages").child(MessageSenderId).child(MessageRecieverId).orderByChild("From").equalTo(MessageRecieverId);
mSeenRef.addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
if(dataSnapshot.exists()) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String keyId = ds.getKey();
DatabaseReference mSendersRef = db.child("Messages").child(MessageSenderId).child(MessageRecieverId).child(keyId);
DatabaseReference mRecieversRef = db.child("Messages").child(MessageRecieverId).child(MessageSenderId).child(keyId);
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("Seen", true);
mSendersRef.updateChildren(childUpdates);
mRecieversRef.updateChildren(childUpdates);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Этот код просто устанавливает SEEN=true
в базовом приложении чата, и он отлично работает, когда вы открываете действие.
Если пользователь A открывает чат-активность, B получает уведомление о том, что сообщения видны, и когда пользователь A находится в чате, B по-прежнему непрерывно получает уведомление о том, что A видит сообщения Bs, но как только A выходит из чата, отправленные сообщения B по-прежнему называются как видно по А, хотя А не находится внутри активности.
Только когда A закрывает приложение (даже из фона), B прекращает отправлять свои сообщения A, как видит А.
Я уверен, что проблема в этом методе, поэтому я просто хочу знать, как заставить этот метод перестать выполняться после закрытия действия. Этот метод находится в onCreate ChatActivity
.