消息操作

更新时间: 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 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • params NIMSendMessageParams 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。

    示例代码

    dartawait NimCore.instance.messageService.sendMessage(message, conversationId, params);
    

    返回值

    NIMResult<NIMSendMessageResult>:消息发送结果

    相关回调

    • onSendMessage:消息发送回调
    • onReceiveMessages消息接收回调

    modifyMessage

    接口描述

    更新消息,对已发送成功的消息进行二次编辑,修改消息体中的部分字段。

    本端更新消息成功后,会话参与者以及登录的其他客户端会收到消息更新回调 onReceiveMessagesModified

    • 只有发送成功的消息才支持修改更新。
    • 在单聊会话中,只有消息发送者才可以更新消息;在群聊会话中,只有消息发送者和群组可以更新消息。
    • 更新时可以配置反垃圾,反垃圾配置可以和原消息不一致。
    • 可更新字段包括 subTypetextattachmentserverExtension,消息类型不允许变更。

    参数说明

    dartFuture<NIMResult<NIMModifyMessageResult>> modifyMessage(NIMMessage message,NIMModifyMessageParams params)
    
    参数名称 类型 是否必填 说明
    message NIMMessage 需要更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    params NIMModifyMessageParams 更新消息的配置参数,包括 subTypetextattachmentserverExtension 字段、抄送配置以及反垃圾配置。

    示例代码

    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。
  • true:仅删除本地消息,本地数据库会将该消息标记为已删除,不会多端同步。实例存续期间调用 getMessageList 时 SDK 不会返回已删除的消息。
  • false:删除本地消息的同时删除云端消息。删除后不可恢复,会多端同步。如果消息未发送成功,则仅删除本地消息。
  • 示例代码

    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> 删除的消息列表。
  • 不能为空,否则返回 191004 参数错误。
  • 删除的所有消息必须属于同一个会话。
  • 每次删除不可超过 50 条消息,否则返回 191004 参数错误。
  • serverExtension String 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    onlyDeleteLocal bool 是否仅删除本地消息,默认为 true。
  • true:仅删除本地消息,本地数据库会将该消息标记为已删除,不会多端同步。实例存续期间调用 getMessageList 时 SDK 不会返回已删除的消息。
  • false:删除本地消息的同时删除云端消息。删除后不可恢复,会多端同步。如果消息未发送成功,则仅删除本地消息。
  • 示例代码

    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 参数错误。
  • 不能插入相同的消息,否则返回 191007 资源已存在错误。
  • conversationId String 消息所属的会话 ID,通过调用 ConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • 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 查询策略如下:

    查询引用消息.drawio.png
    • 当消息数据不明确时,可使用该接口获取消息。推荐回复消息、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 的消息对象。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能重复 Pin 相同的消息,否则返回 191007 资源已存在错误。
  • 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 的消息参考信息。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能重复取消 PIN 相同的消息,否则返回 191006 资源不存在错误。
  • 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 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • 示例代码

    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。可在本地自定义映射关系,例如:
  • 表情回复:1:笑脸。2:大笑。UI 层根据 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 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • 示例代码

    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> 发送已读回执的群组消息对象列表。
  • 不能为空,否则返回 191004 参数错误。
  • 所有消息必须属于同一个会话,否则返回 191001 使用姿势错误。
  • 单次最多查询 50 条消息。
  • 示例代码

    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>

    相关回调

    此文档是否对你有帮助?
    有帮助
    去反馈
    • API 概览
    • 消息监听
    • 消息基础操作
    • 消息扩展操作
    • 消息序列化
    • 接口类
    • listen
    • cancel
    • sendMessage
    • modifyMessage
    • revokeMessage
    • getMessageList
    • getMessageListEx
    • getMessageListByIds
    • deleteMessage
    • deleteMessages
    • clearHistoryMessage
    • updateMessageLocalExtension
    • insertMessageToLocal
    • updateLocalMessage
    • cancelMessageAttachmentUpload
    • replyMessage
    • getMessageListByRefers
    • pinMessage
    • unpinMessage
    • updatePinMessage
    • getPinnedMessageList
    • addQuickComment
    • removeQuickComment
    • getQuickCommentList
    • addCollection
    • removeCollections
    • updateCollectionExtension
    • getCollectionListByOption
    • getCollectionListExByOption
    • sendP2PMessageReceipt
    • getP2PMessageReceipt
    • isPeerRead
    • sendTeamMessageReceipts
    • getTeamMessageReceipts
    • getTeamMessageReceiptDetail
    • voiceToText
    • searchCloudMessages
    • getThreadMessageList
    • getLocalThreadMessageList
    • messageSerialization
    • messageDeserialization
    • stopAIStreamMessage
    • regenAIMessage
    • searchCloudMessagesEx
    • searchLocalMessages
    • setMessageFilter