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

标签 android chat quickblox quickblox-android

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

  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 类(我必须手动设置它。根据 markMessageAsRead 函数将消息标记为已读需要 MessageId。但是,我不知道从哪里获取此 message_id( messageCache.getId()),从每个对话框(组)我得到最后发送的消息(文本)和发件人 Id 但不是 messageId 并且似乎还有一个休息 API 将组内的所有消息标记为已读,其中我需要仅传递对话框 ID。请建议如何获取消息 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 的参数发送时,所有消息都被标记为已读。

关于android - 如何清除聊天服务器中的 quickblox 未读消息数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34850484/

相关文章:

google-app-engine - 注册应用程序时自动订阅用户

ios - 在 iOS 聊天中的 QuickBlox QBUUser 中设置聊天/头像

android - Quickblox 错误 : "Unexpected Signature" while login ChatService in Android

android - 定期获取位置并绘制标记以映射

android - 在 firebaseAuth 中获取错误 "cannot resolve symbol getInstance"

python - 使用 Python 和 websocket 创建实时聊天

ios - 快速布洛克 : FB user cannot login in the chat

android - Quickblox:如何查明用户是否在线?

android - 如何在移动时删除从源到当前位置的多段线路径

android - 用GDB远程调试纯C程序