Android Firebase Новый запрос сообщений - PullRequest
0 голосов
/ 07 апреля 2019

Я дал здесь снимок моего чата в Firebase.Код, который я включил здесь, может получить сообщение одного узла.Я хочу найти во всех чатах с одним запросом новые сообщения, чтобы можно было отправить push-уведомление.Кроме того, как узнать, является ли сообщение новым и какое последнее сообщение я получил?

private void loadEventListFromDatabase() 
{
    DatabaseRef.userRef.child("ChatRoom").child(roomID).addChildEventListener(new ChildEventListener() {

    @Override
    public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            GetMessage getMessage = dataSnapshot.getValue(GetMessage.class);
            Message message = new Message(getMessage.getMessageBody(),getMessage.getCreator(),imageCode);
            recyclerViewRCV.setLayoutManager(getMyLinearLayout());
            recieveMessageList.add(message);
            recieveMsgAdapter.notifyDataSetChanged();

        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

enter image description here

1 Ответ

0 голосов
/ 07 апреля 2019

Запросы к базе данных Firebase работают со списком узлов, а не с деревом. Если вы хотите получить список всех новых сообщений во всех комнатах, у вас должен быть список всех сообщений во всех комнатах.

Подробнее об этом см .:


В Firebase ничего не встроено, чтобы отследить, какие сообщения новые между двумя моментами, когда вы присоединяете слушателя. Это означает, что вам нужно построить его самостоятельно.

Два общих подхода:

  • Отслеживание того, какие сообщения прочитал каждый пользователь.
  • Отслеживание последних сообщений, прочитанных каждым пользователем.

Последний, безусловно, самый простой и распространенный. В вашем случае вы можете просто сохранить ключ последнего сообщения, увиденного пользователем (либо в базе данных, либо в локальном хранилище приложения), а затем передать его в следующий раз с помощью ref.orderByKey().startAt(lastKeySeen).

Подробнее об этом см .:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...