IM 即时通讯
Android
产品介绍
简介
产品优势
主要功能
功能介绍
帐号集成与登录
群组功能
聊天室功能
聊天室标签功能
圈组功能
多端登录与互踢策略
质量数据监控台
海外数据中心
IM平滑迁移方案
接口及业务限制
更新日志
IM UIKit 更新日志
NIM SDK 开发版更新日志
NIM SDK 稳定版更新日志
体验 Demo
下载 SDK 与 Demo 源码
快速开始
跑通 IM Demo 源码
实现单聊消息收发(不含 UI)
跑通圈组 Demo 源码
实现圈组消息收发(不含 UI)
含 UI 集成
什么是 IM UIKit
IM UIKit 功能概览
快速集成 IM UIKit
组件导入
初始化
界面跳转
自定义用户信息
全局配置
会话列表相关
集成会话列表界面
会话列表事件监听
自定义会话列表界面 UI
会话列表 API 概览
会话消息相关
集成会话界面
会话界面事件监听
实现音视频通话
实现地理位置消息功能(含 UI)
实现自定义消息发送(含 UI)
自定义会话界面 UI
会话消息 API 概览
通讯录相关
集成通讯录界面
自定义通讯录界面 UI
通讯录界面事件监听
通讯录 API 概览
IM UIKit 常见问题排查
IM UIKit API 概览
不含 UI 集成
集成 SDK
初始化
登录相关
登录 IM
多端登录与互踢
登出 IM
消息相关
消息概述
消息收发
自定义消息收发
消息配置选项
NOS 存储场景
广播消息收发
消息已读回执
消息撤回
消息重发与转发
消息更新
消息过滤
语音消息处理
插入本地消息
历史消息
最近会话
服务端会话服务
用户资料
用户关系
在线状态订阅
系统通知
系统通知概述
内置系统通知管理
内置系统通知未读数
自定义系统通知收发
离线推送与消息提醒
群组功能
群组概述
群组管理
群成员管理
群消息管理
超大群功能
聊天室
圈组功能
圈组概述
登录管理
服务器相关
服务器概述
服务器管理
服务器成员管理
游客功能
服务器未读数管理
频道相关
频道概述
频道管理
频道黑白名单
实时互动频道
频道分组
频道分组黑白名单
频道未读数管理
搜索服务器和频道
身份组相关
身份组概述
身份组应用场景
服务器身份组
频道身份组
用户定制权限
频道分组身份组
自定义权限项
成员权限查询与判定
身份组相关查询
圈组订阅机制
圈组消息相关
图解圈组消息流转
圈组消息收发
圈组消息撤回
圈组消息更新
圈组消息删除
消息正在输入
会话消息回复(Thread)
圈组快捷评论
获取频道最后一条消息
查询历史消息
查询@我的消息
圈组消息缓存
圈组消息搜索
圈组系统通知相关
圈组系统通知概述
圈组系统通知收发
圈组系统通知更新
圈组离线推送
圈组内容审核
圈组相关抄送
圈组第三方回调
圈组各端接口命名差异
反垃圾
聊天扩展
其他
最佳实践
IM 登录最佳实践
IM 应用隐私合规
聊天室重要消息投递
API 参考
Android SDK API
Android SDK 状态码
IM 控制台指南
创建应用
注册 IM 账号
升级服务
开通聊天室功能
配置应用客户端标识
常见问题
FAQ
错题集
Android 端推送问题排查
第三方推送厂商的限制说明
服务协议

消息扩展(本文已不再维护)

更新时间: 2023/01/30 18:58:36

本文已不再维护,请前往会话消息回复(Thread)圈组快捷评论查看相关文档。


9.1.0 版本开始提供圈组消息相关扩展功能,包括 会话消息回复消息快捷评论等。所有功能包含在 QChatMessageService 接口中。

圈组的会话消息回复消息快捷评论属于增值功能,需先在云信控制台开通后才能使用。

会话消息回复

回复消息

方法

可以通过以下方法对频道中某条消息进行回复:

/**
 * 回复消息
 * @param param
 * @return InvocationFuture 可设置回调函数,监听操作结果。回调中返回发送成功的消息
 */
