1

我正在将 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();
}
});
4

1 回答 1

1

第一部分是正确的:

Set<String> dialogIds = new HashSet<String>();
String groupChatId = groupChat.getDialogId();
dialogsIds.add(groupChatId);

但是,在那之后你没有使用dialogIds. 而且,而不是getDialogMessages ()你需要使用getTotalUnreadMessagesCount()如下:

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) { }
});
于 2016-12-31T09:16:14.743 回答