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

时间:2016-01-18 08:47:23

标签: android chat quickblox quickblox-android

我正在使用quickblox SDK构建聊天应用,并希望在用户点击并查看群组内的消息时清除聊天对话框中的未读消息计数(群聊中的列表项)。为此,我发现这篇文章代码,

$.ajax({
  url: 'http://41.128.183.109:9090/api/Data/getloginer?medid=a&pass=a',
  type: 'Get',
  success: function (data) {
        alert(data[0].Medical_id);
  }
});

这里的messagecache是​​一个bean类,包含有关消息的所有细节(我必须手动设置它。将消息标记为read需要MessageId作为markMessageAsRead函数。但是,我不知道从哪里获取此message_id( messageCache.getId()),从每个对话框(组)我得到最后一条消息发送(文本)和发送者ID但不是messageId,似乎还有一个rest API将组内的所有消息标记为read,其中我需要仅传递对话框Id.Kindly建议如何获取消息ID(是否必须将其添加到messagesId列表?)或者我应该使用rest API(不是SDK的一部分)?

1 个答案:

答案 0 :(得分:1)

我建议你使用这种方法:

   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的参数发送时,所有消息都标记为read。