我正在将 quickblox android sdk 用于群聊应用程序,它运行良好,但如果在我离线时发送消息,我将无法接收推送通知。所以我决定查询未读消息数,但我从服务器得到 0
。我不知道我必须做些什么才能让用户在用户不在线时能够接收到通知的群聊对话框。
这是我用来查询未读消息的代码:
Set<String> dialogIds = new HashSet<String>();
String groupChatId = groupChat.getDialogId();
System.out.println("GroupChat Id: "+groupChatId);
dialogIds.add(groupChatId);
QBChatDialog chatDialog = new QBChatDialog(groupChatId);
QBMessageGetBuilder messageGetBuilder = new QBMessageGetBuilder();
messageGetBuilder.setLimit(500);
messageGetBuilder.sortDesc("date_sent");
QBRestChatService.getTotalUnreadMessagesCount(dialogsIds).performAsync(new QBEntityCallback<Integer>() {
@Override
public void onSuccess(Integer total, Bundle params) {
Log.i(TAG, "total unread messages: " + total);
// if you have more then one dialog you can get each value with params.getInt(dialog_id)
}
@Override
public void onError(QBResponseException e) {
e.printStackTrace();
}
});
最佳答案
第一部分是正确的:
Set<String> dialogIds = new HashSet<String>();
String groupChatId = groupChat.getDialogId();
dialogsIds.add(groupChatId);
但是,在那之后您就没有使用 dialogIds
。而且,您需要使用 getTotalUnreadMessagesCount()
而不是 getDialogMessages ()
,如下所示:
QBRestChatService.getTotalUnreadMessagesCount(dialogIds).performAsync(new QBEntityCallback<Integer>() {
@Override
public void onSuccess(Integer total, Bundle params) {
Log.i(TAG, "totat messages: " + total);
// if you have more then one dialog you can get each value with params.getInt(dialog_id)
}
@Override
public void onError(QBResponseException e) { }
});
关于android - 在 quickblox 中未收到未读消息计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41406905/