InvocationFuture<QChatSendMessageResult> replyMessage(@NonNull QChatReplyMessageParam param);
  • QChatReplyMessageParam 中必须传入待发送消息参数和被回复的消息体,支持重发。

示例代码

    QChatSendMessageParam param = new QChatSendMessageParam(1607312,1492446, MsgTypeEnum.text);
    param.setBody("回复消息测试");

    QChatMessage replyMessage = getMessage();

    NIMClient.getService(QChatMessageService.class).replyMessage(new QChatReplyMessageParam(param,replyMessage)).setCallback(
            new RequestCallback<QChatSendMessageResult>() {
            @Override
            public void onSuccess(QChatSendMessageResult result) {
                //回复消息成功,返回发送成功的消息具体信息
                QChatMessage message = result.getSentMessage();
            }

            @Override
            public void onFailed(int code) {
                //回复消息失败,返回错误code
            }

            @Override
            public void onException(Throwable exception) {
                //回复消息异常
            }
        });

根据消息id查询历史消息

方法

可以通过传入 QChatMessageRefer 列表查询对应的消息详情列表:

/**
 * 根据消息id查询历史消息
 * @param param
 * @return InvocationFuture 可设置回调函ke数,监听操作结果。回调返回查询到的历史消息
 */
InvocationFuture<QChatGetMessageHistoryResult> getMessageHistoryByIds(@NonNull QChatGetMessageHistoryByIdsParam param);
  • QChatGetMessageHistoryByIdsParam中需要传入需要查询的ServerId、ChannelId和QChatMessageRefer列表。
  • QChatGetMessageHistoryResult中返回查询到的消息列表

示例代码

