【问题标题】:How to clear quickblox unread message count in chat server?如何清除聊天服务器中的 quickblox 未读消息计数?
【发布时间】:2016-01-18 08:47:22
【问题描述】:

我正在使用 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 的一部分)?

【问题讨论】:

    标签: android chat quickblox quickblox-android


    【解决方案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 的参数发送时,所有消息都标记为已读。

    【讨论】:

    • 此“QBChatService.markMessagesAsRead”不再可用。有什么选择吗? chatDialog.readMessage(chatMessage);似乎不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多