如何清除聊天服务器中的 quickblox 未读消息数?

How to clear quickblox unread message count in chat server?

我正在使用 quickblox SDK 构建聊天应用程序,并希望在用户单击并查看 group.For 中的消息时清除聊天对话框(群聊中的列表项)中的未读消息数我找到了这段代码,

  public void updateStatusMessageReadServer(String dialogId, MessageCache messageCache,
                                          boolean fromPrivate) throws Exception {
    StringifyArrayList<String> messagesIdsList = new StringifyArrayList<String>();
    messagesIdsList.add(messageCache.getId());
    QBChatService.markMessagesAsRead(dialogId, messagesIdsList);

    if (fromPrivate) {
        QBPrivateChat privateChat = createPrivateChatIfNotExist(messageCache.getSenderId());
        privateChat.readMessage(messageCache.getId());
    }
}

这里的 messagecache 是一个包含有关消息的所有详细信息的 bean class(我必须将此 manually.Marking 消息设置为读取需要 MessageId as per markMessageAsRead function.However,我不我不知道从哪里得到这个 message_id(messageCache.getId()),从每个对话框(组)我得到最后发送的消息(文本)和发件人 ID 但不是 messageId 而且似乎还有一个rest API 将组内的所有消息标记为已读,其中我只需要通过对话框 Id.Kindly 建议如何获取消息 ID(是否必须将其添加到 messagesId 列表?)或我应该改用 rest API(不是 SDK 的一部分)吗?

我建议你使用这个方法:

   QBChatService.markMessagesAsRead("YOUR_DIALOG_ID", null, new QBEntityCallback<Void>() {

        @Override
        public void onSuccess(Void aVoid, Bundle bundle) {

            QBRequestGetBuilder requestBuilder = new QBRequestGetBuilder();
            requestBuilder.eq("_id", Team.getCurrent().getChatId());

            QBChatService.getChatDialogs(null, requestBuilder, new QBEntityCallback<ArrayList<QBDialog>>() {
                @Override
                public void onSuccess(ArrayList<QBDialog> qbDialogs, Bundle bundle) {
                    if (qbDialogs != null && qbDialogs.size() > 0) {
                        QBDialog dialog = qbDialogs.get(0);//here you get your dialog with unreadMessageCount = 0
                    }
                }

                @Override
                public void onError(QBResponseException e) {

                }
            });
        }

        @Override
        public void onError(QBResponseException e) {

        }
    });

当 null 作为 messageIds 的参数发送时,所有消息都标记为已读。