List<QChatMessageRefer> messageReferList = getMessageRefersList();
QChatGetMessageHistoryByIdsParam param = new QChatGetMessageHistoryByIdsParam(1607312,1492446,messageReferList);
NIMClient.getService(QChatMessageService.class).getMessageHistoryByIds(param).setCallback(
        new RequestCallback<QChatGetMessageHistoryResult>() {
            @Override
            public void onSuccess(QChatGetMessageHistoryResult param) {
                //查询成功,返回查询到的消息列表
                List<QChatMessage> messages = param.getMessages();
            }

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

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

根据消息查询被引用的消息详情

方法

可以通过以下方法查询 Thread 消息中某个消息的回复消息或根消息:

/**
 * 根据消息查询被引用的消息详情
 * @param param
 * @return
 */
InvocationFuture<QChatGetReferMessagesResult> getReferMessages(@NonNull QChatGetReferMessagesParam param);  
  • QChatGetReferMessagesParam传入要查询的消息不能是根消息,否则会返回414错误。
  • QChatGetReferMessagesParam中需要传入的消息引用类型QChatMessageReferType三种选择
    • REPLAY:只查询被回复的消息
    • THREAD:只查询根消息
    • ALL:同时查询被回复的消息和根消息
  • QChatGetReferMessagesResult中返回查询被回复的消息和根消息
    • 如果QChatMessageReferType为REPLAY或ALL才返回被回复消息,否则getReplyMessage()返回为null
    • 如果QChatMessageReferType为THREAD或ALL才返回根消息,否则getThreadMessage()返回为null

示例代码

QChatMessage message = getQueryMessage();
QChatMessageReferType referType = QChatMessageReferType.REPLAY;

NIMClient.getService(QChatMessageService.class).getReferMessages(new QChatGetReferMessagesParam(message,referType)).setCallback(
        new RequestCallback<QChatGetReferMessagesResult>() {
            @Override
            public void onSuccess(QChatGetReferMessagesResult result) {
                //查询成功
                //如果QChatMessageReferType为REPLAY或ALL才有,否则为null
                QChatMessage replyMessage = result.getReplyMessage();
                //如果QChatMessageReferType为THREAD或ALL才有,否则为null
                QChatMessage threadMessage = result.getThreadMessage();
            }

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

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

查询thread聊天的历史

方法

可以通过以下方法查询Thread聊天的历史消息

/**
 * 查询thread聊天的历史
 * @param param
 * @return
 */
InvocationFuture<QChatGetThreadMessagesResult> getThreadMessages(@NonNull QChatGetThreadMessagesParam param);

其中QChatGetThreadMessagesParam需要传入待查询的消息QChatMessage和消息查询选项QChatMessageQueryOption; QChatGetThreadMessagesResult会返回根消息QChatMessage、thread聊天信息QChatMessageThreadInfo和查询到的thread历史消息,其中QChatMessageThreadInfo中返回thread聊天的总回复数和thread聊天中的最后一条消息时间戳

  • QChatGetThreadMessagesParam需要传入待查询的消息QChatMessage可以是Thread聊天中的任意一条消息

QChatMessageQueryOption的参数说明如下:

类型 参数 说明
Long fromTime 起始时间
Long toTime 结束时间
Long excludeMessageId excludeMsgId,排除消息id
Integer limit limit,条数限制,默认
Boolean reverse reverse,是否反向

查询范围由 fromTime、toTime 和 limit 共同决定,以先到为准。

同时可以设置排除查询的消息id,用于排除查询时起始时间锚点的消息。

  • 如果 fromTime 上有多条消息,可以通过excludeMessageId来指定实际的起始时间为 excludeMsgId 对应的消息的下一条消息时间。
  • 如果fromTime到 toTime 之间消息大于 limit 条,返回 limit 条记录;如果小于 limit 条,返回实际条数;当已经查询到头时,返回的结果列表的 size 可能会比 limit 小。

toTime 如果设置为0则为当前时间。

默认返回逆序列表,可以通过 setReverse 设置是否反向。

如果17:00:00(fromTime )到18:00:00(toTime)的消息总共有200条,查询时最多返回100条。

  • 如果isReverse() ==false(即默认方式),则返回后100条,时间逆序排列,时间从新到旧。
  • 如果isReverse() ==true(反向方式),则前100条,时间正序排列,时间从旧到新。

当进行首次查询时,如果要查最新的100条,则fromTime=0, toTime=0, limit=0。

示例代码

QChatMessage message = getQueryMessage();
QChatMessageQueryOption messageQueryOption = new QChatMessageQueryOption();
//查询最新的100条Thread聊天消息
NIMClient.getService(QChatMessageService.class).getThreadMessages(new QChatGetThreadMessagesParam(message,messageQueryOption)).setCallback(
        new RequestCallback<QChatGetThreadMessagesResult>() {
            @Override
            public void onSuccess(QChatGetThreadMessagesResult result) {
                //查询成功
                //根消息
                QChatMessage threadMessage = result.getThreadMessage();
                //Thread聊天信息,包含Thread聊天的总回复数和Thread聊天中最后一条消息的时间戳
                QChatMessageThreadInfo threadInfo = result.getThreadInfo();
                //Thread聊天中的回复消息列表(不包含根消息)
                List<QChatMessage> messages = result.getMessages();
            }

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

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

批量查询thread聊天信息

方法

可以通过以下方法批量查询某个频道下的多个thread聊天信息:

/**
 * 批量查询thread聊天信息
 * @param param
 * @return
 */
InvocationFuture<QChatGetMessageThreadInfosResult> getMessageThreadInfos(@NonNull QChatGetMessageThreadInfosParam param);

其中QChatGetMessageThreadInfosParam中需要传入需要查询的ServerId、ChannelId和根消息列表 QChatGetMessageThreadInfosResult返回消息Thread聊天信息Map,key为传入根消息的uuid,value为QChatMessageThreadInfo

示例代码

List<QChatMessage> msgList = getThreadMsgList();
NIMClient.getService(QChatMessageService.class).getMessageThreadInfos(new QChatGetMessageThreadInfosParam(1607312,1492446,msgList)).setCallback(
        new RequestCallback<QChatGetMessageThreadInfosResult>() {
            @Override
            public void onSuccess(QChatGetMessageThreadInfosResult result) {
                //查询成功,返回Thread聊天信息Map,key为传入根消息的uuid,value为QChatMessageThreadInfo
                Map<String, QChatMessageThreadInfo> messageThreadInfoMap = result.getMessageThreadInfoMap();
            }

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

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

快捷评论

9.1.0版本开始可以对消息进行添加、删除快捷评论

添加快捷评论

方法

可以通过以下方法对频道中某条消息进行快捷评论:

/**
 * 添加一条快捷评论
 * @param param
 * @return
 */
InvocationFuture<Void> addQuickComment(@NonNull QChatAddQuickCommentParam param);

其中QChatAddQuickCommentParam需要传入待评论的消息QChatMessage和评论类型(int类型)

添加快捷评论成功后,频道内成员会收到一条系统通知(QChatSystemNotificationType.UPDATE_QUICK_COMMENT)。

示例代码

QChatMessage message = getMessage();
int type = 1;
NIMClient.getService(QChatMessageService.class).addQuickComment(new QChatAddQuickCommentParam(message,type)).setCallback(
        new RequestCallback<Void>() {
            @Override
            public void onSuccess(Void param) {
                //添加成功
            }

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

            @Override
            public void onException(Throwable exception) {
                //添加异常
            }
        });

删除快捷评论

方法

可以通过以下方法删除对某条消息的快捷评论:

/**
 * 删除一条快捷评论
 * @param param
 * @return
 */
InvocationFuture<Void> removeQuickComment(@NonNull QChatRemoveQuickCommentParam param);

其中QChatRemoveQuickCommentParam需要传入待评论的消息QChatMessage和评论类型(int类型)

删除快捷评论成功后,频道内成员会收到一条系统通知(QChatSystemNotificationType.UPDATE_QUICK_COMMENT)。

示例代码

QChatMessage message = getMessage();
int type = 1;
NIMClient.getService(QChatMessageService.class).removeQuickComment(new QChatRemoveQuickCommentParam(message,type)).setCallback(
        new RequestCallback<Void>() {
            @Override
            public void onSuccess(Void param) {
                //删除成功
            }

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

            @Override
            public void onException(Throwable exception) {
                //删除异常
            }
        });

批量查询快捷评论

方法

可以通过以下方法批量查询某个频道下的多个消息的快捷评论:

/**
 * 批量查询快捷评论
 * @param param
 * @return
 */
InvocationFuture<QChatGetQuickCommentsResult> getQuickComments(@NonNull QChatGetQuickCommentsParam param);

其中QChatGetQuickCommentsParam中需要传入需要查询的ServerId、ChannelId和消息列表 QChatGetQuickCommentsResult返回消息快捷评论详情Map,key为消息的MsgIdServer,value为QChatMessageQuickCommentDetail

其中QChatMessageQuickCommentDetail的参数说明如下:

返回值 参数 说明
Long getServerId() 获取服务器Id
Long getChannelId() 获取channelId
Long getMsgIdServer() 获取消息服务端Id
int getTotalCount() 获取总评论数
long getLastUpdateTime() 获取消息评论最后一次操作的时间
List getDetails() 获取评论详情列表

其中QChatQuickCommentDetail的参数说明如下:

返回值 参数 说明
int getType() 获取评论类型
int getCount() 获取评论数量
boolean hasSelf() 自己是否添加了该类型评论
List getSeveralAccids() 获取若干个添加了此类型评论的accid列表,不是按照操作时间排序的,可以认为是随机取了N个

示例代码

QChatMessage message = getMessage();
int type = 1;
NIMClient.getService(QChatMessageService.class).addQuickComment(new QChatAddQuickCommentParam(message,type)).setCallback(
        new RequestCallback<Void>() {
            @Override
            public void onSuccess(Void param) {
                //添加成功
            }

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

            @Override
            public void onException(Throwable exception) {
                //添加异常
            }
        });
此文档是否对你有帮助?
有帮助
我要吐槽
  • 会话消息回复
  • 回复消息
  • 方法
  • 示例代码
  • 根据消息id查询历史消息
  • 方法
  • 示例代码
  • 根据消息查询被引用的消息详情
  • 方法
  • 示例代码
  • 查询thread聊天的历史
  • 方法
  • 示例代码
  • 批量查询thread聊天信息
  • 方法
  • 示例代码
  • 快捷评论
  • 添加快捷评论
  • 方法
  • 示例代码
  • 删除快捷评论
  • 方法
  • 示例代码
  • 批量查询快捷评论
  • 方法
  • 示例代码