文档导航
Flutter
SDK 版本:  5.X

获取历史消息

更新时间:2024-07-15 PDF

开通服务

从远端获取单群聊历史消息是指从融云服务端获取历史消息,该功能要求 App Key 已启用融云提供的单群聊消息云端存储服务。您可以在控制台 IM 服务管理页面为当前使用的 App Key 开启服务。如果使用生产环境的 App Key,请注意仅 IM 旗舰版IM 尊享版可开通该服务。具体功能与费用以融云官方价格说明页面及计费说明文档为准。

提示:请注意区分历史消息记录与离线消息?。融云针对单聊、群聊、系统消息默认提供最多 7 天(可调整)的离线消息缓存服务。客户端上线时 SDK 会自动收取离线期间的消息,无需 App 层调用 API。详见管理离线消息存储配置

获取历史消息

开发者可以通过此接口来获取某个会话的历史消息。

方法

Future<int> getMessages(RCIMIWConversationType type, String targetId, String? channelId, int sentTime, RCIMIWTimeOrder order, RCIMIWMessageOperationPolicy policy, int count, {IRCIMIWGetMessagesCallback? callback});
              
已复制
1

参数说明

参数名 参数类型 描述
type RCIMIWConversationType 会话类型
targetId String 会话 ID
channelId String 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。
sentTime int 当前消息时间戳
order RCIMIWTimeOrder 获取消息的方向。BEFORE:获取 sentTime 之前的消息 (时间递减),AFTER:获取 sentTime 之后的消息 (时间递增)
policy RCIMIWMessageOperationPolicy 消息的加载策略。LOCAL:只加载本地,REMOTE:只加载远端,LOCAL_REMOTE:本地远端都加载
count int 获取的消息数量,0 < count <= 20
callback IRCIMIWGetMessagesCallback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。

返回值

返回值 描述
Future<int> 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码

代码示例

IRCIMIWGetMessagesCallback? callback = IRCIMIWGetMessagesCallback(onSuccess: (List<RCIMIWMessage>? t) {
//...
}, onError: (int? code) {
//...
});

int? ret = await engine?.getMessages(type, targetId, channelId, sentTime, order, policy, count, callback:callback);
              
已复制
1
2
3
4
5
6
7

回调方法

  • onMessagesLoaded
Function(int? code, RCIMIWConversationType? type, String? targetId, String? channelId, int? sentTime, RCIMIWTimeOrder? order, List<RCIMIWMessage>? messages)? onMessagesLoaded;
              
已复制
1

参数说明

参数名 参数类型 描述
code int 接口回调的状态码,0 代表成功,非 0 代表出现异常
type RCIMIWConversationType 会话类型
targetId String 会话 ID
channelId String 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。
sentTime int 当前消息时间戳
order RCIMIWTimeOrder 获取消息的方向。BEFORE:获取 sentTime 之前的消息 (时间递减),AFTER:获取 sentTime 之后的消息 (时间递增)
messages List<RCIMIWMessage> 获取到的消息集合

代码示例

engine?.onMessagesLoaded = (int? code, RCIMIWConversationType? type, String? targetId, String? channelId, int? sentTime, RCIMIWTimeOrder? order, List<RCIMIWMessage>? messages) {
//...
};
              
已复制
1
2
3

通过 messageId 获取消息

开发者可以通过此接口来获取某条消息。

方法

Future<int> getMessageById(int messageId, {IRCIMIWGetMessageCallback? callback});
              
已复制
1

参数说明

参数名 参数类型 描述
messageId int 消息的 messageId,可在消息对象中获取
callback IRCIMIWGetMessageCallback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。

返回值

返回值 描述
Future<int> 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码

代码示例

IRCIMIWGetMessageCallback? callback = IRCIMIWGetMessageCallback(onSuccess: (RCIMIWMessage? t) {
//...
}, onError: (int? code) {
//...
});

int? ret = await engine?.getMessageById(messageId, callback:callback);
              
已复制
1
2
3
4
5
6
7

通过 messageUId 获取消息

开发者可以通过此接口来获取某条消息。

方法

Future<int> getMessageByUId(String messageUId, {IRCIMIWGetMessageCallback? callback});
              
已复制
1

参数说明

参数名 参数类型 描述
messageUId String 消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值。
callback IRCIMIWGetMessageCallback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。

返回值

返回值 描述
Future<int> 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码

代码示例

IRCIMIWGetMessageCallback? callback = IRCIMIWGetMessageCallback(onSuccess: (RCIMIWMessage? t) {
//...
}, onError: (int? code) {
//...
});

int? ret = await engine?.getMessageByUId(messageUId, callback:callback);
              
已复制
1
2
3
4
5
6
7

文档反馈
意见反馈

您的改进建议

意见反馈

问题类型

联系我们

提交工单

技术支持|集成使用|产品方案


商务咨询

7 x 24 小时

为您解答方案与报价问题

131 6185 6839

文档反馈