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