消息操作
更新时间: 2025/07/15 14:21:29
消息指会话内消息,在会话界面中展示,适用于单聊、群组、聊天室、圈组等场景。更多消息相关功能请参考 消息概述。
本文介绍消息收发等消息操作相关 API,在调用以下 API 前,您需要先完成 消息构建。
API 概览
消息监听
API | 说明 | 起始版本 |
---|---|---|
listen | 注册消息相关监听器 | v10.3.0 |
cancel | 取消注册消息相关监听器 | v10.3.0 |
消息基础操作
API | 说明 | 起始版本 |
---|---|---|
sendMessage | 发送单条消息 | v10.3.0 |
revokeMessage | 撤回指定消息 | v10.3.0 |
getMessageList | 按条件分页获取会话内所有历史消息 | v10.3.0 |
getMessageListByIds | 根据消息客户端 ID 获取历史消息 | v10.3.0 |
deleteMessage | 删除单条消息 | v10.3.0 |
deleteMessages | 批量删除消息 | v10.3.0 |
clearHistoryMessage | 清空会话内历史消息 | v10.3.0 |
updateMessageLocalExtension | 更新消息本地扩展字段 | v10.3.0 |
insertMessageToLocal | 插入一条本地消息 | v10.3.0 |
cancelMessageAttachmentUpload | 取消文件类附件上传 | v10.3.0 |
modifyMessage | 更新消息,对消息进行二次编辑 | v10.5.0 |
getMessageListEx | 按条件分页获取会话内所有历史消息 注: 较 getMessageList 方法,返回中新增下次查询的锚点消息 |
v10.9.0 |
updateLocalMessage | 更新本地插入的消息 | v10.9.0 |
消息扩展操作
API | 说明 | 起始版本 |
---|---|---|
replyMessage | 回复指定消息 | v10.3.0 |
getMessageListByRefers | 根据消息参考信息批量获取消息列表 | v10.3.0 |
pinMessage | Pin 一条消息 | v10.3.0 |
unpinMessage | 取消 PIN 一条消息 | v10.3.0 |
updatePinMessage | 更新一条 PIN 消息 | v10.3.0 |
getPinnedMessageList | 获取会话内所有 PIN 消息 | v10.3.0 |
addQuickComment | 添加一条快捷评论 | v10.3.0 |
removeQuickComment | 移除一条快捷评论 | v10.3.0 |
getQuickCommentList | 获取指定消息的快捷评论列表 | v10.3.0 |
addCollection | 添加一个收藏 | v10.3.0 |
removeCollections | 移除收藏 | v10.3.0 |
updateCollectionExtension | 更新收藏扩展字段 | v10.3.0 |
getCollectionListByOption | 根据条件分页获取收藏列表 | v10.3.0 |
sendP2PMessageReceipt | 发送单聊消息已读回执 | v10.3.0 |
getP2PMessageReceipt | 获取单聊消息已读回执 | v10.3.0 |
isPeerRead | 获取单聊消息是否已读 | v10.3.0 |
sendTeamMessageReceipts | 发送群组消息已读回执 | v10.3.0 |
getTeamMessageReceipts | 获取群组消息已读回执 | v10.3.0 |
getTeamMessageReceiptDetail | 获取群组消息已读回执状态详情 | v10.3.0 |
searchCloudMessages | 全文搜索云端历史消息 | v10.3.0 |
getThreadMessageList | 分页获取云端 Thread 历史消息列表 | v10.3.0 |
getLocalThreadMessageList | 分页获取本地 Thread 历史消息列表 | v10.3.0 |
stopAIStreamMessage | 打断 AI 数字人消息的流式输出。可选择直接停止输出,也可以选择撤回/更新 AI 数字人消息 | v10.8.0 |
regenAIMessage | 重新输出 AI 数字人消息 | v10.8.0 |
getCollectionListExByOption | 根据条件分页获取收藏列表 注:较 getCollectionListByOption 方法,回参新增 totalCount 字段,表示收藏总数 |
v10.9.0 |
setMessageFilter | 消息过滤器 | v10.9.0 |
searchCloudMessagesEx | 全文搜索云端历史消息 注: 较 searchCloudMessages 方法,入参支持传入多个 keyword |
v10.9.0 |
searchLocalMessages | 全文搜索本地历史消息 | v10.9.0 |
消息序列化
API | 说明 | 起始版本 |
---|---|---|
messageSerialization | 消息序列化为字符串 | v10.5.0 |
messageDeserialization | 消息字符串转换为消息 | v10.5.0 |
接口类
MessageService
类提供消息操作接口,包括发送、回复、转发、删除、更新、获取消息,注册消息监听,以及 PIN 消息、快捷评论、收藏等进阶操作接口。
listen
接口描述
注册消息相关监听。
注册成功后,当消息事件发生时,SDK 会返回对应的回调。
- 建议在初始化后调用该方法。
- 全局只需注册一次。
- 该方法为同步。
回调事件
onSendMessage
:本端发送消息状态回调,本端发送消息或插入消息成功后,SDK 会返回该回调。onReceiveMessages
:消息接收回调,返回消息列表,包括本端接收的消息及其他端同步的消息。onReceiveP2PMessageReadReceipts
:单聊消息已读回调,返回已读回执列表。onReceiveTeamMessageReadReceipts
:群组消息已读回调,返回已读回执列表。onMessageRevokeNotifications
:消息撤回通知回调,返回消息撤回通知列表。onMessagePinNotification
:PIN 消息状态变化通知回调,返回 PIN 消息状态变化通知。onMessageQuickCommentNotification
:消息快捷评论通知回调,返回快捷评论通知。onMessageDeletedNotifications
:消息被删除回调,返回被删除的消息列表,包括本端删除的消息及其他端(单聊、群组)删除的消息。onClearHistoryNotifications
:会话内历史消息清除回调,返回被清除的历史消息列表,包括本端清除的历史消息及其他端(单聊、群组)清除的历史消息。onSendMessageProgress
:发送消息进度回调,返回消息的发送进度。onReceiveMessagesModified
:消息更新回调,返回更新后的消息列表。
示例代码
dartsubsriptions.add(
NimCore.instance.messageService.onSendMessage.listen((event) {
//do something
}));
subsriptions.add(NimCore.instance.messageService.onSendMessageProgress
.listen((event) {
//do something
}));
subsriptions.add(
NimCore.instance.messageService.onReceiveMessages.listen((event) {
//do something
}));
subsriptions.add(NimCore
.instance.messageService.onReceiveP2PMessageReadReceipts
.listen((event) {
//do something
}));
subsriptions.add(NimCore
.instance.messageService.onReceiveTeamMessageReadReceipts
.listen((event) {
//do something
}));
subsriptions.add(NimCore
.instance.messageService.onMessageRevokeNotifications
.listen((event) {
//do something
}));
subsriptions.add(NimCore
.instance.messageService.onMessagePinNotification
.listen((event) {
//do something
}));
subsriptions.add(NimCore
.instance.messageService.onMessageQuickCommentNotification
.listen((event) {
//do something
}));
subsriptions.add(NimCore
.instance.messageService.onMessageDeletedNotifications
.listen((event) {
//do something
}));
subsriptions.add(NimCore
.instance.messageService.onClearHistoryNotifications
.listen((event) {
//do something
}));
subsriptions.add(NimCore
.instance.messageService.onReceiveMessagesModified
.listen((event) {
//do something
}));
cancel
接口描述
取消注册消息相关监听。
该方法为同步。
示例代码
dartsubsriptions.forEach((subsription) {
subsription.cancel();
});
sendMessage
接口描述
发送一条消息。
本端发送消息成功后,会收到消息发送回调 onSendMessage
。其他登录客户端和消息接收方会收到消息接收回调 onReceiveMessages
。
- 发送消息前,请先调用
MessageCreator
中的接口创建消息。 - 如因网络等问题导致消息发送失败,可再次调用该方法重发消息。
参数说明
dartFuture<NIMResult<NIMSendMessageResult>> sendMessage(
{required NIMMessage message,
required String conversationId,
NIMSendMessageParams? params}) async {
return _platform.sendMessage(
message: message, conversationId: conversationId, params: params);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 消息对象,通过调用 MessageCreator 中的接口创建。如果为空或不存在则返回 191004 参数错误。 |
conversationId |
String | 是 | 会话 ID,通过调用 ConversationIdUtil 的对应函数创建。NIMConversationType )| 聊天对象账号(accountId)或群组 ID。 |
params |
NIMSendMessageParams |
否 | 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。 |
示例代码
dartawait NimCore.instance.messageService.sendMessage(message, conversationId, params);
返回值
NIMResult<NIMSendMessageResult>:消息发送结果
相关回调
onSendMessage
:消息发送回调onReceiveMessages
消息接收回调
modifyMessage
接口描述
更新消息,对已发送成功的消息进行二次编辑,修改消息体中的部分字段。
本端更新消息成功后,会话参与者以及登录的其他客户端会收到消息更新回调 onReceiveMessagesModified
。
- 只有发送成功的消息才支持修改更新。
- 在单聊会话中,只有消息发送者才可以更新消息;在群聊会话中,只有消息发送者和群组可以更新消息。
- 更新时可以配置反垃圾,反垃圾配置可以和原消息不一致。
- 可更新字段包括
subType
、text
、attachment
、serverExtension
,消息类型不允许变更。
参数说明
dartFuture<NIMResult<NIMModifyMessageResult>> modifyMessage(NIMMessage message,NIMModifyMessageParams params)
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 需要更新的消息对象。如果为空或不存在则返回 191004 参数错误。 |
params |
NIMModifyMessageParams |
是 | 更新消息的配置参数,包括 subType 、text 、attachment 、serverExtension 字段、抄送配置以及反垃圾配置。 |
示例代码
dartfinal sendMessageResult = await NimCore.instance.messageService
.sendMessage(message: textMessage, conversationId: conversationId);
if (sendMessageResult.isSuccess) {
final sentMessage = sendMessageResult.data!.message!;
final params = NIMModifyMessageParams(text: 'test text message modify');
NimCore.instance.messageService
.modifyMessage(sentMessage, params)
.then((result) {
print('modifyMessage result: ${result.data?.toJson()}');
});
}
}
返回值
NIMResult<NIMModifyMessageResult>:更新消息结果
相关回调
onReceiveMessagesModified
:消息更新成功回调
revokeMessage
接口描述
撤回一条指定消息。
本地端或多端同步撤回消息成功后,SDK 会返回消息撤回通知回调 onMessageRevokeNotifications
,并同步缓存和数据库。
仅支持撤回已发送成功的消息,不支持撤回通知类型的消息。
参数说明
dartFuture<NIMResult<void>> revokeMessage(
{required NIMMessage message,
NIMMessageRevokeParams? revokeParams}) async {
return _platform.revokeMessage(
message: message, revokeParams: revokeParams);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 待撤回的消息对象,该消息发送状态必须为 NIMMessageSendingState.succeeded 。如果为空或不存在则返回 191004 参数错误。 |
revokeParams |
NIMMessageRevokeParams |
否 | 消息撤回配置参数。 |
示例代码
dartawait NimCore.instance.messageService.revokeMessage(message, revokeParams);
返回值
NIMResult<void>
相关回调
onMessageRevokeNotifications
:消息撤回回调
getMessageList
接口描述
按消息查询配置项分页获取所有历史消息。
该方法用于分页获取会话内消息数据,直到获取会话内全量消息,获取到的消息不包括已删除消息。
如果会话数据同步已开始(收到 onSyncStarted
回调),建议您在数据同步完成(收到 onSyncFinished
回调)后再进行该操作,否则可能查询不到完整消息数据。
参数说明
dartFuture<NIMResult<List<NIMMessage>>> getMessageList(
{required NIMMessageListOption option}) async {
return _platform.getMessageList(option: option);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
option |
NIMMessageListOption |
是 | 消息查询配置项。 |
示例代码
dartawait NimCore.instance.messageService.getMessageList(option);
返回值
NIMResult<List<NIMMessage>>:消息列表
相关回调
无
getMessageListEx
接口描述
按消息查询配置项分页获取所有历史消息。可以根据参数组合查询各种类型,每次默认 50 条消息。
该方法用于分页获取会话内消息数据,直到获取会话内全量消息,获取到的消息不包括已删除消息。
较 getMessageList
方法,返回中新增下次查询的锚点消息(anchorMessage
)。
参数说明
dartFuture<NIMResult<NIMMessageListResult>> getMessageListEx( NIMMessageListOption option )
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
option |
NIMMessageListOption |
是 | 消息查询配置项。 |
示例代码
dartawait NimCore.instance.messageService.getMessageListEx(option);
返回值
NIMResult<NIMMessageListResult>:查询结果
相关回调
无
getMessageListByIds
接口描述
批量查询指定消息列表。
该方法从 本地数据库 按照客户端消息 ID 批量获取消息数据。
参数说明
dartFuture<NIMResult<List<NIMMessage>>> getMessageListByIds(
{required List<String> messageClientIds}) async {
return _platform.getMessageListByIds(messageClientIds: messageClientIds);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
messageClientIds |
List<String> | 是 | 客户端消息 ID,具有唯一性。不能为空,否则返回 191004 参数错误。 |
示例代码
dartawait NimCore.instance.messageService.getMessageListByIds(messageClientIds);
返回值
NIMResult<List<NIMMessage>>:消息列表
相关回调
无
deleteMessage
接口描述
删除单条消息。
本地端或多端同步删除消息成功后,SDK 会返回消息删除通知回调 onMessageDeletedNotifications
,并同步数据库和缓存。
- 仅单聊和高级群支持消息删除多端同步。
- 如果会话数据同步已开始(收到
onSyncStarted
回调),建议您在数据同步完成(收到onSyncFinished
回调)后再进行该操作。
参数说明
dartFuture<NIMResult<void>> deleteMessage(
{required NIMMessage message,
String? serverExtension,
bool? onlyDeleteLocal}) async {
return _platform.deleteMessage(
message: message,
serverExtension: serverExtension,
onlyDeleteLocal: onlyDeleteLocal);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 删除的消息对象。如果为空或不存在则返回 191004 参数错误。 |
serverExtension |
String | 否 | 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。 |
onlyDeleteLocal |
bool | 否 | 是否仅删除本地消息,默认为 true。getMessageList 时 SDK 不会返回已删除的消息。 |
示例代码
dartawait NimCore.instance.messageService.deleteMessage(message, serverExtension, onlyDeleteLocal);
返回值
NIMResult<void>
相关回调
onMessageDeletedNotifications
:消息删除回调
deleteMessages
接口描述
批量删除会话内消息。
本地端或多端同步的删除每一条消息成功后,SDK 均会返回消息删除通知回调 onMessageDeletedNotifications
,并同步数据库和缓存。
如果会话数据同步已开始(收到 onSyncStarted
回调),建议您在数据同步完成(收到 onSyncFinished
回调)后再进行该操作。
参数说明
dartFuture<NIMResult<void>> deleteMessages(
{required List<NIMMessage> messages,
String? serverExtension,
bool? onlyDeleteLocal}) async {
return _platform.deleteMessages(
messages: messages,
serverExtension: serverExtension,
onlyDeleteLocal: onlyDeleteLocal);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
messages |
List<NIMMessage> | 是 | 删除的消息列表。 |
serverExtension |
String | 否 | 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。 |
onlyDeleteLocal |
bool | 否 | 是否仅删除本地消息,默认为 true。getMessageList 时 SDK 不会返回已删除的消息。 |
示例代码
dartawait NimCore.instance.messageService.deleteMessages(messages, serverExtension, onlyDeleteLocal);
返回值
NIMResult<void>
相关回调
onMessageDeletedNotifications
:消息删除回调
clearHistoryMessage
接口描述
清空会话内历史消息。
该方法同时删除本地和云端历史消息,不删除会话。
本地端或多端同步清空会话内历史消息成功后,SDK 会返回会话历史消息清空通知回调 onClearHistoryNotifications
,并同步数据库和缓存。
如果会话数据同步已开始(收到 onSyncStarted
回调),建议您在数据同步完成(收到 onSyncFinished
回调)后再进行该操作。
参数说明
dartFuture<NIMResult<void>> clearHistoryMessage(
{required NIMClearHistoryMessageOption option}) async {
return _platform.clearHistoryMessage(option: option);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
option |
NIMClearHistoryMessageOption |
是 | 历史消息清空选项,可指定是否同步删除漫游消息、是否多端同步等参数。不能为空,否则返回 191004 参数错误。 |
示例代码
dartawait NimCore.instance.messageService.clearHistoryMessage(option);
返回值
NIMResult<void>
相关回调
onClearHistoryNotifications
:会话历史消息清空回调
updateMessageLocalExtension
接口描述
更新消息本地扩展字段。
该方法仅更新本地数据库中的消息,更新不包括已删除、已撤回的消息。
参数说明
dartFuture<NIMResult<NIMMessage>> updateMessageLocalExtension(
{required NIMMessage message, required String localExtension}) async {
return _platform.updateMessageLocalExtension(
message: message, localExtension: localExtension);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 更新的消息对象。如果为空或不存在则返回 191004 参数错误。 |
localExtension |
String | 是 | 本地扩展字段,必须为 JSON 格式封装,不会多端同步。 |
示例代码
dartawait NimCore.instance.messageService.updateMessageLocalExtension(message, localExtension);
返回值
NIMResult<NIMMessage>:更新的消息对象
相关回调
无
insertMessageToLocal
接口描述
插入一条消息到本地数据库。
插入消息成功后,本端会收到消息发送状态回调 onSendMessage
。该消息不会多端同步,且不计入消息未读数,实例销毁后该消息丢失,且不可恢复。
本地插入消息后会话变更:
- 如果本地没有会话,则插入消息后 SDK 自动生成会话,并返回创建成功回调
onConversationCreated
。 - 如果本地已有会话,则 SDK 变更会话的最后一条消息为插入的消息。若该消息被删除,则向前回溯上一条消息为会话最后一条消息。
参数说明
dartFuture<NIMResult<NIMMessage>> insertMessageToLocal(
{required NIMMessage message,
required String conversationId,
String? senderId,
int? createTime}) async {
return _platform.insertMessageToLocal(
message: message,
conversationId: conversationId,
senderId: senderId,
createTime: createTime);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 插入的消息对象。如果为空或不存在则返回 191004 参数错误。 |
conversationId |
String | 是 | 消息所属的会话 ID,通过调用 ConversationIdUtil 的对应函数创建。NIMConversationType )| 聊天对象账号(accountId)或群组 ID。 |
senderId |
String | 否 | 消息发送方账号(accountId),如果传空或 null 则默认为当前用户账号。 |
createTime |
int | 否 | 插入消息的时间戳。默认 0,表示 SDK 默认使用当前 NTP 时间。 |
示例代码
dartawait NimCore.instance.messageService.insertMessageToLocal(message, conversationId, senderId, createTime);
返回值
NIMResult<NIMMessage>:插入的消息对象
相关回调
onReceiveMessages
:消息接收回调onConversationCreated
:会话创建回调
updateLocalMessage
接口描述
更新本地插入的消息。
该方法仅更新本地插入的消息,如需要更新云端消息,请调用 modifyMessage
方法。
参数说明
dartFuture<NIMResult<NIMMessage>> updateLocalMessage( NIMMessage message, NIMUpdateLocalMessageParams params )
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 需要更新的消息对象。如果为空或不存在则返回 191004 参数错误。 |
params |
NIMUpdateLocalMessageParams |
是 | 需要更新的数据字段。 |
示例代码
dartNimCore.instance.messageService.updateLocalMessage(message, params).then((result) {
});
返回值
NIMResult<NIMMessage>:更新后的消息对象
相关回调
无
cancelMessageAttachmentUpload
接口描述
取消上传消息附件。
- 该方法仅支持取消文件类消息(图片、视频、文件)的附件上传。
- 无法取消已经上传成功的附件。
- 如果取消上传成功,消息附件上传状态会转变为上传失败
NIMMessageAttachmentUploadState.failed
,对应的文件类消息会发送失败。
参数说明
dartFuture<NIMResult<void>> cancelMessageAttachmentUpload(
{required NIMMessage message}) async {
return _platform.cancelMessageAttachmentUpload(message: message);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 取消附件上传的消息对象。该消息必须为图片、视频、文件类型。 |
示例代码
dartawait NimCore.instance.messageService.cancelMessageAttachmentUpload(message);
返回值
NIMResult<void>
相关回调
无
replyMessage
接口描述
发送一条回复消息。
本端回复消息成功后,会收到消息发送回调 onSendMessage
。其他登录客户端和消息接收方会收到消息接收回调 onReceiveMessages
。
发送回复消息前,请先调用 MessageCreator
中的接口创建回复消息。
参数说明
dartFuture<NIMResult<NIMSendMessageResult>> replyMessage(
{required NIMMessage message,
required NIMMessage replyMessage,
NIMSendMessageParams? params}) async {
return _platform.replyMessage(
message: message, replyMessage: replyMessage, params: params);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 发送的消息对象,通过调用 MessageCreator 中的接口创建。如果为空或不存在则返回 191004 参数错误。 |
replyMessage |
NIMMessage |
是 | 被回复的消息对象,如果为空或不存在则返回 191004 参数错误。 |
params |
NIMSendMessageParams |
否 | 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。 |
示例代码
dartawait NimCore.instance.messageService.replyMessage(message, replyMessage, params);
返回值
NIMResult<NIMSendMessageResult>:消息发送结果
相关回调
onSendMessage
:消息发送回调onReceiveMessages
消息接收回调
getMessageListByRefers
接口描述
根据消息参考信息批量查询消息列表。获取结果不包含已删除、已撤回的消息。
SDK 查询策略如下:

- 当消息数据不明确时,可使用该接口获取消息。推荐回复消息、PIN 消息场景下使用。
- 如果会话数据同步已开始(收到
onSyncStarted
回调),建议您在数据同步完成(收到onSyncFinished
回调)后再进行该操作,否则可能查询不到完整消息数据。
参数说明
dartFuture<NIMResult<List<NIMMessage>>> getMessageListByRefers(
{required List<NIMMessageRefer> messageRefers}) async {
return _platform.getMessageListByRefers(messageRefers: messageRefers);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
messageRefers |
List<NIMMessageRefer > |
是 | 消息参考信息对象。不能为空,否则返回 191004 参数错误。 |
示例代码
dartawait NimCore.instance.messageService.getMessageListByRefers(messageRefers);
返回值
NIMResult<List<NIMMessage>>:Thread 父消息和根消息列表
相关回调
无
pinMessage
接口描述
PIN 一条消息。
本地端或多端同步 PIN 消息成功后,消息发送方和消息接收方均会收到 PIN 消息状态变化通知回调 onMessagePinNotification
,并同步数据库和缓存。
- 仅支持 Pin 已发送成功 的消息,一个会话最多支持 Pin 100 条消息。
- 如果会话数据同步已开始(收到
onSyncStarted
回调),建议您在数据同步完成(收到onSyncFinished
回调)后再进行该操作。
参数说明
dartFuture<NIMResult<void>> pinMessage(
{required NIMMessage message, String? serverExtension}) async {
return _platform.pinMessage(
message: message, serverExtension: serverExtension);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 被 PIN 的消息对象。 |
serverExtension |
String | 否 | 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。 |
示例代码
dartawait NimCore.instance.messageService.pinMessage(message, serverExtension);
返回值
NIMResult<void>
相关回调
onMessagePinNotification
:PIN 消息状态变化通知回调
unpinMessage
接口描述
取消一条 PIN 消息。
本地端或多端同步取消 PIN 消息成功后,消息发送方和消息接收方均会收到 PIN 消息状态变化通知回调 onMessagePinNotification
,并同步数据库和缓存。
如果会话数据同步已开始(收到 onSyncStarted
回调),建议您在数据同步完成(收到 onSyncFinished
回调)后再进行该操作。
参数说明
dartFuture<NIMResult<void>> unpinMessage(
{required NIMMessageRefer messageRefer, String? serverExtension}) async {
return _platform.unpinMessage(
messageRefer: messageRefer, serverExtension: serverExtension);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
messageRefer |
NIMMessageRefer |
是 | 被取消 PIN 的消息参考信息。 |
serverExtension |
String | 否 | 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。 |
示例代码
dartawait NimCore.instance.messageService.unpinMessage(messageRefer, serverExtension);
返回值
NIMResult<void>
相关回调
onMessagePinNotification
:PIN 消息状态变化通知回调
updatePinMessage
接口描述
更新指定 PIN 消息的服务端扩展字段。
本地端或多端同步更新 PIN 消息成功后,消息发送方和消息接收方均会收到 PIN 消息状态变化通知回调 onMessagePinNotification`,并同步数据库和缓存。
- 如果更新 PIN 消息的操作人非当前登录账号,则
NIMMessagePin.operatorId
变更为更新 PIN 消息的实际操作人。 - 如果会话数据同步已开始(收到
onSyncStarted
回调),建议您在数据同步完成(收到onSyncFinished
回调)后再进行该操作。
参数说明
dartFuture<NIMResult<void>> updatePinMessage(
{required NIMMessage message, String? serverExtension}) async {
return _platform.updatePinMessage(
message: message, serverExtension: serverExtension);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 被 PIN 的消息对象。如果为空或不存在则返回 191004 参数错误。 |
serverExtension |
String | 否 | PIN 消息的服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。 |
示例代码
dartawait NimCore.instance.messageService.updatePinMessage(message, serverExtension);
返回值
NIMResult<void>
相关回调
onMessagePinNotification
:PIN 消息状态变化通知回调
getPinnedMessageList
接口描述
获取会话内所有 PIN 消息。获取结果不包含已删除、已撤回的消息,结果按照更新时间排序。
如果会话数据同步已开始(收到 onSyncStarted
回调),建议您在数据同步完成(收到 onSyncFinished
回调)后再进行该操作,否则可能查询不到完整消息数据。
参数说明
dartFuture<NIMResult<List<NIMMessagePin>>> getPinnedMessageList(
{required String conversationId}) async {
return _platform.getPinnedMessageList(conversationId: conversationId);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
conversationId |
String | 是 | 会话 ID,通过调用 ConversationIdUtil 的对应函数创建。NIMConversationType )| 聊天对象账号(accountId)或群组 ID。 |
示例代码
dartawait NimCore.instance.messageService.getPinnedMessageList(conversationId);
返回值
NIMResult<List<NIMMessagePin>>:按照更新时间排序的 PIN 消息列表
相关回调
无
addQuickComment
接口描述
添加一条消息快捷评论。
本地端或多端同步添加消息快捷评论成功后,消息发送方和消息接收方均会收到消息快捷评论通知回调 onMessageQuickCommentNotification
,并同步数据库和缓存。
您可以多次调用该方法,对同一条消息添加多个快捷评论。
- 仅支持评论 已发送成功 的消息。
- 如果会话数据同步已开始(收到
onSyncStarted
回调),建议您在数据同步完成(收到onSyncFinished
回调)后再进行该操作。
参数说明
dartFuture<NIMResult<void>> addQuickComment(
{required NIMMessage message,
required int index,
String? serverExtension,
NIMMessageQuickCommentPushConfig? pushConfig}) async {
return _platform.addQuickComment(
message: message,
index: index,
serverExtension: serverExtension,
pushConfig: pushConfig);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 被快捷评论的消息对象。如果为空或不存在则返回 191004 参数错误。 |
index |
int | 是 | 自定义快捷评论索引,必须大于 0。可在本地自定义映射关系,例如:index 展示对应的表情。 |
serverExtension |
String | 否 | 评论服务端扩展字段。必须为 JSON 格式封装,长度上限为 8 字符,多端同步。 |
pushConfig |
NIMMessageQuickCommentPushConfig |
否 | 快捷评论推送配置。 |
示例代码
dartawait NimCore.instance.messageService.addQuickComment(message, index, serverExtension, pushConfig);
返回值
NIMResult<void>
相关回调
onMessageQuickCommentNotification
:消息快捷评论通知回调
removeQuickComment
接口描述
移除指定消息的快捷评论。
本地端或多端同步移除快捷评论成功后,消息发送方和消息接收方均会收到消息快捷评论通知回调 onMessageQuickCommentNotification
,并同步数据库和缓存。
如果会话数据同步已开始(收到 onSyncStarted
回调),建议您在数据同步完成(收到 onSyncFinished
回调)后再进行该操作。
参数说明
dartFuture<NIMResult<void>> removeQuickComment(
{required NIMMessageRefer messageRefer,
required int index,
String? serverExtension}) async {
return _platform.removeQuickComment(
messageRefer: messageRefer,
index: index,
serverExtension: serverExtension);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
messageRefer |
NIMMessageRefer |
是 | 被快捷评论的消息参考信息。如果为空或不存在则返回 191004 参数错误。 |
index |
int | 是 | 快捷评论索引,必须大于 0。 |
serverExtension |
String | 否 | 服务端扩展字段。长度上限为 8 字符,多端同步。 |
示例代码
dartawait NimCore.instance.messageService.removeQuickComment(messageRefer, index, serverExtension);
返回值
NIMResult<void>
相关回调
onMessageQuickCommentNotification
:消息快捷评论通知回调
getQuickCommentList
接口描述
获取指定消息的所有快捷评论。获取结果不包含已删除消息的快捷评论,按照评论时间排序。
如果会话数据同步已开始(收到 onSyncStarted
回调),建议您在数据同步完成(收到 onSyncFinished
回调)后再进行该操作,否则可能查询不到完整消息数据。
参数说明
dartFuture<NIMResult<Map<String, List<NIMMessageQuickComment>?>>>
getQuickCommentList({required List<NIMMessage> messages}) async {
return _platform.getQuickCommentList(messages: messages);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
messages |
List<NIMMessage> | 是 | 被快捷评论的消息对象。如果为空或不存在则返回 191004 参数错误。 |
示例代码
dartawait NimCore.instance.messageService.getQuickCommentList(messages);
返回值
NIMResult<Map<String, List<NIMMessageQuickComment>?>>:按照评论时间排序的快捷评论列表
相关回调
无
addCollection
接口描述
添加一条收藏。支持收藏消息或其他自定义内容。
- 如果收藏消息,仅支持收藏 已发送成功 的消息。
- 如果会话数据同步已开始(收到
onSyncStarted
回调),建议您在数据同步完成(收到onSyncFinished
回调)后再进行该操作。
参数说明
dartFuture<NIMResult<NIMCollection>> addCollection(
{required NIMAddCollectionParams params}) async {
return _platform.addCollection(params: params);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
params |
NIMAddCollectionParams |
是 | 收藏配置参数。 |
示例代码
dartawait NimCore.instance.messageService.addCollection(params);
返回值
NIMResult<NIMCollection>:收藏的对象
相关回调
无
removeCollections
接口描述
批量移除收藏列表。
如果会话数据同步已开始(收到 onSyncStarted
回调),建议您在数据同步完成(收到 onSyncFinished
回调)后再进行该操作。
参数说明
dartFuture<NIMResult<int>> removeCollections(
{required List<NIMCollection> collections}) async {
return _platform.removeCollections(collections: collections);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
collections |
List<NIMCollection> | 是 | 收藏对象列表。不可为空,否则返回 191004 参数错误。 |
示例代码
dartawait NimCore.instance.messageService.removeCollections(collections);
返回值
NIMResult<int>
相关回调
无
updateCollectionExtension
接口描述
更新指定收藏的服务端扩展字段。
参数说明
dartFuture<NIMResult<NIMCollection>> updateCollectionExtension(
{required NIMCollection collection, String? serverExtension}) async {
return _platform.updateCollectionExtension(
collection: collection, serverExtension: serverExtension);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
collection |
NIMCollection |
是 | 收藏对象。如果为空或不存在则返回 191004 参数错误。 |
serverExtension |
String | 否 | 收藏的服务端扩展字段。必须为 JSON 格式封装,如果设置为空则表示取消现有的扩展字段。 |
示例代码
dartawait NimCore.instance.messageService.updateCollectionExtension(collection, serverExtension);
返回值
NIMResult<NIMCollection>:更新后的收藏对象
相关回调
无
getCollectionListByOption
接口描述
按照查询条件分页获取收藏列表,结果按照收藏时间排序。
如果会话数据同步已开始(收到 onSyncStarted
回调),建议您在数据同步完成(收到 onSyncFinished
回调)后再进行该操作,否则可能查询不到完整消息数据。
参数说明
dartFuture<NIMResult<List<NIMCollection>>> getCollectionListByOption(
{required NIMCollectionOption option}) async {
return _platform.getCollectionListByOption(option: option);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
option |
NIMCollectionOption |
是 | 收藏查询选项。 |
示例代码
dartawait NimCore.instance.messageService.getCollectionListByOption(option);
返回值
NIMResult<List<NIMCollection>>:按照收藏时间排序的收藏列表
相关回调
无
getCollectionListExByOption
接口描述
按照查询条件分页获取收藏列表,结果按照收藏时间排序。
较 getCollectionListByOption
方法,回参新增 totalCount
字段,表示收藏总数。
参数说明
dartFuture<NIMResult<NIMCollectionListResult>> getCollectionListExByOption( NIMCollectionOption option )
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
option |
NIMCollectionOption |
是 | 收藏查询选项。 |
示例代码
dartawait NimCore.instance.messageService.getCollectionListExByOption(option);
返回值
NIMResult<NIMCollectionListResult>:查询结果
相关回调
无
sendP2PMessageReceipt
接口描述
发送单聊消息已读回执。
当消息接收方收到 onReceiveMessages
回调后,可以调用该方法向消息发送方发送已读回执。单聊消息已读回执功能具体实现步骤请参考 消息已读回执。
本端发送已读回执成功后,其他登录客户端和消息发送方均会收到单聊已读回执回调 onReceiveP2PMessageReadReceipts
。
参数说明
dartFuture<NIMResult<void>> sendP2PMessageReceipt(
{required NIMMessage message}) async {
return _platform.sendP2PMessageReceipt(message: message);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 需要发送已读回执的消息对象。如果为空或不存在则返回 191004 参数错误。 |
示例代码
dartawait NimCore.instance.messageService.sendP2PMessageReceipt(message);
返回值
NIMResult<void>
相关回调
onReceiveMessages
:消息接收回调onReceiveP2PMessageReadReceipts
:单聊已读回执回调
getP2PMessageReceipt
接口描述
获取单聊消息已读回执。获取结果不包含已删除、已撤回消息的已读回执。
如果会话数据同步已开始(收到 onSyncStarted
回调),建议您在数据同步完成(收到 onSyncFinished
回调)后再进行该操作,否则可能查询不到完整数据。
参数说明
dartFuture<NIMResult<NIMP2PMessageReadReceipt>> getP2PMessageReceipt(
{required String conversationId}) async {
return _platform.getP2PMessageReceipt(conversationId: conversationId);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
conversationId |
String | 是 | 会话 ID,通过调用 ConversationIdUtil 的对应函数创建。NIMConversationType )| 聊天对象账号(accountId)或群组 ID。 |
示例代码
dartawait NimCore.instance.messageService.getP2PMessageReceipt(conversationId);
返回值
NIMResult<NIMP2PMessageReadReceipt>:单聊消息已读回执
相关回调
无
isPeerRead
接口描述
查询单聊消息是否已读。
消息发送方在发送消息后,可调用该方法判断消息接收方是否已读消息。
如果会话数据同步已开始(收到 onSyncStarted
回调),建议您在数据同步完成(收到 onSyncFinished
回调)后再进行该操作。
参数说明
dartFuture<NIMResult<bool>> isPeerRead({required NIMMessage message}) async {
return _platform.isPeerRead(message: message);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 单聊消息对象,如果为空或不存在则返回 191004 参数错误。 |
示例代码
dartawait NimCore.instance.messageService.isPeerRead(message);
返回值
NIMResult<bool>
- true:该单聊消息为已读
- false:该单聊消息为未读
相关回调
无
sendTeamMessageReceipts
接口描述
发送群组消息已读回执。
当消息接收方收到 onReceiveMessages
回调后,可以调用该方法向消息发送方发送已读回执。群组消息已读回执功能具体实现请参考 消息已读回执。
本端发送已读回执成功后,其他登录客户端和消息发送方均会收到群聊已读回执回调 onReceiveTeamMessageReadReceipts
。
参数说明
dartFuture<NIMResult<void>> sendTeamMessageReceipts(
{required List<NIMMessage> messages}) async {
return _platform.sendTeamMessageReceipts(messages: messages);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
List<NIMMessage> | 是 | 需要发送已读回执的群组消息对象。如果为空或不存在则返回 191004 参数错误。 |
示例代码
dartawait NimCore.instance.messageService.sendTeamMessageReceipts(message);
返回值
NIMResult<void>
相关回调
onReceiveMessages
:消息接收回调onReceiveTeamMessageReadReceipts
:群聊已读回执回调
getTeamMessageReceipts
接口描述
批量获取群组消息已读回执。获取结果不包含已删除、已撤回消息的已读回执。
如果会话数据同步已开始(收到 onSyncStarted
回调),建议您在数据同步完成(收到 onSyncFinished
回调)后再进行该操作,否则可能查询不到完整数据。
参数说明
dartFuture<NIMResult<List<NIMTeamMessageReadReceipt>>> getTeamMessageReceipts(
{required List<NIMMessage> messages}) async {
return _platform.getTeamMessageReceipts(messages: messages);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
messages |
List<NIMMessage> | 是 | 发送已读回执的群组消息对象列表。 |
示例代码
dartawait NimCore.instance.messageService.getTeamMessageReceipts(messages);
返回值
NIMResult<List<NIMTeamMessageReadReceipt>>:群聊消息已读回执列表
相关回调
无
getTeamMessageReceiptDetail
接口描述
获取指定群组消息的已读回执详情,包含已读回执、已读/未读账号列表。可指定需要查询的群成员列表。
如果会话数据同步已开始(收到 onSyncStarted
回调),建议您在数据同步完成(收到 onSyncFinished
回调)后再进行该操作,否则可能查询不到完整数据。
参数说明
dartFuture<NIMResult<NIMTeamMessageReadReceiptDetail>>
getTeamMessageReceiptDetail(
{required NIMMessage message, Set<String>? memberAccountIds}) async {
return _platform.getTeamMessageReceiptDetail(
message: message, memberAccountIds: memberAccountIds);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 发送已读回执的群组消息对象。如果为空或不存在则返回 191004 参数错误。 |
memberAccountIds |
Set<String> | 否 | 群成员账号列表。如果为空则表示查询所有群成员。 |
示例代码
dartawait NimCore.instance.messageService.getTeamMessageReceiptDetail(message, memberAccountIds);
返回值
NIMResult<NIMTeamMessageReadReceiptDetail>:群组消息已读回执详情
相关回调
无
voiceToText
接口描述
语音转文字。
该方法将语音内容转换为可编辑、可搜索的文本。
参数说明
dartFuture<NIMResult<String>> voiceToText(
{required NIMVoiceToTextParams params}) async {
return _platform.voiceToText(params: params);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
params |
NIMVoiceToTextParams |
是 | 语音转文字配置参数。不能为空,否则返回 191004 参数错误。 |
示例代码
dartawait NimCore.instance.messageService.voiceToText(params);
返回值
NIMResult<String>:语音转换后的文本字符串
相关回调
无
searchCloudMessages
接口描述
全文检索云端历史消息。
该方法按照指定条件全局检索整个应用内的云端历史消息。
参数说明
dartFuture<NIMResult<List<NIMMessage>>> searchCloudMessages(
{required NIMMessageSearchParams params}) async {
return _platform.searchCloudMessages(params: params);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
params |
NIMMessageSearchParams |
是 | 消息检索配置参数。不能为空,否则返回 191004 参数错误。 |
示例代码
dartawait NimCore.instance.messageService.searchCloudMessages(params);
返回值
NIMResult<List<NIMMessage>>:云端消息列表
相关回调
无
getThreadMessageList
接口描述
分页获取云端 Thread 历史消息列表。
该方法用于根据 Thread 根消息分页获取所有 Thread 子消息。
为避免触发请求频控,若云端会话数据同步已完成(收到 onSyncFinished
),建议您改用 getLocalThreadMessageList
方法获取本地 Thread 历史消息列表。
参数说明
dartFuture<NIMResult<NIMThreadMessageListResult>> getThreadMessageList(
{required NIMThreadMessageListOption threadMessageListOption}) async {
return _platform.getThreadMessageList(
threadMessageListOption: threadMessageListOption);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
threadMessageListOption |
NIMThreadMessageListOption |
是 | Thread 消息查询配置项,支持根据 Thread 根消息的参考信息分页查询子消息。 |
示例代码
dartawait NimCore.instance.messageService.getThreadMessageList(threadMessageListOption);
返回值
NIMResult<NIMThreadMessageListResult>:Thread 消息列表查询结果
相关回调
无
getLocalThreadMessageList
接口描述
获取本地 Thread 历史消息列表。
该方法用于根据 Thread 根消息获取所有本地 Thread 子消息。
参数说明
dartFuture<NIMResult<NIMThreadMessageListResult>> getLocalThreadMessageList(
{required NIMMessageRefer messageRefer}) async {
return _platform.getLocalThreadMessageList(messageRefer: messageRefer);
}
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
messageRefer |
NIMMessageRefer |
是 | Thread 消息参考信息,支持根据 Thread 根消息的参考信息查询本地子消息。 |
示例代码
dartawait NimCore.instance.messageService.getLocalThreadMessageList(messageRefer);
返回值
NIMResult<NIMThreadMessageListResult>:Thread 消息列表查询结果
相关回调
无
messageSerialization
接口描述
将 NIMMessage
序列化为字符串,调用成功后返回序列化后的字符串。
参数说明
dartFuture<NIMResult<String>> messageSerialization(NIMMessage message)
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 消息对象。 |
示例代码
dart// 转换成json
var encodeResult =
await await NimCore.instance.messageService.messageSerialization(msg);
返回值
NIMResult<String>:消息字符串
相关回调
无
messageDeserialization
接口描述
将消息字符串反序列为 NIMMessage
对象,调用成功后返回反序列化后的对象。
参数说明
dartFuture<NIMResult<NIMMessage>> messageDeserialization(String msg)
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
msg |
String | 是 | 消息字符串。 |
示例代码
dartfinal msg = await NimCore.instance.messageService
.messageDeserialization(strMessage);
返回值
NIMResult<NIMMessage>:消息对象
相关回调
无
stopAIStreamMessage
接口描述
打断 AI 数字人消息的流式输出。可选择直接停止输出,也可以选择撤回/更新 AI 数字人消息。
用户可随时打断正在输出的 AI 回复,支持以下三种处理方式:
- 停止输出:以当前输出内容为最终消息。
- 撤回:直接撤回整条消息。
- 更新:用自定义文本替换当前消息。
参数说明
DartFuture<NIMResult<void>> stopAIStreamMessage( NIMMessage message, NIMMessageAIStreamStopParams params )
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 需要打断的流式消息。 |
params |
NIMMessageAIStreamStopParams |
是 | 打断输出配置参数,需要确定打断输出的操作类型。若需要更新,请设置更新文案。 不能为空,否则返回 191004 参数错误。 |
示例代码
DartNimCore.instance.messageService.stopAIStreamMessage(message, params).then((result){
// todo something
});
返回值
NIMResult<void>
相关回调
无
regenAIMessage
接口描述
重新输出 AI 数字人流式消息。
支持以下两种方式:
- 更新原消息:新内容覆盖原消息(限 3 天内消息)。
- 产生新消息:创建全新消息来展示重新输出的内容。
若正处于流式输出过程中,则不允许调用该方法重新输出。
参数说明
dartFuture<NIMResult<void>> regenAIMessage( NIMMessage message, NIMMessageAIRegenParams params )
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
message |
NIMMessage |
是 | 需要重新输出的流式消息。 |
params |
NIMMessageAIRegenParams |
是 | 重新输出配置参数,需要确定重新输出的操作类型。 不能为空,否则返回 191004 参数错误。 |
示例代码
DartNimCore.instance.messageService.regenAIMessage(message, params).then((result){
// todo something
});
返回值
NIMResult<void>
相关回调
无
searchCloudMessagesEx
接口描述
全文检索云端历史消息。
该方法按照指定条件全局检索整个应用内的云端历史消息。
较 searchCloudMessages
方法,入参支持传入多个 keyword
。
使用该接口前,请至 网易云信控制台 开通全文云端消息检索,详细介绍请参考 开始使用网易云信 IM。
参数说明
dartFuture<NIMResult<NIMMessageSearchResult>> searchCloudMessagesEx( NIMMessageSearchExParams params )
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
params |
NIMMessageSearchExParams |
是 | 消息检索配置参数。不能为空,否则返回 191004 参数错误。 |
示例代码
Dart// 创建搜索参数
final params = NIMMessageSearchExParams(
conversationId: 'cjl|1|cjl1',
keywordList: ['周', '杰', '伦'],
);
// 执行云端消息搜索
NimCore.instance.messageService
.searchCloudMessagesEx(params)
.then((result) {
if (result.isSuccess && result.data != null) {
// 搜索成功
final searchResult = result.data!;
print('searchCloudMessages result: ${searchResult.toJson()}');
print('count: ${searchResult.count}');
print('hasMore: ${searchResult.hasMore}');
print('nextPageToken: ${searchResult.nextPageToken}');
// 处理搜索到的消息
searchResult.items?.forEach((e) {
//会话 id
print('conversationId: ${e.conversationId}');
//单个会话的返回数量
print('count: ${e.count}');
e.messages?.forEach((message) {
print('message: ${message.toJson()}');
});
});
} else {
// 搜索失败
print('searchCloudMessages failed: ${result.code}, ${result.errorDetails}');
}
});
返回值
NIMResult<NIMMessageSearchResult>:云端历史消息检索结果
相关回调
无
searchLocalMessages
接口描述
全文检索本地历史消息。
该方法按照指定条件全局检索整个应用内的本地历史消息。
参数说明
dartFuture<NIMResult<NIMMessageSearchResult>> searchLocalMessages( NIMMessageSearchExParams params )
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
params |
NIMMessageSearchExParams |
是 | 消息检索配置参数。不能为空,否则返回 191004 参数错误。 |
示例代码
Dart// 创建搜索参数
final params = NIMMessageSearchExParams(
conversationId: 'cjl|1|cjl1',
keywordList: ['周', '杰', '伦'],
);
// 执行本地消息搜索
NimCore.instance.messageService
.searchLocalMessages(params)
.then((result) {
if (result.isSuccess && result.data != null) {
// 搜索成功
final searchResult = result.data!;
print('searchLocalMessages result: ${searchResult.toJson()}');
print('count: ${searchResult.count}');
print('hasMore: ${searchResult.hasMore}');
print('nextPageToken: ${searchResult.nextPageToken}');
// 处理搜索到的消息
searchResult.items?.forEach((e) {
//会话 id
print('conversationId: ${e.conversationId}');
//单个会话的返回数量
print('count: ${e.count}');
e.messages?.forEach((message) {
print('message: ${message.toJson()}');
});
});
} else {
// 搜索失败
print('searchLocalMessages failed: ${result.code}, ${result.errorDetails}');
}
});
返回值
NIMResult<NIMMessageSearchResult>:本地历史消息检索结果
相关回调
无
setMessageFilter
接口描述
在接收消息时可设置统一的消息过滤器,实现消息过滤。
云端会话的最后一条消息不受该过滤器控制。
参数说明
dartFuture<NIMResult<void>> setMessageFilter( NIMMessageFilter? filter )
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
filter |
NIMMessageFilter |
是 | 过滤器对象,为空表示移除过滤器。 |
示例代码
Dart NimCore.instance.messageService.setMessageFilter((message)async {
//过滤图片消息
if(message.messageType == NIMMessageType.image) {
return true;
}
return false;
});
返回值
NIMResult<void>
相关回调
无