IM 即时通讯
Android
开发指南

查询@我的消息

更新时间: 2023/09/22 17:11:39

SDK 支持查询指定频道中@当前用户的未读消息,同时也支持批量查询消息是否@当前用户。

其中@当前用户的未读消息包括以下三种:

  • 未读消息设置的@账号列表中包含当前用户。
  • 未读消息设置的需要@的身份组(不包括 everyone 身份组)中包含当前用户。
  • 未读消息设置的需要@所有人。

查询结果中不包括自己发送的消息。

查询指定频道中@当前用户的未读消息

通过调用 getMentionedMeMessages 方法查询指定频道中@当前用户的未读消息列表。

其中入参 timeTag 为查询起始时间,传入 0 表示当前时间,查询 ackTime(用户查看过的最后一条信息的时间)到 timeTag 时间范围内@当前用户的未读消息。查询顺序默认为倒序查询。

limit 指查询的消息数量上限,默认值和最大值都为 200。当 limit 传入 0,则使用默认值 200。

如果查询时间范围之间消息大于 limit 条,返回 limit 条记录;如果小于 limit 条,返回实际条数;当已经查询到头时,返回的结果列表的 size 可能会比 limit 小。

示例代码:

QChatChannel currentChannel = getCurrentChannel();
QChatGetMentionedMeMessagesParam param = new QChatGetMentionedMeMessagesParam(currentChannel.getServerId(),currentChannel.getChannelId());
//传入 0 表示当前时间
param.setTimetag(0L);
//默认200
param.setLimit(100);
NIMClient.getService(QChatMessageService.class).getMentionedMeMessages(param).setCallback(new RequestCallback<QChatGetMentionedMeMessagesResult>()
{
    @Override
    public void onSuccess(QChatGetMentionedMeMessagesResult result)
    {   //查询成功,返回@我的未读消息列表
        List<QChatMessage> messages = result.getMessages();
    }

    @Override
    public void onFailed(int code)
    {
        //查询失败,返回错误code
    }

    @Override
    public void onException(Throwable exception)
    {
        //查询异常
    }
});

批量查询消息是否@当前用户

通过调用 areMentionedMeMessages 方法批量查询消息是否@当前用户。

传入的待查询的消息必须为同一服务器下的消息,否则将返回 414错误码。

传入的 msgList 最多 100 条,即调用该接口一次最多查询 100 条消息。

示例代码:

List<QChatMessage> messageList = getSelectedMsgList();
QChatAreMentionedMeMessagesParam param = new QChatAreMentionedMeMessagesParam(messageList);
NIMClient.getService(QChatMessageService.class).areMentionedMeMessages(param).setCallback(new RequestCallback<QChatAreMentionedMeMessagesResult>()
{
    @Override
    public void onSuccess(QChatAreMentionedMeMessagesResult result)
    {
        //查询成功,返回消息是否@当前用户的结果map,key为uuid
        Map<String, Boolean> resultMap = result.getResult();
    }

    @Override
    public void onFailed(int code)
    {
        //查询失败,返回错误code
    }

    @Override
    public void onException(Throwable exception)
    {
        //查询异常
    }
});
此文档是否对你有帮助?
有帮助
去反馈
  • 查询指定频道中@当前用户的未读消息
  • 批量查询消息是否@当前用户