如何清除聊天服务器中的 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 的参数发送时,所有消息都标记为已读。
我正在使用 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 的参数发送时,所有消息都标记为已读。