在quickblox中没有收到未读消息

时间:2016-12-31 08:59:55

标签: android quickblox quickblox-android

我正在使用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();
}
});

1 个答案:

答案 0 :(得分: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) { }
});