消息操作

更新时间: 2025/09/05 10:18:50

消息指会话内消息,在会话界面中展示,适用于单聊、群组、聊天室、圈组等场景。更多消息相关功能请参考 消息概述

本文介绍消息收发等消息操作相关 API,在调用以下 API 前,您需要先完成 消息构建

支持平台

本文内容适用的开发平台或框架如下表所示:

Android iOS macOS/Windows Web/uni-app/小程序 Node.js/Electron HarmonyOS
✔️️ ✔️️ ✔️️ ✔️️ ✔️️ ✔️️

API 概览

消息监听

Android/iOS/macOS/Windows
API 说明 起始版本
addMessageListener 注册消息相关监听器 v10.2.0
removeMessageListener 取消注册消息相关监听器 v10.2.0
Web/uni-app/小程序/Node.js/Electron/HarmonyOS
API 说明 起始版本
on("EventName") 注册消息相关监听 v10.2.0(对应 HarmonyOS v0.5.0)
off("EventName") 取消注册消息相关监听 v10.2.0(对应 HarmonyOS v0.5.0)

消息基础操作

API 说明 起始版本
sendMessage 发送单条消息 v10.2.0(对应 HarmonyOS v0.5.0)
revokeMessage 撤回指定消息 v10.2.0(对应 HarmonyOS v0.5.0)
getMessageList 按条件分页获取会话内所有历史消息 v10.2.0(对应 HarmonyOS v0.5.0)
getMessageListByIds 根据消息客户端 ID 获取历史消息(Web 端不支持) v10.2.0(对应 HarmonyOS v0.5.0)
deleteMessage 删除单条消息 v10.2.0(对应 HarmonyOS v0.5.0)
deleteMessages 批量删除消息 v10.2.0(对应 HarmonyOS v0.5.0)
clearHistoryMessage 清空会话内历史消息 v10.2.0(对应 HarmonyOS v0.5.0)
updateMessageLocalExtension 更新消息本地扩展字段(Web 端不支持) v10.2.0(对应 HarmonyOS v0.5.0)
insertMessageToLocal 插入一条本地消息(Web 端不支持) v10.2.0(对应 HarmonyOS v0.5.0)
cancelMessageAttachmentUpload 取消文件类附件上传 v10.2.0(对应 HarmonyOS v0.5.0)
modifyMessage 更新消息,对消息进行二次编辑 v10.4.0(对应 HarmonyOS v10.0.0)
getMessageListEx 按条件分页获取会话内所有历史消息
注: 较 getMessageList 方法,返回中新增下次查询的锚点消息
  • Android/iOS/Web/HarmonyOS:v10.9.0
  • macOS/Windows/Electron:v10.9.10
  • updateLocalMessage 更新本地插入的消息(Web 端不支持) v10.9.10
    getCloudMessageList 按条件分页获取会话内的云端消息 v10.9.10
    clearRoamingMessage 清空指定的漫游会话消息 v10.9.30

    消息扩展操作

    API 说明 起始版本
    replyMessage 回复指定消息 v10.2.0(对应 HarmonyOS v0.5.0)
    getMessageListByRefers 根据消息参考信息批量获取消息列表 v10.2.0(对应 HarmonyOS v0.5.0)
    pinMessage Pin 一条消息 v10.2.0(对应 HarmonyOS v0.5.0)
    unpinMessage 取消 PIN 一条消息 v10.2.0(对应 HarmonyOS v0.5.0)
    updatePinMessage 更新一条 PIN 消息 v10.2.0(对应 HarmonyOS v0.5.0)
    getPinnedMessageList 获取会话内所有 PIN 消息 v10.2.0(对应 HarmonyOS v0.5.0)
    addQuickComment 添加一条快捷评论 v10.2.0(对应 HarmonyOS v0.5.0)
    removeQuickComment 移除一条快捷评论 v10.2.0(对应 HarmonyOS v0.5.0)
    getQuickCommentList 获取指定消息的快捷评论列表 v10.2.0(对应 HarmonyOS v0.5.0)
    addCollection 添加一个收藏 v10.2.0(对应 HarmonyOS v0.5.0)
    removeCollections 移除收藏 v10.2.0(对应 HarmonyOS v0.5.0)
    updateCollectionExtension 更新收藏扩展字段 v10.2.0(对应 HarmonyOS v0.5.0)
    getCollectionListByOption 根据条件分页获取收藏列表 v10.2.0(对应 HarmonyOS v0.5.0)
    getCollectionListExByOption 根据条件分页获取收藏列表
    注:较 getCollectionListByOption 方法,回参新增 totalCount 字段,表示收藏总数
    v10.7.0
    sendP2PMessageReceipt 发送单聊消息已读回执 v10.2.0(对应 HarmonyOS v0.5.0)
    getP2PMessageReceipt 获取单聊消息已读回执 v10.2.0(对应 HarmonyOS v0.5.0)
    isPeerRead 获取单聊消息是否已读 v10.2.0(对应 HarmonyOS v0.5.0)
    sendTeamMessageReceipts 发送群组消息已读回执 v10.2.0(对应 HarmonyOS v0.5.0)
    getTeamMessageReceipts 获取群组消息已读回执 v10.2.0(对应 HarmonyOS v0.5.0)
    getTeamMessageReceiptDetail 获取群组消息已读回执状态详情 v10.2.0(对应 HarmonyOS v0.5.0)
    getThreadMessageList 分页获取云端 Thread 历史消息列表
  • Android/iOS/Web:v10.2.6
  • macOS/Windows/Electron:v10.3.0
  • HarmonyOS:v1.4.0
  • getLocalThreadMessageList 分页获取本地 Thread 历史消息列表(Web 端不支持)
  • Android/iOS:v10.2.6
  • macOS/Windows/Electron:v10.3.0
  • HarmonyOS:v1.4.0
  • searchCloudMessages 全文搜索云端历史消息 v10.2.0(对应 HarmonyOS v0.5.0)
    searchLocalMessages 全文搜索本地历史消息 v10.7.0(对应 HarmonyOS v10.6.0)
    searchCloudMessagesEx 全文搜索云端历史消息
    注: 较 searchCloudMessages 方法,入参支持传入多个 keyword
    v10.8.30
    stopAIStreamMessage 打断 AI 数字人消息的流式输出,可选择直接停止输出,也可以选择撤回/更新 AI 数字人消息 v10.8.30
    regenAIMessage 重新输出 AI 数字人消息 v10.8.30
    setMessageFilter 消息过滤器(iOS&HarmonyOS 不支持)
  • Android/Web:v10.9.0
  • macOS/Windows/Electron:v10.9.10
  • 消息解析相关

    API 说明 起始版本
    registerCustomAttachmentParser 注册自定义消息附件解析器,解析自消息类型为 100 的消息附件 v10.5.0(对应 HarmonyOS v10.6.0)
    unregisterCustomAttachmentParser 反注册自定义消息附件解析器 v10.5.0(对应 HarmonyOS v10.6.0)

    消息序列化

    API 说明 起始版本
    messageSerialization 消息序列化为字符串 v10.5.0(对应 HarmonyOS v10.6.0)
    messageDeserialization 消息字符串转换为消息 v10.5.0(对应 HarmonyOS v10.6.0)

    接口类

    V2NIMMessageService 类提供消息操作接口,包括发送、回复、转发、删除、更新、获取消息,注册消息监听,以及 PIN 消息、快捷评论、收藏等进阶操作接口。

    当调用本地会话接口时,如果会话数据同步已开始(收到 V2NIMConversationListener.onSyncStarted 回调),建议您在数据同步完成(收到 V2NIMConversationListener.onSyncFinished 回调)后再进行操作,否则可能获取不到完整的消息数据。

    addMessageListener

    接口描述

    注册消息监听器。

    注册成功后,当消息事件发生时,SDK 会返回对应的回调。

    • 建议在初始化后调用该方法。

    • 全局只需注册一次。

    • 该方法为同步。

    参数说明

    Android
    Javavoid addMessageListener(V2NIMMessageListener listener);
    
    参数名称 类型 是否必填 说明
    listener V2NIMMessageListener 消息相关监听器
    iOS
    Objective-C- (void)addMessageListener:(id<V2NIMMessageListener>)listener;
    
    参数名称 类型 是否必填 说明
    listener V2NIMMessageListener 消息相关监听器
    macOS/Windows
    C++virtual void addMessageListener(V2NIMMessageListener listener) = 0;
    
    参数名称 类型 是否必填 说明
    listener V2NIMMessageListener 消息相关监听器

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    V2NIMMessageListener messageListener = new V2NIMMessageListener() {
    
        @Override
        public void onSendMessage(V2NIMMessage message) {
        }
    
        @Override
        public void onReceiveMessages(List<V2NIMMessage> messages) {
        }
    
        @Override
        public void onReceiveP2PMessageReadReceipts(List<V2NIMP2PMessageReadReceipt> readReceipts) {
        }
    
        @Override
        public void onReceiveTeamMessageReadReceipts(List<V2NIMTeamMessageReadReceipt> readReceipts) {
        }
    
        @Override
        public void onMessageRevokeNotifications(List<V2NIMMessageRevokeNotification> revokeNotifications) {
        }
    
        @Override
        public void onMessagePinNotification(V2NIMMessagePinNotification pinNotification) {
        }
    
        @Override
        public void onMessageQuickCommentNotification(V2NIMMessageQuickCommentNotification quickCommentNotification) {
        }
    
        @Override
        public void onMessageDeletedNotifications(List<V2NIMMessageDeletedNotification> messageDeletedNotifications) {
        }
    
        @Override
        public void onClearHistoryNotifications(List<V2NIMClearHistoryNotification> clearHistoryNotifications) {
        }
    
        @Override
        public void onReceiveMessagesModified(List<V2NIMMessage> messages) {
        }
    };
    v2MessageService.addMessageListener(messageListener);
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] addMessageListener:listener];
    
    macOS/Windows
    C++V2NIMMessageListener listener;
    listener.onReceiveMessages = [](nstd::vector<V2NIMMessage> messages) {
        // receive messages
    };
    listener.onReceiveP2PMessageReadReceipts = [](nstd::vector<V2NIMP2PMessageReadReceipt> readReceipts) {
        // receive p2p message read receipts
    };
    listener.onReceiveTeamMessageReadReceipts = [](nstd::vector<V2NIMTeamMessageReadReceipt> readReceipts) {
        // receive team message read receipts
    };
    listener.onMessageRevokeNotifications = [](nstd::vector<V2NIMMessageRevokeNotification> revokeNotifications) {
        // receive message revoke notifications
    };
    listener.onMessagePinNotification = [](V2NIMMessagePinNotification pinNotification) {
        // receive message pin notification
    };
    listener.onMessageQuickCommentNotification = [](V2NIMMessageQuickCommentNotification quickCommentNotification) {
        // receive message quick comment notification
    };
    listener.onMessageDeletedNotifications = [](nstd::vector<V2NIMMessageDeletedNotification> messageDeletedNotification) {
        // receive message deleted notifications
    };
    listener.onClearHistoryNotifications = [](nstd::vector<V2NIMClearHistoryNotification> clearHistoryNotification) {
        // receive clear history notifications
    };
    listener.onReceiveMessagesModified = [](nstd::vector<V2NIMMessage> messages) {
        // receive modified messages
    };
    listener.onSendMessage = [](V2NIMMessage message) {
        // receive sending message
    };
    messageService.addMessageListener(listener);
    

    返回参数

    无。

    removeMessageListener

    接口描述

    移除消息监听器。

    该方法为同步。

    参数说明

    Android
    Javavoid removeMessageListener(V2NIMMessageListener listener);
    
    参数名称 类型 是否必填 说明
    listener V2NIMMessageListener 消息相关监听器
    iOS
    Objective-C- (void)removeMessageListener:(id<V2NIMMessageListener>)listener;
    
    参数名称 类型 是否必填 说明
    listener V2NIMMessageListener 消息相关监听器
    macOS/Windows
    C++virtual void removeMessageSendListener(V2NIMMessageListener listener) = 0;
    
    参数名称 类型 是否必填 说明
    listener V2NIMMessageListener 消息相关监听器

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    v2MessageService.removeMessageListener(messageListener);
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] removeMessageListener:listener];
    
    macOS/Windows
    C++V2NIMMessageListener listener;
    conversationService.addMessageListener(listener);
    messageService.removeMessageListener(listener);
    

    返回参数

    无。

    on("EventName")

    接口描述

    注册消息相关监听。

    注册成功后,当消息事件发生时,SDK 会触发相关回调通知。

    • 建议在初始化后调用该方法。

    • 全局只需注册一次。

    • 该方法为同步。

    参数说明

    Web/uni-app/小程序
    TypeScriptexport interface NIMEBaseServiceInterface<I extends NIMEBaseListener> {
      /**
       * 继承自 EventEmitter3 的监听事件方法。
       */
      on<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void;
      /**
       * 继承自 EventEmitter3 的监听事件方法。
       */
      once<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void;
      /**
       * 继承自 EventEmitter3 的取消监听方法。
       */
      off<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void;
      /**
       * 继承自 EventEmitter3 的移除事件方法。
       */
      removeAllListeners<T extends keyof I>(eventName?: T): void;
    }
    
    参数名称 类型 是否必填 说明
    eventName V2NIMMessageListener 事件名称:
  • onSendMessage:本端发送消息状态回调,本端发送消息或插入消息成功后,SDK 会返回该回调。
  • onReceiveMessages:消息接收回调,返回消息列表,包括本端接收的消息及其他端同步的消息。
  • onReceiveP2PMessageReadReceipts:单聊消息已读回调,返回已读回执列表。
  • onReceiveTeamMessageReadReceipts:群组消息已读回调,返回已读回执列表。
  • onMessageRevokeNotifications:消息撤回通知回调,返回消息撤回通知列表。
  • onMessagePinNotification:PIN 消息状态变化通知回调,返回 PIN 消息状态变化通知。
  • onMessageQuickCommentNotification:消息快捷评论通知回调,返回快捷评论通知。
  • onMessageDeletedNotifications:消息被删除回调,返回被删除的消息列表,包括本端删除的消息及其他端(单聊、群组)删除的消息。
  • onClearHistoryNotifications:会话内历史消息清除回调,返回被清除的历史消息列表,包括本端清除的历史消息及其他端(单聊、群组)清除的历史消息。
  • onReceiveMessagesModified:消息更新回调,返回更新后的消息列表。(AI 流式消息更新也触发该回调。)
  • fn function 监听事件的回调函数。当事件触发时,会调用该函数进行处理。
    Node.js/Electron
    TypeScriptexport interface NIMEBaseServiceInterface<I extends NIMEBaseListener> {
      /**
       * 继承自 EventEmitter3 的监听事件方法。
       */
      on<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void;
      /**
       * 继承自 EventEmitter3 的监听事件方法。
       */
      once<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void;
      /**
       * 继承自 EventEmitter3 的取消监听方法。
       */
      off<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void;
      /**
       * 继承自 EventEmitter3 的移除事件方法。
       */
      removeAllListeners<T extends keyof I>(eventName?: T): void;
    }
    
    参数名称 类型 是否必填 说明
    eventName V2NIMMessageListener 事件名称:
  • sendMessage:本端发送消息状态回调,本端发送消息或插入消息成功后,SDK 会返回该回调。
  • receiveMessages:消息接收回调,返回消息列表,包括本端接收的消息及其他端同步的消息。
  • receiveP2PMessageReadReceipts:单聊消息已读回调,返回已读回执列表。
  • receiveTeamMessageReadReceipts:群组消息已读回调,返回已读回执列表。
  • messageRevokeNotifications:消息撤回通知回调,返回消息撤回通知列表。
  • messagePinNotification:PIN 消息状态变化通知回调,返回 PIN 消息状态变化通知。
  • messageQuickCommentNotification:消息快捷评论通知回调,返回快捷评论通知。
  • messageDeletedNotifications:消息被删除回调,返回被删除的消息列表,包括本端删除的消息及其他端(单聊、群组)删除的消息。
  • clearHistoryNotifications:会话内历史消息清除回调,返回被清除的历史消息列表,包括本端清除的历史消息及其他端(单聊、群组)清除的历史消息。
  • receiveMessagesModified:消息更新回调,返回更新后的消息列表。(AI 流式消息更新也触发该回调。)
  • fn function 监听事件的回调函数。当事件触发时,会调用该函数进行处理。
    HarmonyOS
    TypeScriptexport interface NIMEBaseServiceInterface<I extends NIMEBaseListener> {
      /**
       * 继承自 EventEmitter3 的监听事件方法
       */
      on<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void;
      /**
       * 继承自 EventEmitter3 的监听事件方法
       */
      once<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void;
      /**
       * 继承自 EventEmitter3 的取消监听方法
       */
      off<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void;
      /**
       * 继承自 EventEmitter3 的移除事件方法
       */
      removeAllListeners<T extends keyof I>(eventName?: T): void;
    }
    
    参数名称 类型 是否必填 说明
    eventName V2NIMMessageListener 事件名称:
  • onSendMessage:本端发送消息状态回调,本端发送消息或插入消息成功后,SDK 会返回该回调。
  • onReceiveMessages:消息接收回调,返回消息列表,包括本端接收的消息及其他端同步的消息。
  • onReceiveP2PMessageReadReceipts:单聊消息已读回调,返回已读回执列表。
  • onReceiveTeamMessageReadReceipts:群组消息已读回调,返回已读回执列表。
  • onMessageRevokeNotifications:消息撤回通知回调,返回消息撤回通知列表。
  • onMessagePinNotification:PIN 消息状态变化通知回调,返回 PIN 消息状态变化通知。
  • onMessageQuickCommentNotification:消息快捷评论通知回调,返回快捷评论通知。
  • onMessageDeletedNotifications:消息被删除回调,返回被删除的消息列表,包括本端删除的消息及其他端(单聊、群组)删除的消息。
  • onClearHistoryNotifications:会话内历史消息清除回调,返回被清除的历史消息列表,包括本端清除的历史消息及其他端(单聊、群组)清除的历史消息。
  • onReceiveMessagesModified:消息更新回调,返回更新后的消息列表。(AI 流式消息更新也触发该回调。)
  • fn function 监听事件的回调函数。当事件触发时,会调用该函数进行处理。

    示例代码

    Web/uni-app/小程序
    TypeScriptnim.V2NIMMessageService.on("onSendMessage", function (message: V2NIMMessage) {})
    nim.V2NIMMessageService.on("onReceiveMessages", function (messages: V2NIMMessage[]) {})
    nim.V2NIMMessageService.on("onReceiveP2PMessageReadReceipts", function (readReceipts: V2NIMP2PMessageReadReceipt[]) {})
    nim.V2NIMMessageService.on("onReceiveTeamMessageReadReceipts", function (readReceipts: V2NIMTeamMessageReadReceipt[]) {})
    nim.V2NIMMessageService.on("onMessageRevokeNotifications", function (revokeNotifications: V2NIMMessageRevokeNotification[]) {})
    nim.V2NIMMessageService.on("onMessagePinNotification", function (pinNotification: V2NIMMessagePinNotification) {})
    nim.V2NIMMessageService.on("onMessageQuickCommentNotification", function (quickCommentNotification: V2NIMMessageQuickCommentNotification) {})
    nim.V2NIMMessageService.on("onMessageDeletedNotifications", function (messageDeletedNotifications: V2NIMMessageDeletedNotification[]) {})
    nim.V2NIMMessageService.on("onClearHistoryNotifications", function (clearHistoryNotifications: V2NIMClearHistoryNotification[]) {})
    nim.V2NIMMessageService.on("onReceiveMessagesModified", function (messages: V2NIMMessage[]) {})
    
    Node.js/Electron
    TypeScriptv2.messageService.on("sendMessage", function (message: V2NIMMessage) {})
    v2.messageService.on("receiveMessages", function (messages: V2NIMMessage[]) {})
    v2.messageService.on("receiveP2PMessageReadReceipts", function (readReceipts: V2NIMP2PMessageReadReceipt[]) {})
    v2.messageService.on("receiveTeamMessageReadReceipts", function (readReceipts: V2NIMTeamMessageReadReceipt[]) {})
    v2.messageService.on("messageRevokeNotifications", function (revokeNotifications: V2NIMMessageRevokeNotification[]) {})
    v2.messageService.on("messagePinNotification", function (pinNotification: V2NIMMessagePinNotification) {})
    v2.messageService.on("messageQuickCommentNotification", function (quickCommentNotification: V2NIMMessageQuickCommentNotification) {})
    v2.messageService.on("messageDeletedNotifications", function (messageDeletedNotifications: V2NIMMessageDeletedNotification[]) {})
    v2.messageService.on("clearHistoryNotifications", function (clearHistoryNotifications: V2NIMClearHistoryNotification[]) {})
    v2.messageService.on("receiveMessagesModified", function (messages: V2NIMMessage[]) {})
    
    HarmonyOS
    TypeScriptnim.messageService.on("onSendMessage", function (message: V2NIMMessage) {})
    nim.messageService.on("onReceiveMessages", function (messages: V2NIMMessage[]) {})
    nim.messageService.on("onReceiveP2PMessageReadReceipts", function (readReceipts: V2NIMP2PMessageReadReceipt[]) {})
    nim.messageService.on("onReceiveTeamMessageReadReceipts", function (readReceipts: V2NIMTeamMessageReadReceipt[]) {})
    nim.messageService.on("onMessageRevokeNotifications", function (revokeNotifications: V2NIMMessageRevokeNotification[]) {})
    nim.messageService.on("onMessagePinNotification", function (pinNotification: V2NIMMessagePinNotification) {})
    nim.messageService.on("onMessageQuickCommentNotification", function (quickCommentNotification: V2NIMMessageQuickCommentNotification) {})
    nim.messageService.on("onMessageDeletedNotifications", function (messageDeletedNotifications: V2NIMMessageDeletedNotification[]) {})
    nim.messageService.on("onClearHistoryNotifications", function (clearHistoryNotifications: V2NIMClearHistoryNotification[]) {})
    nim.messageService.on("onReceiveMessagesModified", function (messages: V2NIMMessage[]) {})
    

    返回参数

    无。

    off("EventName")

    接口描述

    取消注册消息相关监听。

    该方法为同步。

    参数说明

    Web/uni-app/小程序
    TypeScriptoff<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void
    
    参数名称 类型 是否必填 说明
    eventName V2NIMMessageListener 事件名称:
  • onSendMessage:本端发送消息状态回调,本端发送消息或插入消息成功后,SDK 会返回该回调。
  • onReceiveMessages:消息接收回调,返回消息列表,包括本端接收的消息及其他端同步的消息。
  • onReceiveP2PMessageReadReceipts:单聊消息已读回调,返回已读回执列表。
  • onReceiveTeamMessageReadReceipts:群组消息已读回调,返回已读回执列表。
  • onMessageRevokeNotifications:消息撤回通知回调,返回消息撤回通知列表。
  • onMessagePinNotification:PIN 消息状态变化通知回调,返回 PIN 消息状态变化通知。
  • onMessageQuickCommentNotification:消息快捷评论通知回调,返回快捷评论通知。
  • onMessageDeletedNotifications:消息被删除回调,返回被删除的消息列表,包括本端删除的消息及其他端(单聊、群组)删除的消息。
  • onClearHistoryNotifications:会话内历史消息清除回调,返回被清除的历史消息列表,包括本端清除的历史消息及其他端(单聊、群组)清除的历史消息。
  • onReceiveMessagesModified:消息更新回调,返回更新后的消息列表。(AI 流式消息更新也触发该回调。)
  • fn function 监听事件的回调函数。当事件触发时,会调用该函数进行处理。
    Node.js/Electron
    TypeScriptoff<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void
    
    参数名称 类型 是否必填 说明
    eventName V2NIMMessageListener 事件名称:
  • sendMessage:本端发送消息状态回调,本端发送消息或插入消息成功后,SDK 会返回该回调。
  • receiveMessages:消息接收回调,返回消息列表,包括本端接收的消息及其他端同步的消息。
  • receiveP2PMessageReadReceipts:单聊消息已读回调,返回已读回执列表。
  • receiveTeamMessageReadReceipts:群组消息已读回调,返回已读回执列表。
  • messageRevokeNotifications:消息撤回通知回调,返回消息撤回通知列表。
  • messagePinNotification:PIN 消息状态变化通知回调,返回 PIN 消息状态变化通知。
  • messageQuickCommentNotification:消息快捷评论通知回调,返回快捷评论通知。
  • messageDeletedNotifications:消息被删除回调,返回被删除的消息列表,包括本端删除的消息及其他端(单聊、群组)删除的消息。
  • clearHistoryNotifications:会话内历史消息清除回调,返回被清除的历史消息列表,包括本端清除的历史消息及其他端(单聊、群组)清除的历史消息。
  • receiveMessagesModified:消息更新回调,返回更新后的消息列表。(AI 流式消息更新也触发该回调。)
  • fn function 监听事件的回调函数。当事件触发时,会调用该函数进行处理。
    HarmonyOS
    TypeScriptoff<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void
    
    参数名称 类型 是否必填 说明
    eventName V2NIMMessageListener 事件名称:
  • onSendMessage:本端发送消息状态回调,本端发送消息或插入消息成功后,SDK 会返回该回调。
  • onReceiveMessages:消息接收回调,返回消息列表,包括本端接收的消息及其他端同步的消息。
  • onReceiveP2PMessageReadReceipts:单聊消息已读回调,返回已读回执列表。
  • onReceiveTeamMessageReadReceipts:群组消息已读回调,返回已读回执列表。
  • onMessageRevokeNotifications:消息撤回通知回调,返回消息撤回通知列表。
  • onMessagePinNotification:PIN 消息状态变化通知回调,返回 PIN 消息状态变化通知。
  • onMessageQuickCommentNotification:消息快捷评论通知回调,返回快捷评论通知。
  • onMessageDeletedNotifications:消息被删除回调,返回被删除的消息列表,包括本端删除的消息及其他端(单聊、群组)删除的消息。
  • onClearHistoryNotifications:会话内历史消息清除回调,返回被清除的历史消息列表,包括本端清除的历史消息及其他端(单聊、群组)清除的历史消息。
  • onReceiveMessagesModified:消息更新回调,返回更新后的消息列表。(AI 流式消息更新也触发该回调。)
  • fn function 监听事件的回调函数。当事件触发时,会调用该函数进行处理。

    示例代码

    Web/uni-app/小程序
    TypeScriptnim.V2NIMMessageService.off("onSendMessage", function (message: V2NIMMessage) {})
    nim.V2NIMMessageService.off("onReceiveMessages", function (messages: V2NIMMessage[]) {})
    nim.V2NIMMessageService.off("onReceiveP2PMessageReadReceipts", function (readReceipts: V2NIMP2PMessageReadReceipt[]) {})
    nim.V2NIMMessageService.off("onReceiveTeamMessageReadReceipts", function (readReceipts: V2NIMTeamMessageReadReceipt[]) {})
    nim.V2NIMMessageService.off("onMessageRevokeNotifications", function (revokeNotifications: V2NIMMessageRevokeNotification[]) {})
    nim.V2NIMMessageService.off("onMessagePinNotification", function (pinNotification: V2NIMMessagePinNotification) {})
    nim.V2NIMMessageService.off("onMessageQuickCommentNotification", function (quickCommentNotification: V2NIMMessageQuickCommentNotification) {})
    nim.V2NIMMessageService.off("onMessageDeletedNotifications", function (messageDeletedNotifications: V2NIMMessageDeletedNotification[]) {})
    nim.V2NIMMessageService.off("onClearHistoryNotifications", function (clearHistoryNotifications: V2NIMClearHistoryNotification[]) {})
    nim.V2NIMMessageService.off("onReceiveMessagesModified", function (messages: V2NIMMessage[]) {})
    
    Node.js/Electron
    TypeScriptv2.messageService.off("sendMessage", function (message: V2NIMMessage) {})
    v2.messageService.off("receiveMessages", function (messages: V2NIMMessage[]) {})
    v2.messageService.off("receiveP2PMessageReadReceipts", function (readReceipts: V2NIMP2PMessageReadReceipt[]) {})
    v2.messageService.off("receiveTeamMessageReadReceipts", function (readReceipts: V2NIMTeamMessageReadReceipt[]) {})
    v2.messageService.off("messageRevokeNotifications", function (revokeNotifications: V2NIMMessageRevokeNotification[]) {})
    v2.messageService.off("messagePinNotification", function (pinNotification: V2NIMMessagePinNotification) {})
    v2.messageService.off("messageQuickCommentNotification", function (quickCommentNotification: V2NIMMessageQuickCommentNotification) {})
    v2.messageService.off("messageDeletedNotifications", function (messageDeletedNotifications: V2NIMMessageDeletedNotification[]) {})
    v2.messageService.off("clearHistoryNotifications", function (clearHistoryNotifications: V2NIMClearHistoryNotification[]) {})
    v2.messageService.off("receiveMessagesModified", function (messages: V2NIMMessage[]) {})
    
    HarmonyOS
    TypeScriptnim.messageService.off("onSendMessage", function (message: V2NIMMessage) {})
    nim.messageService.off("onReceiveMessages", function (messages: V2NIMMessage[]) {})
    nim.messageService.off("onReceiveP2PMessageReadReceipts", function (readReceipts: V2NIMP2PMessageReadReceipt[]) {})
    nim.messageService.off("onReceiveTeamMessageReadReceipts", function (readReceipts: V2NIMTeamMessageReadReceipt[]) {})
    nim.messageService.off("onMessageRevokeNotifications", function (revokeNotifications: V2NIMMessageRevokeNotification[]) {})
    nim.messageService.off("onMessagePinNotification", function (pinNotification: V2NIMMessagePinNotification) {})
    nim.messageService.off("onMessageQuickCommentNotification", function (quickCommentNotification: V2NIMMessageQuickCommentNotification) {})
    nim.messageService.off("onMessageDeletedNotifications", function (messageDeletedNotifications: V2NIMMessageDeletedNotification[]) {})
    nim.messageService.off("onClearHistoryNotifications", function (clearHistoryNotifications: V2NIMClearHistoryNotification[]) {})
    nim.messageService.off("onReceiveMessagesModified", function (messages: V2NIMMessage[]) {})
    

    返回参数

    无。

    sendMessage

    接口描述

    发送一条消息。

    本端发送消息成功后,其他登录客户端和消息接收方会收到消息接收回调 onReceiveMessages

    • 发送消息前,请先调用 V2NIMMessageCreator 中的接口创建消息。
    • 如因网络等问题导致消息发送失败,可再次调用该方法重发消息。

    参数说明

    Android
    Javavoid sendMessage(V2NIMMessage message,
                     String conversationId,
                     V2NIMSendMessageParams params,
                     V2NIMSuccessCallback<V2NIMSendMessageResult> success,
                     V2NIMFailureCallback failure,
                     V2NIMProgressCallback progress);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 消息对象,通过调用 V2NIMMessageCreator 中的接口创建。如果为空或不存在则返回 191004 参数错误。
    conversationId String 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • params V2NIMSendMessageParams 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。
    success V2NIMSuccessCallback 消息发送成功回调,返回 V2NIMSendMessageResult
    failure V2NIMFailureCallback 消息发送失败回调,返回 错误码
    progress V2NIMProgressCallback 附件上传进度回调,用于图片、语音、视频、文件类型消息。
    iOS
    Objective-C- (void)sendMessage:(V2NIMMessage *)message
         conversationId:(NSString *)conversationId
                 params:(nullable V2NIMSendMessageParams *)params
                success:(nullable V2NIMSendMessageSuccess)success
                failure:(nullable V2NIMFailureCallback)failure
               progress:(nullable V2NIMProgressCallback)progress;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 消息对象,通过调用 V2NIMMessageCreator 中的接口创建。如果为空或不存在则返回 191004 参数错误。
    conversationId NSString * 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • params V2NIMSendMessageParams 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。
    success V2NIMSendMessageSuccess 消息发送成功回调,可自定义设置。
    failure V2NIMFailureCallback 消息发送失败回调,返回 错误码
    progress V2NIMProgressCallback 附件上传进度回调,用于图片、语音、视频、文件类型消息。
    macOS/Windows
    C++virtual void sendMessage(V2NIMMessage message,
        nstd::string conversationId,
        V2NIMSendMessageParams params,
        V2NIMSuccessCallback<V2NIMSendMessageResult> success,
        V2NIMFailureCallback failure,
        V2NIMProgressCallback progress) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 消息对象,通过调用 V2NIMMessageCreator 中的接口创建。如果为空或不存在则返回 191004 参数错误。
    conversationId nstd::string 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • params V2NIMSendMessageParams 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。
    success V2NIMSuccessCallback 消息发送成功回调,返回 V2NIMSendMessageResult
    failure V2NIMFailureCallback 消息发送失败回调,返回 错误码
    progress V2NIMProgressCallback 附件上传进度回调,用于图片、语音、视频、文件类型消息。
    Web/uni-app/小程序
    TypeScriptsendMessage(
      message: V2NIMMessage,
      conversationId: string,
      params?: V2NIMSendMessageParams,
      progress?: (percentage: number) => void
    ): Promise<V2NIMSendMessageResult>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 消息对象,通过调用 V2NIMMessageCreator 中的接口创建。如果为空或不存在则返回 191004 参数错误。
    conversationId string 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • params V2NIMSendMessageParams 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。
    progress number 附件上传进度(百分比),用于图片、语音、视频、文件类型消息。
    Node.js/Electron
    TypeScriptsendMessage(message, conversationId, params, progressCallback): Promise<V2NIMSendMessageResult>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 消息对象,通过调用 V2NIMMessageCreator 中的接口创建。如果为空或不存在则返回 191004 参数错误。
    conversationId nstd::string 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • params V2NIMSendMessageParams 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。
    progressCallback V2NIMProgressCallback 附件上传进度回调,用于图片、语音、视频、文件类型消息。
    HarmonyOS
    TypeScriptsendMessage(
    message: V2NIMMessage,
    conversationId: string,
    params?: V2NIMSendMessageParams,
    progress?: (percentage: number) => void
    ): Promise<V2NIMSendMessageResult>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 消息对象,通过调用 V2NIMMessageCreator 中的接口创建。如果为空或不存在则返回 191004 参数错误。
    conversationId string 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • params V2NIMSendMessageParams 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。
    progress number 附件上传进度(百分比),用于图片、语音、视频、文件类型消息。

    示例代码

    Android
    Java
     V2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
        V2NIMMessage v2Message = V2NIMMessageCreator.createTextMessage("xxx");
        String conversationId = V2NIMConversationIdUtil.conversationId("xxx", V2NIMConversationType.V2NIM_CONVERSATION_TYPE_P2P);
    
        V2NIMMessageAntispamConfig antispamConfig = V2NIMMessageAntispamConfig.V2NIMMessageAntispamConfigBuilder.builder()
            // TODO: 根据实际情况配置
            //                .withAntispamBusinessId()
            //                .withAntispamCheating()
            //                .withAntispamCustomMessage()
            //                .withAntispamEnabled()
            //                .withAntispamExtension()
            .build();
    
        V2NIMMessageConfig messageConfig = V2NIMMessageConfig.V2NIMMessageConfigBuilder.builder()
            // TODO: 根据实际情况配置
            //                .withLastMessageUpdateEnabled()
            //                .withHistoryEnabled()
            //                .withOfflineEnabled()
            //                .withOnlineSyncEnabled()
            //                .withReadReceiptEnabled()
            //                .withRoamingEnabled()
            //                .withUnreadEnabled()
            .build();
    
        V2NIMMessagePushConfig pushConfig = V2NIMMessagePushConfig.V2NIMMessagePushConfigBuilder.builder()
            // TODO: 根据实际情况配置
            //                .withContent()
            //                .withForcePush()
            //                .withForcePushAccountIds()
            //                .withForcePushContent()
            //                .withPayload()
            //                .withPushEnabled()
            //                .withPushNickEnabled()
            .build();
    
        V2NIMMessageRobotConfig robotConfig = V2NIMMessageRobotConfig.V2NIMMessageRobotConfigBuilder.builder()
            // TODO: 根据实际情况配置
            //                .withAccountId()
            //                .withCustomContent()
            //                .withFunction()
            //                .withTopic()
            .build();
    
        V2NIMMessageRouteConfig routeConfig = V2NIMMessageRouteConfig.V2NIMMessageRouteConfigBuilder.builder()
            // TODO: 根据实际情况配置
            //                .withRouteEnabled()
            //                .withRouteEnvironment()
            .build();
    
        V2NIMMessageAIConfigParams aiConfig = new V2NIMMessageAIConfigParams("aiUserAccountId");
        //设置设置请求大模型的内容
        aiConfig.setContent(new V2NIMAIModelCallContent("msg", 0));
        List<V2NIMAIModelCallMessage> messages = new ArrayList<>();
        messages.add(new V2NIMAIModelCallMessage(V2NIMAIModelRoleType.V2NIM_AI_MODEL_ROLE_TYPE_USER,"msg", 0));
        //设置上下文信息
        aiConfig.setMessages(messages);
        //设置提示词变量占位符替换,JSON 格式的字符串,用于填充 prompt 中的变量。如果 V2NIMAIUser 中的 modelConfig.prompt 定义了变量,则必填
        aiConfig.setPromptVariables("{key:value}");
        V2NIMAIModelConfigParams modelConfigParams = new V2NIMAIModelConfigParams();
        modelConfigParams.setPrompt("prompt");
        modelConfigParams.setMaxTokens(1000);
        modelConfigParams.setTopP(1.0);
        modelConfigParams.setTemperature(0.5);
        //设置大模型配置参数,会覆盖默认配置
        aiConfig.setModelConfigParams(modelConfigParams);
    
        V2NIMSendMessageParams sendMessageParams = V2NIMSendMessageParams.V2NIMSendMessageParamsBuilder.builder()
            .withAIConfig(aiConfig)
            // TODO: 根据实际情况配置
            //                .withAntispamConfig(antispamConfig)
            //                .withClientAntispamEnabled()
            //                .withClientAntispamReplace()
            //                .withMessageConfig(messageConfig)
            //                .withPushConfig(pushConfig)
            //                .withRobotConfig(robotConfig)
            //                .withRouteConfig(routeConfig)
            .build();
    
        v2MessageService.sendMessage(v2Message, conversationId, sendMessageParams,
            new V2NIMSuccessCallback<V2NIMSendMessageResult>() {
                @Override
                public void onSuccess(V2NIMSendMessageResult v2NIMSendMessageResult) {
                    // TODO: 发送成功
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
                    // TODO: 发送失败
                }
            },
            new V2NIMProgressCallback() {
                @Override
                public void onProgress(int progress) {
                    // TODO: 发送进度
                }
            });
    }
    
    iOS
    Objective-CV2NIMMessage *v2Message = [[V2NIMMessage alloc] init];
    V2NIMSendMessageParams *sendParams = [[V2NIMSendMessageParams alloc] init];
        [NIMSDK.sharedSDK.v2MessageService sendMessage:v2Message conversationId:@"conversationId" params:sendParams success:^(V2NIMSendMessageResult * _Nonnull result) {
            // 成功回调
        } failure:^(V2NIMError * _Nonnull error) {
            // 失败回调
        } progress:^(NSUInteger) {
            // 进度
        }];
    }];
    
    macOS/Windows
    C++v2::V2NIMMessage message;
    v2::V2NIMSendMessageParams sendMessageParams;
    messageService.sendMessage(
        message, conversationId, sendMessageParams,
        [=](v2::V2NIMSendMessageResult result) {
            // 成功回调                                          auto detailString = xpack::json::encode(result);
    
        },
        [=](v2::V2NIMError error) {
    // upload progress
    
        },
        [=](uint32_t progress) {
    // upload progress
    
        }); 先使用 MessageCreator 模块下的接口创建消息\n2. 上传进度点开 detail [sendMessage::progress]"));
    
    Web/uni-app/小程序
    TypeScriptconst messageBeforeSend = nim.V2NIMMessageCreator.createTextMessage("hello world")
    const conversationId = nim.V2NIMConversationIdUtil.p2pConversationId('ACCOUND_ID')
    const paramsForAIConfig = {
      "accountId": "YOUR_AI_ACCOUNT_ID",
      "content": {
        "msg": "YOUR_CONTENT_MSG",
        "type": 0
      }
    }
    const res: V2NIMSendMessageResult = await nim.V2NIMMessageService.sendMessage(
      messageBeforeSend,
      conversationId,
      {
        "aiConfig": paramsForAIConfig,
        "messageConfig": {},
        "routeConfig": {},
        "pushConfig": {},
        "antispamConfig": {},
        "robotConfig": {},
        "clientAntispamEnabled": true,
        "clientAntispamReplace": "******"
      }
    )
    
    Node.js/Electron
    TypeScriptconst message = v2.messageCreator.createTextMessage('Hello NTES IM')
    const result = await v2.messageService.sendMessage(message, conversationId, params, progressCallback)
    
    HarmonyOS
    TypeScripttry {
      const message: V2NIMMessage = nim.messageCreator.createTextMessage("hello")
      const res: V2NIMSendMessageResult = await nim.messageService.sendMessage(message, 'test1|1|test2')
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMSendMessageResult> 消息发送结果

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMSendMessageResult
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMSendMessageSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    modifyMessage

    接口描述

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

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

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

    参数说明

    Android
    Javavoid modifyMessage(V2NIMMessage message, V2NIMModifyMessageParams params, V2NIMSuccessCallback<V2NIMModifyMessageResult> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    params V2NIMModifyMessageParams 更新消息的配置参数,包括 subTypetextattachmentserverExtension 字段、抄送配置以及反垃圾配置。
    success V2NIMSuccessCallback 更新发送成功回调,返回 V2NIMModifyMessageResult
    failure V2NIMFailureCallback 更新发送失败回调,返回 错误码
    iOS
    Objective-C-(void)modifyMessage:(V2NIMMessage *)message
                  params:(V2NIMModifyMessageParams *)params
                 success:(nullable V2NIMModifyMessageSuccess)success
                 failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    params V2NIMModifyMessageParams 更新消息的配置参数,包括 subTypetextattachmentserverExtension 字段、抄送配置以及反垃圾配置。
    success V2NIMModifyMessageSuccess 更新发送成功回调,可自定义设置。
    failure V2NIMFailureCallback 更新失败回调,返回 错误码
    macOS/Windows
    C++virtual void v2::V2NIMMessageService::modifyMessage(const V2NIMMessage & message,
                                                        const V2NIMModifyMessageParams & params,
                                                        const V2NIMSuccessCallback<const V2NIMModifyMessageResult &> & success,
                                                        const V2NIMFailureCallback & failure)
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    params V2NIMModifyMessageParams 更新消息的配置参数,包括 subTypetextattachmentserverExtension 字段、抄送配置以及反垃圾配置。
    success V2NIMSuccessCallback 更新发送成功回调,返回 V2NIMModifyMessageResult
    failure V2NIMFailureCallback 更新发送失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptmodifyMessage(message: V2NIMMessage, params: V2NIMModifyMessageParams): Promise<V2NIMModifyMessageResult>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    params V2NIMModifyMessageParams 更新消息的配置参数,包括 subTypetextattachmentserverExtension 字段、抄送配置以及反垃圾配置。
    Node.js/Electron
    TypeScriptmodifyMessage(message, params): Promise<V2NIMModifyMessageResult>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    params V2NIMModifyMessageParams 更新消息的配置参数,包括 subTypetextattachmentserverExtension 字段、抄送配置以及反垃圾配置。
    HarmonyOS
    TypeScriptmodifyMessage(message: V2NIMMessage, params: V2NIMModifyMessageParams): Promise<V2NIMModifyMessageResult>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    params V2NIMModifyMessageParams 更新消息的配置参数,包括 subTypetextattachmentserverExtension 字段、抄送配置以及反垃圾配置。

    示例代码

    Android
    JavaString newMessageText = "new message text";
    int newSubType = 1;
    String newServerExtension = "{\"key\":\"value\"}";
    boolean clientAntispamEnabled = true;
    String clientAntispamReplace = "replace text";
    
    V2NIMMessageAntispamConfig antispamConfig = V2NIMMessageAntispamConfig.V2NIMMessageAntispamConfigBuilder.builder()
       // TODO: 根据实际情况配置
       //                .withAntispamBusinessId()
       //                .withAntispamCheating()
       //                .withAntispamCustomMessage()
       //                .withAntispamEnabled()
       //                .withAntispamExtension()
       .build();
    
    V2NIMMessagePushConfig pushConfig = V2NIMMessagePushConfig.V2NIMMessagePushConfigBuilder.builder()
       // TODO: 根据实际情况配置
       //                .withContent()
       //                .withForcePush()
       //                .withForcePushAccountIds()
       //                .withForcePushContent()
       //                .withPayload()
       //                .withPushEnabled()
       //                .withPushNickEnabled()
       .build();
    
    V2NIMMessageRouteConfig routeConfig = V2NIMMessageRouteConfig.V2NIMMessageRouteConfigBuilder.builder()
       // TODO: 根据实际情况配置
       //                .withRouteEnabled()
       //                .withRouteEnvironment()
       .build();
    
    V2NIMModifyMessageParams modifyMessageParams = V2NIMModifyMessageParamsBuilder.builder()
       .withText(newMessageText)
       .withSubType(newSubType)
       .withServerExtension(newServerExtension)
       //仅支持地理位置消息附件和自定义消息附件的修改
       .withAttachment(createLocationMessageAttachment())
       .withAntispamConfig(antispamConfig)
       .withRouteConfig(routeConfig)
       .withPushConfig(pushConfig)
       .withClientAntispamEnabled(clientAntispamEnabled)
       .withClientAntispamReplace(clientAntispamReplace)
       .build();
    V2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    v2MessageService.modifyMessage(getMessage(), modifyMessageParams, new V2NIMSuccessCallback<V2NIMModifyMessageResult>() {
      @Override
      public void onSuccess(V2NIMModifyMessageResult v2NIMModifyMessageResult) {
       if (v2NIMModifyMessageResult.getErrorCode() == 200) {
        //修改成功
       }else{
        //修改失败,可能触发的反垃圾
       }
      }
    }, new V2NIMFailureCallback() {
      @Override
      public void onFailure(V2NIMError error) {
       //修改失败
      }
    });
    
    iOS
    Objective-CV2NIMModifyMessageParams *params = [[V2NIMModifyMessageParams alloc] init];
    // 更新消息内容
    params.text = @"modified text";
    // 仅位置消息和自定义消息可以更新附件
    params.attachment = modifiedAttachment;
    // 更新消息的服务器扩展字段
    params.serverExtension = @"{\"key\": \"value\"}";
    [[NIMSDK sharedSDK].v2MessageService modifyMessage:message params:params success:^(V2NIMModifyMessageResult *result) {
            // 更新消息成功
        } failure:^(V2NIMError *error) {
            // 更新消息失败
        }];
    
    macOS/Windows
    C++auto params = V2NIMModifyMessageParams();
    messageService.modifyMessage(
        message,
        params,
        [](V2NIMModifyMessageResult result) {
            // modify message succeeded
        },
        [](V2NIMError error) {
            // modify message failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScriptlet message = nim.V2NIMMessageCreator.createTextMessage("origin text")
    const res: V2NIMSendMessageResult = await nim.V2NIMMessageService.sendMessage(message, 'YOUR_CONVERSATION_ID')
    await nim.V2NIMMessageService.modifyMessage(res.message, {
        "text": "modified text"
    })
    
    Node.js/Electron
    TypeScriptconst result = await v2.messageService.modifyMessage(message, {
        text: 'Hello NTES IM'
    })
    
    HarmonyOS
    TypeScriptlet message = nim.messageCreator.createTextMessage("origin text")
    const params: V2NIMModifyMessageParams = {
      subType: this.subType,
      text: this.text,
      serverExtension: this.serverExtension
    } as V2NIMModifyMessageParams
    
    const result = await nim.messageService.modifyMessage(message, params)
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/HarmonyOS

    Promise<V2NIMModifyMessageResult> 更新消息结果

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMModifyMessageResult
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMModifyMessageSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    revokeMessage

    接口描述

    撤回一条指定消息。

    本地端或多端同步撤回消息成功后,SDK 会返回消息撤回通知回调 onMessageRevokeNotifications,并同步缓存和数据库。

    仅支持撤回已发送成功的消息,不支持撤回通知类型的消息。

    参数说明

    Android
    Javavoid revokeMessage(V2NIMMessage message, V2NIMMessageRevokeParams params, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 待撤回的消息对象,该消息发送状态必须为 V2NIMMessageSendingState.V2NIM_MESSAGE_SENDING_STATE_SUCCEEDED(1)。如果为空或不存在则返回 191004 参数错误。
    params V2NIMMessageRevokeParams 消息撤回配置参数
    success V2NIMSuccessCallback 消息撤回成功回调
    failure V2NIMFailureCallback 消息撤回失败回调,返回 错误码
    iOS
    Objective-C- (void)revokeMessage:(V2NIMMessage *)message
             revokeParams:(V2NIMMessageRevokeParams *)revokeParams
                  success:(nullable V2NIMSuccessCallback)success
                  failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 待撤回的消息对象,该消息发送状态必须为 V2NIMMessageSendingState.V2NIM_MESSAGE_SENDING_STATE_SUCCEEDED(1)。如果为空或不存在则返回 191004 参数错误。
    params V2NIMMessageRevokeParams 消息撤回配置参数
    success V2NIMSuccessCallback 消息撤回成功回调
    failure V2NIMFailureCallback 消息撤回失败回调,返回 错误码
    macOS/Windows
    C++virtual void revokeMessage(V2NIMMessage message,
            V2NIMMessageRevokeParams params,
            V2NIMSuccessCallback<void> success,
            V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 待撤回的消息对象,该消息发送状态必须为 V2NIMMessageSendingState.V2NIM_MESSAGE_SENDING_STATE_SUCCEEDED(1)。如果为空或不存在则返回 191004 参数错误。
    params V2NIMMessageRevokeParams 消息撤回配置参数
    success V2NIMSuccessCallback 消息撤回成功回调
    failure V2NIMFailureCallback 消息撤回失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptrevokeMessage(message: V2NIMMessage, params?: V2NIMMessageRevokeParams): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 待撤回的消息对象,该消息发送状态必须为 V2NIMMessageSendingState.V2NIM_MESSAGE_SENDING_STATE_SUCCEEDED(1)。如果为空或不存在则返回 191004 参数错误。
    params V2NIMMessageRevokeParams 消息撤回配置参数
    Node.js/Electron
    TypeScriptrevokeMessage(message, params): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 待撤回的消息对象,该消息发送状态必须为 V2NIMMessageSendingState.V2NIM_MESSAGE_SENDING_STATE_SUCCEEDED(1)。如果为空或不存在则返回 191004 参数错误。
    params V2NIMMessageRevokeParams 消息撤回配置参数
    HarmonyOS
    TypeScriptrevokeMessage(message: V2NIMMessage, params?: V2NIMMessageRevokeParams): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 待撤回的消息对象,该消息发送状态必须为 V2NIMMessageSendingState.V2NIM_MESSAGE_SENDING_STATE_SUCCEEDED(1)。如果为空或不存在则返回 191004 参数错误。
    params V2NIMMessageRevokeParams 消息撤回配置参数

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    // V2NIMMessage revokeMessage = ; // 被撤回的消息
    // 根据实际情况配置
    V2NIMMessageRevokeParams revokeParams = V2NIMMessageRevokeParams.V2NIMMessageRevokeParamsBuilder.builder()
    .withEnv()
    .withExtension()
    .withPostscript()
    .withPushContent()
    .withPushPayload()
    .build();
    
    v2MessageService.revokeMessage(revokeMessage, revokeParams,
            new V2NIMSuccessCallback<Void>() {
                @Override
                public void onSuccess(Void unused) {
                    // TODO: 撤回成功
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
                    // TODO: 撤回失败
                }
            });
    
    iOS
    Objective-CV2NIMMessageRevokeParams *revokeParams = [[V2NIMMessageRevokeParams alloc] init];
    
    [[[NIMSDK sharedSDK] v2MessageService] revokeMessage:message
                                            revokeParams:revokeParams
                                                  success:^{
                                                // 发送成功回调
                                                }
                                                  failure:^(V2NIMError * _Nonnull error) {
                                                // 发送失败回调,error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMMessage message;
    // ...
    V2NIMMessageRevokeParams params;
    messageService.revokeMessage(
        message,
        params,
        []() {
            // revoke message succeeded
        },
        [](V2NIMError error) {
            // revoke message failed, handle error
        }
    );
    
    Web/uni-app/小程序
    TypeScripttry {
      await nim.V2NIMMessageService.revokeMessage(message)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      await v2.messageService.revokeMessage(message, {})
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      await nim.messageService.revokeMessage(message)
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。消息撤回成功,返回 onMessageRevokeNotifications 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/HarmonyOS

    消息撤回成功,返回 onMessageRevokeNotifications 回调。

    Node.js/Electron

    消息撤回成功,返回 messageRevokeNotifications 回调。

    getMessageList

    接口描述

    按消息查询配置项分页获取所有历史消息。

    该方法用于分页获取会话内消息数据,直到获取会话内全量消息,获取到的消息不包括已删除消息。

    参数说明

    Android
    Javavoid getMessageList(V2NIMMessageListOption option, V2NIMSuccessCallback<List<V2NIMMessage>> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    option V2NIMMessageListOption 消息查询配置项,支持查询指定时间段和消息类型的历史消息。
    success V2NIMSuccessCallback 查询成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    iOS
    Objective-C- (void)getMessageList:(V2NIMMessageListOption *)option
                   success:(nullable V2NIMGetMessageListSuccess)success
                   failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    option V2NIMMessageListOption 消息查询配置项
    success V2NIMSuccessCallback 查询成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    macOS/Windows
    C++virtual void getMessageList(V2NIMMessageListOption option,
        V2NIMSuccessCallback<nstd::vector<V2NIMMessage>> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    option V2NIMMessageListOption 消息查询配置项
    success V2NIMSuccessCallback 查询成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptgetMessageList(option: V2NIMMessageListOption): Promise<V2NIMMessage[]>
    
    参数名称 类型 是否必填 说明
    option V2NIMMessageListOption 消息查询配置项
    Node.js/Electron
    TypeScriptgetMessageList(option): Promise<V2NIMMessage[]>
    
    参数名称 类型 是否必填 说明
    option V2NIMMessageListOption 消息查询配置项
    HarmonyOS
    TypeScriptgetMessageList(option: V2NIMMessageListOption): Promise<V2NIMMessage[]>
    
    参数名称 类型 是否必填 说明
    option V2NIMMessageListOption 消息查询配置项

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    V2NIMConversationType conversationType = V2NIMConversationType.V2NIM_CONVERSATION_TYPE_P2P;
    String conversationId = V2NIMConversationIdUtil.conversationId("xxx", conversationType);
    
    V2NIMMessageListOption listOption = V2NIMMessageListOption.V2NIMMessageListOptionBuilder.builder(conversationId)
            // TODO: 根据实际情况配置
    //                .withAnchorMessage()
    //                .withBeginTime()
    //                .withDirection()
    //                .withEndTime()
    //                .withLimit()
    //                .withMessageTypes()
    //                .withStrictMode()
            .build();
    
    v2MessageService.getMessageList(listOption,
            new V2NIMSuccessCallback<List<V2NIMMessage>>() {
                @Override
                public void onSuccess(List<V2NIMMessage> v2NIMMessages) {
                    // TODO: 成功
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
                    // TODO: 失败
                }
            });
    
    iOS
    Objective-CV2NIMMessageListOption *option = [[V2NIMMessageListOption alloc] init];
    [[[NIMSDK sharedSDK] v2MessageService] getMessageList:option
                                                  success:^(NSArray<V2NIMMessage *> * _Nonnull result) {
        //result 返回消息数组
    }
                                                  failure:^(V2NIMError * _Nonnull error) {
        //error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMMessageListOption option;
    option.limit = 10;
    messageService.getMessageList(
        option,
        [](nstd::vector<V2NIMMessage> messages) {
            for (auto&& message : messages) {
                // do something
            }
        },
        [](V2NIMError error) {
            // get message list failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const res: V2NIMMessage[] = await nim.V2NIMMessageService.getMessageList({
        "conversationId": "cjhz1|1|cs6",
        "limit": 50,
        "anchorMessage": {
          "messageServerId": "111",
          "createTime": 0
        },
        "direction": 0
    })
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      const messages = await v2.messageService.getMessageList({
        conversationId: 'conversationId'
    })
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      const res: V2NIMMessage[] = await nim.messageService.getMessageList({
        "conversationId": "cjhz1|1|cs6",
        "limit": 50,
        "anchorMessage": {
          "messageServerId": "111",
          "createTime": 0
        },
        "direction": 0
    })
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMMessage[]> 消息列表

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMMessage 列表。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMConversationResultCallback 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    getMessageListEx

    接口描述

    按消息查询配置项分页获取所有历史消息。可以根据参数组合查询各种类型,每次默认 50 条消息。

    该方法用于分页获取会话内消息数据,直到获取会话内全量消息,获取到的消息不包括已删除消息。

    getMessageList 方法,返回中新增下次查询的锚点消息(anchorMessage)。

    参数说明

    Android
    Javavoid getMessageListEx(V2NIMMessageListOption option, V2NIMSuccessCallback<V2NIMMessageListResult> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    option V2NIMMessageListOption 消息查询配置项,支持查询指定时间段和消息类型的历史消息。
    success V2NIMSuccessCallback 查询成功回调,返回查询结果。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    iOS
    Objective-C- (void)getMessageListEx:(V2NIMMessageListOption *)option
                   success:(nullable V2NIMGetMessageListExSuccess)success
                   failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    option V2NIMMessageListOption 消息查询配置项
    success V2NIMGetMessageListExSuccess 查询成功回调,可自定义设置。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    macOS/Windows
    C++virtual void getMessageListEx(const V2NIMMessageListOption& option,
        const V2NIMSuccessCallback<const V2NIMMessageListResult&>& success,
        const V2NIMFailureCallback& failure) = 0;
    
    参数名称 类型 是否必填 说明
    option V2NIMMessageListOption 消息查询配置项
    success V2NIMSuccessCallback 查询成功回调,返回查询结果。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptgetMessageListEx(option: V2NIMMessageListOption): Promise<V2NIMMessageListResult>
    
    参数名称 类型 是否必填 说明
    option V2NIMMessageListOption 消息查询配置项
    Node.js/Electron
    TypeScriptgetMessageListEx(option: V2NIMMessageListOption): Promise<V2NIMMessageListResult>
    
    参数名称 类型 是否必填 说明
    option V2NIMMessageListOption 消息查询配置项
    HarmonyOS
    TypeScriptgetMessageListEx(option: V2NIMMessageListOption): Promise<V2NIMMessageListResult>
    
    参数名称 类型 是否必填 说明
    option V2NIMMessageListOption 消息查询配置项

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    V2NIMConversationType conversationType = V2NIMConversationType.V2NIM_CONVERSATION_TYPE_P2P;
    String conversationId = V2NIMConversationIdUtil.conversationId("xxx", conversationType);
    
    V2NIMMessageListOption listOption = V2NIMMessageListOption.V2NIMMessageListOptionBuilder.builder(conversationId)
            // TODO: 根据实际情况配置
    //                .withAnchorMessage()
    //                .withBeginTime()
    //                .withDirection()
    //                .withEndTime()
    //                .withLimit()
    //                .withMessageTypes()
    //                .withStrictMode()
            .build();
    
    v2MessageService.getMessageListEx(listOption,
            new V2NIMSuccessCallback<V2NIMMessageListResult>() {
                @Override
                public void onSuccess(V2NIMMessageListResult result) {
                    // TODO: 成功
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
                    // TODO: 失败
                }
            });
    
    iOS
    Objective-CV2NIMMessageListOption *option = [[V2NIMMessageListOption alloc] init];
    // 设置会话ID,来指定搜索某个会话种的消息。必传
    option.conversationId = conversation;
    // 设置消息类型列表,来指定查询某些类型的消息。不传则表示查询所有类型的消息。
    // 这里配置为查询文本消息和文件消息。
    option.messageTypes = @[@(V2NIM_MESSAGE_TYPE_TEXT), @(V2NIM_MESSAGE_TYPE_FILE)];
    // 设置查找范围的较小时间戳。单位为秒。不传则表示不限制最小时间。
    option.beginTime = 1700000000.0;
    // 设置查找范围的较大时间戳。单位为秒。不传则表示不限制最大时间。
    option.endTime = 1740000000.0;
    // 设置搜索结果的最大条数。默认值为50。
    option.limit = 100;
    // 查询锚点。第一次查询不用传。查询完成后会回调nextPageToken字段。翻页查询时需要传入该字段。
    // 查询锚点不为空时,如果查询方向为从晚到早,则要求endTime不传或者和锚点时间一致。;如果查询方向为从早到晚,则要求beginTime不传或者和锚点时间一致。
    option.anchorMessage = nil;
    // 查询方向,默认从晚到早查询。这里配置的就是从晚到早。
    option.direction = V2NIM_QUERY_DIRECTION_DESC;
    // 是否启用严格模式,默认关闭。
    // 严格模式开启时,会按需查询云端数据,确保回调数据的准确性。无法确保准确性时,回调错误。
    // 严格模式关闭时,模拟常规使用场景,云端补充消息失败时,会返回本地查询的结果;查询最近一页消息时,通过直接返回本地数据来避免白屏,在后台按需默默补充消息。
    option.strictMode = YES;
    // 是否只查询本地数据,默认关闭。开启时,strictMode会被忽略。
    option.onlyQueryLocal = NO;
    
    [[NIMSDK sharedSDK].v2MessageService getMessageListEx:option success:^(V2NIMMessageListResult * _Nonnull result) {
        // 查询成功。使用anchorMessage翻页
    } failure:^(V2NIMError * _Nonnull error) {
        // 查询失败
    }];
    
    macOS/Windows
    C++V2NIMMessageListOption option;
    // ...
    messageService.getMessageListEx(
        option,
        [=](const V2NIMMessageListResult& result) {
            // do something
        },
        [=](const V2NIMError& error) {
           // get message list failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const res: V2NIMMessageListResult = await nim.V2NIMMessageService.getMessageListEx({
        "conversationId": "cjhz1|1|cs6",
        "limit": 50,
        "anchorMessage": {
          "messageServerId": "111",
          "createTime": 0
        },
        "direction": 0
    })
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScriptconst result = await v2.messageService.getMessageListEx({
        conversationId: 'conversationId'
    
    HarmonyOS
    TypeScripttry {
      const res: V2NIMMessageListResult = await nim.messageService.getMessageListEx({
        "conversationId": "cjhz1|1|cs6",
        "limit": 50,
        "anchorMessage": { // if need
          "messageServerId": "111",
          // and more ...
        },
        "direction": V2NIMQueryDirection.V2NIM_QUERY_DIRECTION_DESC
    })
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMMessageListResult> 查询结果

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含查询结果。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMGetMessageListExSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    getCloudMessageList

    接口描述

    按消息查询配置项分页获取云端消息。可以根据参数组合查询各种类型,每次默认 50 条消息。

    该方法只查询云端消息,不影响本地已有的消息,且对消息过滤功能不生效。

    参数说明

    Android
    Javavoid getCloudMessageList(V2NIMCloudMessageListOption option, V2NIMSuccessCallback<V2NIMMessageListResult> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    option V2NIMCloudMessageListOption 云端消息查询配置项,支持查询指定时间段和消息类型的历史消息。
    success V2NIMSuccessCallback 查询成功回调,返回查询结果。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    iOS
    Objective-C- (void)getCloudMessageList:(V2NIMCloudMessageListOption *)option
                        success:(nullable V2NIMGetCloudMessageListSuccess)success
                        failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    option V2NIMCloudMessageListOption 云端消息查询配置项,支持查询指定时间段和消息类型的历史消息。
    success V2NIMGetCloudMessageListSuccess 查询成功回调,可自定义设置。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    macOS/Windows
    C++virtual void getCloudMessageList(const V2NIMCloudMessageListOption& option,
        const V2NIMSuccessCallback<const V2NIMMessageListResult&>& success,
        const V2NIMFailureCallback& failure) = 0;
    
    参数名称 类型 是否必填 说明
    option V2NIMCloudMessageListOption 云端消息查询配置项,支持查询指定时间段和消息类型的历史消息。
    success V2NIMSuccessCallback 查询成功回调,返回查询结果。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    Node.js/Electron
    TypeScriptgetCloudMessageList(option: V2NIMCloudMessageListOption): Promise<V2NIMMessageListResult>
    
    参数名称 类型 是否必填 说明
    option V2NIMCloudMessageListOption 云端消息查询配置项,支持查询指定时间段和消息类型的历史消息。
    HarmonyOS
    TypeScriptgetCloudMessageList(option: V2NIMCloudMessageListOption): Promise<V2NIMMessageListResult>
    
    参数名称 类型 是否必填 说明
    option V2NIMCloudMessageListOption 云端消息查询配置项,支持查询指定时间段和消息类型的历史消息。

    示例代码

    Android
    Java// 构建云端消息查询参数
    String conversationId = "xxxx";
    long beginTime = System.currentTimeMillis() - 7 * 24 * 60 * 60 * 1000L; // 7天前
    long endTime = System.currentTimeMillis(); // 当前时间
    int limit = 20; // 查询20条消息
    
    V2NIMCloudMessageListOption option = V2NIMCloudMessageListOption.V2NIMCloudMessageListOptionBuilder
        .builder(conversationId)
        .withBeginTime(beginTime)
        .withEndTime(endTime)
        .withLimit(limit)
        .withDirection(V2NIMMessageQueryDirection.V2NIM_QUERY_DIRECTION_DESC)
        .build();
    
    // 调用接口
    NIMClient.getService(V2NIMMessageService.class).getCloudMessageList(option,
        new V2NIMSuccessCallback<V2NIMMessageListResult>() {
            @Override
            public void onSuccess(V2NIMMessageListResult result) {
                System.out.println("查询云端消息成功");
                
                List<V2NIMMessage> messages = result.getMessages();
                V2NIMMessage anchorMessage = result.getAnchorMessage();
                
                System.out.println("获取到 " + messages.size() + " 条消息");
                
                for (V2NIMMessage message : messages) {
                    System.out.println("消息ID: " + message.getMessageClientId());
                    System.out.println("消息内容: " + message.getText());
                    System.out.println("发送时间: " + message.getCreateTime());
                    System.out.println("---");
                }
                
                if (anchorMessage != null) {
                    System.out.println("还有更多消息,下次查询锚点: " + anchorMessage.getMessageClientId());
                } else {
                    System.out.println("没有更多消息了");
                }
            }
        },
        new V2NIMFailureCallback() {
            @Override
            public void onFailure(V2NIMError error) {
                System.out.println("查询云端消息失败, code: " + error.getCode() + 
                                 ", message: " + error.getDesc());
            }
        }
    );
    
    macOS/Windows
    C++V2NIMCloudMessageListOption option;
    // ...
    messageService.getCloudMessageList(
         option,
         [=](const V2NIMMessageListResult& result) {
             // do something
         },
         [=](const V2NIMError& error) {
             // get message list failed, handle error
         });
    
    Node.js/Electron
    TypeScriptconst result = await v2.messageService.getCloudMessageList({
        conversationId: 'conversationId'
    })
    
    HarmonyOS
    TypeScriptconst option: V2NIMCloudMessageListOption = {
      conversationId: 'cjl|1|cjl1',
      beginTime: undefined,
      endTime: undefined,
      anchorMessage: undefined,
      limit: 10,
      direction: V2NIMQueryDirection.V2NIM_QUERY_DIRECTION_DESC,
    }
    
    const messageListResult: V2NIMMessageListResult = await nim.messageService.getCloudMessageList(option)
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Node.js/Electron/HarmonyOS

    Promise<V2NIMMessageListResult> 查询结果

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含查询结果。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMGetCloudMessageListSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Node.js/Electron/HarmonyOS

    无。

    getMessageListByIds

    接口描述

    批量查询指定消息列表。

    该方法从 本地数据库 按照客户端消息 ID 批量获取消息数据。

    Web 端不支持该接口。

    参数说明

    Android
    Javavoid getMessageListByIds(List<String> messageClientIds, V2NIMSuccessCallback<List<V2NIMMessage>> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    messageClientIds List<String> 客户端消息 ID,具有唯一性。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 查询成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    iOS
    Objective-C- (void)getMessageListByIds:(NSArray<NSString *> *)messageClientIds
                        success:(nullable V2NIMGetMessageListSuccess)success
                        failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    messageClientIds NSArray<NSString *> * 客户端消息 ID,具有唯一性。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 查询成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    macOS/Windows
    C++virtual void getMessageListByIds(nstd::vector<nstd::string> messageClientIds,
            V2NIMSuccessCallback<nstd::vector<V2NIMMessage>> success,
            V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    messageClientIds nstd::vector<nstd::string> 客户端消息 ID,具有唯一性。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 查询成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    HarmonyOS
    TypeScriptgetMessageListByIds(messageClientIds: string[]): Promise<V2NIMMessage[]>
    
    参数名称 类型 是否必填 说明
    messageClientIds string[] 客户端消息 ID,具有唯一性。不能为空,否则返回 191004 参数错误。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    List<String> messageClientIds = new ArrayList<>();
    // TODO
    // messageClientIds.add("xxx");
    
    v2MessageService.getMessageListByIds(messageClientIds,
            new V2NIMSuccessCallback<List<V2NIMMessage>>() {
                @Override
                public void onSuccess(List<V2NIMMessage> v2NIMMessages) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            });
    
    iOS
    Objective-CNSArray *messageClientIds = @[@"messageClientId1",@"messageClientId2",@"messageClientIdn"];
    
    [[[NIMSDK sharedSDK] v2MessageService] getMessageListByIds:messageClientIds
                                                        success:^(NSArray<V2NIMMessage *> * _Nonnull result) {
        //result 返回消息数组
    
    }
                                                        failure:^(V2NIMError * _Nonnull error) {
        //error 包含错误原因
    }];
    
    macOS/Windows
    C++nstd::vector<nstd::string> messageClientIds;
    // ...
    messageService.getMessageListByIds(
        messageClientIds,
        [](nstd::vector<V2NIMMessage> messages) {
            for (auto&& message : messages) {
                // do something
            }
        },
        [](V2NIMError error) {
            // get message list by ids failed, handle error
        });
    
    HarmonyOS
    TypeScriptconst messageIds: string[] //消息 ID 数组
    const result = await nim.messageService.getMessageListByIds(messageIds)
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    HarmonyOS

    Promise<V2NIMMessage[]> 消息列表

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMMessage 列表。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMConversationListCallback 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    HarmonyOS

    无。

    deleteMessage

    接口描述

    删除单条消息。

    本地端或多端同步删除消息成功后,SDK 会返回消息删除通知回调 onMessageDeletedNotifications,并同步数据库和缓存。

    仅单聊和高级群支持消息删除多端同步。

    参数说明

    Android
    Javavoid deleteMessage(V2NIMMessage message, String serverExtension, boolean onlyDeleteLocal, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 删除的消息对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension String 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    onlyDeleteLocal Boolean 是否仅删除本地消息:
  • true:仅删除本地消息,本地数据库会将该消息标记为已删除,不会多端同步。实例存续期间调用 getMessageList 时 SDK 不会返回已删除的消息。
  • false:删除本地消息的同时删除云端消息。删除后不可恢复,会多端同步。如果消息未发送成功,则仅删除本地消息。
  • 默认为 true。
    success V2NIMSuccessCallback 删除消息成功回调
    failure V2NIMFailureCallback 删除消息失败回调,返回 错误码
    iOS
    Objective-C- (void)deleteMessage:(V2NIMMessage *)message
          serverExtension:(NSString *)serverExtension
          onlyDeleteLocal:(BOOL)onlyDeleteLocal
                  success:(nullable V2NIMSuccessCallback)success
                  failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 删除的消息对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension NSString * 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    onlyDeleteLocal BOOL 是否仅删除本地消息:
  • true:仅删除本地消息,本地数据库会将该消息标记为已删除,不会多端同步。实例存续期间调用 getMessageList 时 SDK 不会返回已删除的消息。
  • false:删除本地消息的同时删除云端消息。删除后不可恢复,会多端同步。如果消息未发送成功,则仅删除本地消息。
  • 默认为 true。
    success V2NIMSuccessCallback 删除消息成功回调
    failure V2NIMFailureCallback 删除消息失败回调,返回 错误码
    macOS/Windows
    C++virtual void deleteMessage(V2NIMMessage message,
        nstd::optional<nstd::string> serverExtension,
        bool onlyDeleteLocal,
        V2NIMSuccessCallback<void> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 删除的消息对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension nstd::optionalnstd::string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    onlyDeleteLocal bool 是否仅删除本地消息:
  • true:仅删除本地消息,本地数据库会将该消息标记为已删除,不会多端同步。实例存续期间调用 getMessageList 时 SDK 不会返回已删除的消息。
  • false:删除本地消息的同时删除云端消息。删除后不可恢复,会多端同步。如果消息未发送成功,则仅删除本地消息。
  • 默认为 true。
    success V2NIMSuccessCallback 删除消息成功回调
    failure V2NIMFailureCallback 删除消息失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptdeleteMessage(message: V2NIMMessage, serverExtension?: string): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 删除的消息对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    Node.js/Electron
    TypeScriptdeleteMessage(message, serverExtension, onlyDeleteLocal): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 删除的消息对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    onlyDeleteLocal bool 是否仅删除本地消息:
  • true:仅删除本地消息,本地数据库会将该消息标记为已删除,不会多端同步。实例存续期间调用 getMessageList 时 SDK 不会返回已删除的消息。
  • false:删除本地消息的同时删除云端消息。删除后不可恢复,会多端同步。如果消息未发送成功,则仅删除本地消息。
  • 默认为 true。
    HarmonyOS
    TypeScriptdeleteMessage(message: V2NIMMessage, serverExtension?: string, onlyDeleteLocal?: boolean): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 删除的消息对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    onlyDeleteLocal boolean 是否仅删除本地消息:
  • true:仅删除本地消息,本地数据库会将该消息标记为已删除,不会多端同步。实例存续期间调用 getMessageList 时 SDK 不会返回已删除的消息。
  • false:删除本地消息的同时删除云端消息。删除后不可恢复,会多端同步。如果消息未发送成功,则仅删除本地消息。
  • 默认为 true。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    //    V2NIMMessage deleteMessage = ; // 被删除的消息
    
    v2MessageService.deleteMessage(deleteMessage, "xxx", false,
            new V2NIMSuccessCallback<Void>() {
                @Override
                public void onSuccess(Void unused) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] deleteMessage:message
                                          serverExtension:@"json String"
                                          onlyDeleteLocal:YES
                                                  success:^{
    }
                                                  failure:^(V2NIMError * _Nonnull error) {
        //error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMMessage message;
    // ...
    messageService.deleteMessage(
        message,
        "serverExtension",
        false,
        []() {
            // delete message succeeded
        },
        [](V2NIMError error) {
            // delete message failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      await nim.V2NIMMessageService.deleteMessage(message, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      await v2.messageService.deleteMessage(message, 'serverExtension', true)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      await nim.messageService.deleteMessage(message, 'serverExtension', true)
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。删除成功,返回 onMessageDeletedNotifications 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/HarmonyOS

    删除成功,返回 onMessageDeletedNotifications 回调。

    Node.js/Electron

    删除成功,返回 messageDeletedNotifications 回调。

    deleteMessages

    接口描述

    批量删除会话内消息。

    本地端或多端同步的删除每一条消息成功后,SDK 均会返回消息删除通知回调 onMessageDeletedNotifications,并同步数据库和缓存。

    参数说明

    Android
    Javavoid deleteMessages(List<V2NIMMessage> messages, String serverExtension, boolean onlyDeleteLocal, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    messages List<V2NIMMessage> 删除的消息列表。
  • 不能为空,否则返回 191004 参数错误。
  • 删除的所有消息必须属于同一个会话。
  • 每次删除不可超过 50 条消息,否则返回 191004 参数错误。
  • serverExtension String 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    onlyDeleteLocal Boolean 是否仅删除本地消息:
  • true:仅删除本地消息,本地数据库会将该消息标记为已删除,不会多端同步。实例存续期间调用 getMessageList 时 SDK 不会返回已删除的消息。
  • false:删除本地消息的同时删除云端消息。删除后不可恢复,会多端同步。如果消息未发送成功,则仅删除本地消息。
  • 默认为 true。
    success V2NIMSuccessCallback 删除消息成功回调
    failure V2NIMFailureCallback 删除消息失败回调,返回 错误码
    iOS
    Objective-C- (void)deleteMessages:(NSArray<V2NIMMessage *> *)messages
           serverExtension:(NSString *)serverExtension
           onlyDeleteLocal:(BOOL)onlyDeleteLocal
                   success:(nullable V2NIMSuccessCallback)success
                   failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    messages NSArray<V2NIMMessage *> * 删除的消息列表。
  • 不能为空,否则返回 191004 参数错误。
  • 删除的所有消息必须属于同一个会话。
  • 每次删除不可超过 50 条消息,否则返回 191004 参数错误。
  • serverExtension NSString * 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    onlyDeleteLocal BOOL 是否仅删除本地消息:
  • true:仅删除本地消息,本地数据库会将该消息标记为已删除,不会多端同步。实例存续期间调用 getMessageList 时 SDK 不会返回已删除的消息。
  • false:删除本地消息的同时删除云端消息。删除后不可恢复,会多端同步。如果消息未发送成功,则仅删除本地消息。
  • 默认为 true。
    success V2NIMSuccessCallback 删除消息成功回调
    failure V2NIMFailureCallback 删除消息失败回调,返回 错误码
    macOS/Windows
    C++virtual void deleteMessages(nstd::vector<V2NIMMessage> messages,
        nstd::optional<nstd::string> serverExtension,
        bool onlyDeleteLocal,
        V2NIMSuccessCallback<void> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    messages nstd::vector<V2NIMMessage> 删除的消息列表。
  • 不能为空,否则返回 191004 参数错误。
  • 删除的所有消息必须属于同一个会话。
  • 每次删除不可超过 50 条消息,否则返回 191004 参数错误。
  • serverExtension nstd::optionalnstd::string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    onlyDeleteLocal bool 是否仅删除本地消息:
  • true:仅删除本地消息,本地数据库会将该消息标记为已删除,不会多端同步。实例存续期间调用 getMessageList 时 SDK 不会返回已删除的消息。
  • false:删除本地消息的同时删除云端消息。删除后不可恢复,会多端同步。如果消息未发送成功,则仅删除本地消息。
  • 默认为 true。
    success V2NIMSuccessCallback 删除消息成功回调
    failure V2NIMFailureCallback 删除消息失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptdeleteMessages(messages: V2NIMMessage[], serverExtension?: string): Promise<void>
    
    参数名称 类型 是否必填 说明
    messages V2NIMMessage[] 删除的消息列表。
  • 不能为空,否则返回 191004 参数错误。
  • 删除的所有消息必须属于同一个会话。
  • 每次删除不可超过 50 条消息,否则返回 191004 参数错误。
  • serverExtension string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    Node.js/Electron
    TypeScriptdeleteMessages(messages, serverExtension, onlyDeleteLocal): Promise<void>
    
    参数名称 类型 是否必填 说明
    messages V2NIMMessage[] 删除的消息列表。
  • 不能为空,否则返回 191004 参数错误。
  • 删除的所有消息必须属于同一个会话。
  • 每次删除不可超过 50 条消息,否则返回 191004 参数错误。
  • serverExtension string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    onlyDeleteLocal bool 是否仅删除本地消息:
  • true:仅删除本地消息,本地数据库会将该消息标记为已删除,不会多端同步。实例存续期间调用 getMessageList 时 SDK 不会返回已删除的消息。
  • false:删除本地消息的同时删除云端消息。删除后不可恢复,会多端同步。如果消息未发送成功,则仅删除本地消息。
  • 默认为 true。
    HarmonyOS
    TypeScriptdeleteMessages(messages: V2NIMMessage[], serverExtension?: string, onlyDeleteLocal?: boolean): Promise<void>
    
    参数名称 类型 是否必填 说明
    messages V2NIMMessage[] 删除的消息列表。
  • 不能为空,否则返回 191004 参数错误。
  • 删除的所有消息必须属于同一个会话。
  • 每次删除不可超过 50 条消息,否则返回 191004 参数错误。
  • serverExtension string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    onlyDeleteLocal boolean 是否仅删除本地消息:
  • true:仅删除本地消息,本地数据库会将该消息标记为已删除,不会多端同步。实例存续期间调用 getMessageList 时 SDK 不会返回已删除的消息。
  • false:删除本地消息的同时删除云端消息。删除后不可恢复,会多端同步。如果消息未发送成功,则仅删除本地消息。
  • 默认为 true。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    //   List<V2NIMMessage> messages = ; // 被删除的消息
    
    v2MessageService.deleteMessages(messages, "xxx", false,
            new V2NIMSuccessCallback<Void>() {
                @Override
                public void onSuccess(Void unused) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] deleteMessages:@[message]
                                          serverExtension:@"json String"
                                          onlyDeleteLocal:YES
                                                  success:^{
    }
                                                  failure:^(V2NIMError * _Nonnull error) {
        //error 包含错误原因
    }];
    
    macOS/Windows
    C++nstd::vector<V2NIMMessage> messages
    // ...
    messageService.deleteMessages(
        messages,
        "serverExtension",
        false,
        []() {
            // delete messages succeeded
        },
        [](V2NIMError error) {
            // delete messages failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      await nim.V2NIMMessageService.deleteMessages(messages, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      await v2.messageService.deleteMessages(messages, 'serverExtension', true)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      await nim.messageService.deleteMessages(messages, 'serverExtension', true)
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。每一条消息删除成功,返回 onMessageDeletedNotifications 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/HarmonyOS

    每一条消息删除成功,返回 onMessageDeletedNotifications 回调。

    Node.js/Electron

    每一条消息删除成功,返回 messageDeletedNotifications 回调。

    clearHistoryMessage

    接口描述

    清空指定会话内的所有消息,支持指定是否同步删除漫游消息以及是否多端同步清空操作。您也可以自由选择清空 本地和云端仅本地 的历史消息。

    该方法仅删除历史消息,不删除会话。

    本地端或多端同步清空会话内历史消息成功后,SDK 会返回会话历史消息清空通知回调 onClearHistoryNotifications,并同步数据库和缓存。

    参数说明

    Android
    Javavoid clearHistoryMessage(V2NIMClearHistoryMessageOption option, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    option V2NIMClearHistoryMessageOption 历史消息清空选项,可指定是否同步删除漫游消息、是否多端同步等参数。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 清空历史消息成功回调
    failure V2NIMFailureCallback 清空历史消息失败回调,返回 错误码
    iOS
    Objective-C- (void)clearHistoryMessage:(V2NIMClearHistoryMessageOption *)option
                        success:(nullable V2NIMSuccessCallback)success
                        failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    option V2NIMClearHistoryMessageOption 历史消息清空选项,可指定是否同步删除漫游消息、是否多端同步等参数。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 清空历史消息成功回调
    failure V2NIMFailureCallback 清空历史消息失败回调,返回 错误码
    macOS/Windows
    C++virtual void clearHistoryMessage(V2NIMClearHistoryMessageOption option, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    option V2NIMClearHistoryMessageOption 历史消息清空选项,可指定是否同步删除漫游消息、是否多端同步等参数。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 清空历史消息成功回调
    failure V2NIMFailureCallback 清空历史消息失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptclearHistoryMessage(option: V2NIMClearHistoryMessageOption): Promise<void>
    
    参数名称 类型 是否必填 说明
    option V2NIMClearHistoryMessageOption 历史消息清空选项,可指定是否同步删除漫游消息、是否多端同步等参数。不能为空,否则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptclearHistoryMessage(option): Promise<void>
    
    参数名称 类型 是否必填 说明
    option V2NIMClearHistoryMessageOption 历史消息清空选项,可指定是否同步删除漫游消息、是否多端同步等参数。不能为空,否则返回 191004 参数错误。
    HarmonyOS
    TypeScriptclearHistoryMessage(option: V2NIMClearHistoryMessageOption): Promise<void>
    
    参数名称 类型 是否必填 说明
    option V2NIMClearHistoryMessageOption 历史消息清空选项,可指定是否同步删除漫游消息、是否多端同步等参数。不能为空,否则返回 191004 参数错误。

    示例代码

    Android
    Java// 构建清空历史消息参数
    String conversationId = "xxxx"; // 会话ID,必填
    boolean deleteRoam = true; // 是否同步删除漫游消息(仅P2P有效)
    boolean onlineSync = true; // 是否多端同步
    String serverExtension = "{\"reason\":\"user_request\",\"timestamp\":" + System.currentTimeMillis() + "}"; // 扩展字段
    V2NIMClearHistoryMode clearMode = V2NIMClearHistoryMode.V2NIM_CLEAR_HISTORY_MODE_ALL; // 清除模式
    
    V2NIMClearHistoryMessageOption option = V2NIMClearHistoryMessageOption.V2NIMClearHistoryMessageOptionBuilder
        .builder(conversationId)
        .withDeleteRoam(deleteRoam)
        .withOnlineSync(onlineSync)
        .withExtension(serverExtension)
        .withClearMode(clearMode)
        .build();
    
    // 调用接口
    NIMClient.getService(V2NIMMessageService.class).clearHistoryMessage(option,
        new V2NIMSuccessCallback<Void>() {
            @Override
            public void onSuccess(Void param) {
                System.out.println("Clear history message success");
            }
        },
        new V2NIMFailureCallback() {
            @Override
            public void onFailure(V2NIMError error) {
                System.out.println("Clear history message failed, code: " + error.getCode() + 
                                 ", message: " + error.getDesc());
            }
        }
    );
    
    iOS
    Objective-CV2NIMClearHistoryMessageOption *option = [[V2NIMClearHistoryMessageOption alloc] init];
    option.conversationId = [V2NIMConversationIdUtil p2pConversationId:@"xxx"];
    // TODO: 根据实际情况配置
    // option.deleteRoam =
    // option.onlineSync =
    // option.serverExtension =
    // option.clearMode =
    
    [[NIMSDK sharedSDK].v2MessageService clearHistoryMessage:option success:^{
        // 清除成功
    } failure:^(V2NIMError * _Nonnull error) {
        // 清除失败
    }];
    
    macOS/Windows
    C++V2NIMClearHistoryMessageOption option;
    option.conversationId = V2NIMConversationIdUtil::p2pConversationId("target_account_id");
    messageService.clearHistoryMessage(
        option,
        []() {
            // clear history message succeeded
        },
        [](V2NIMError error) {
            // clear history message failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScriptconst conversationId = nim.V2NIMConversationIdUtil.p2pConversationId("TARGET_ACCOUNT_ID")
    const option = {
        conversationId: conversationId,
        deleteRoam: true,
        onlineSync: true,
        serverExtension: 'ext',
        clearMode: V2NIMConst.V2NIMClearHistoryMode.V2NIM_CLEAR_HISTORY_MODE_ALL
    }
    await nim.V2NIMMessageService.clearHistoryMessage(option)
    
    Node.js/Electron
    TypeScriptawait v2.messageService.clearHistoryMessage(option)
    
    HarmonyOS
    TypeScriptconst option = {
        conversationId: conversationId,
        deleteRoam: true,
        onlineSync: true,
        serverExtension: 'ext',
        clearMode: V2NIMClearHistoryMode.V2NIM_CLEAR_HISTORY_MODE_ALL
    }
    await nim.messageService.clearHistoryMessage(option)
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。清空消息成功,返回 onClearHistoryNotifications 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/HarmonyOS

    清空消息成功,返回 onClearHistoryNotifications 回调。

    Node.js/Electron

    清空消息成功,返回 clearHistoryNotifications 回调。

    updateMessageLocalExtension

    接口描述

    更新消息本地扩展字段。

    • 该方法仅更新本地数据库中的消息,更新不包括已删除、已撤回的消息。
    • Web 端不支持该接口。

    参数说明

    Android
    Javavoid updateMessageLocalExtension(V2NIMMessage message, String localExtension, V2NIMSuccessCallback<V2NIMMessage> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    localExtension String 本地扩展字段,必须为 JSON 格式封装,不会多端同步。
    success V2NIMSuccessCallback 更新成功回调,返回 V2NIMMessage
    failure V2NIMFailureCallback 更新失败回调,返回 错误码
    iOS
    Objective-C- (void)updateMessageLocalExtension:(V2NIMMessage *)message
                         localExtension:(NSString *)localExtension
                                success:(nullable V2NIMUpdateLocalExtensionSuccess)success
                                failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    localExtension NSString * 本地扩展字段,必须为 JSON 格式封装,不会多端同步。
    success V2NIMUpdateLocalExtensionSuccess 更新成功回调,可自定义设置。
    failure V2NIMFailureCallback 更新失败回调,返回 错误码
    macOS/Windows
    C++virtual void updateMessageLocalExtension(V2NIMMessage message,
        nstd::string localExtension,
        V2NIMSuccessCallback<V2NIMMessage> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    localExtension nstd::string 本地扩展字段,必须为 JSON 格式封装,不会多端同步。
    success V2NIMSuccessCallback 更新成功回调,返回 V2NIMMessage
    failure V2NIMFailureCallback 更新失败回调,返回 错误码
    Node.js/Electron
    TypeScriptupdateMessageLocalExtension(message, localExtension): Promise<V2NIMMessage>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    localExtension string 本地扩展字段,必须为 JSON 格式封装,不会多端同步。
    HarmonyOS
    TypeScriptupdateMessageLocalExtension(message: V2NIMMessage, localExtension: string): Promise<V2NIMMessage>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    localExtension string 本地扩展字段,必须为 JSON 格式封装,不会多端同步。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    // V2NIMMessage updateMessage = ; // 被更新的消息
    v2MessageService.updateMessageLocalExtension(updateMessage, "xxx",
            new V2NIMSuccessCallback<V2NIMMessage>() {
                @Override
                public void onSuccess(V2NIMMessage v2NIMMessage) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] updateMessageLocalExtension:message
                                                        localExtension:@"update local ext"
                                                               success:^(V2NIMMessage * _Nonnull result) {
        //result 更新后消息
    }
                                                               failure:^(V2NIMError * _Nonnull error) {
        //error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMMessage message;
    // ...
    messageService.updateMessageLocalExtension(
        message,
        "localExtension",
        [](V2NIMMessage message) {
            // update message local extension succeeded
        },
        [](V2NIMError error) {
            // update message local extension failed, handle error
        });
    
    Node.js/Electron
    TypeScriptconst message = await v2.messageService.updateMessageLocalExtension(message, 'localExtension')
    
    HarmonyOS
    TypeScriptconst result = await nim.messageService.updateMessageLocalExtension(sendMessage, 'extension')
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Node.js/Electron/HarmonyOS

    Promise<V2NIMMessage> 更新的消息对象

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含更新后的 V2NIMMessage
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMUpdateLocalExtensionSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Node.js/Electron/HarmonyOS

    无。

    insertMessageToLocal

    接口描述

    插入一条消息到本地数据库。

    插入消息成功后,本端会收到消息发送状态回调 onSendMessage。该消息不会多端同步,且不计入消息未读数,实例销毁后该消息丢失,且不可恢复。

    本地插入消息后会话变更:

    • 如果本地没有会话,则插入消息后 SDK 自动生成会话,并返回创建成功回调 onConversationCreated
    • 如果本地已有会话,则 SDK 变更会话的最后一条消息为插入的消息。若该消息被删除,则向前回溯上一条消息为会话最后一条消息。

    Web 端不支持该接口。

    参数说明

    Android
    Javavoid insertMessageToLocal(V2NIMMessage message, String conversationId, String senderId, long createTime, V2NIMSuccessCallback<NIMMessage> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 插入的消息对象。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能插入相同的消息,否则返回 191007 资源已存在错误。
  • conversationId String 消息所属的会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • senderId String 消息发送方账号(accountId),如果传空或 null 则默认为当前用户账号。
    createTime long 插入消息的时间戳。默认为 0,表示 SDK 默认使用当前 NTP 时间。
    success V2NIMSuccessCallback 插入消息成功回调,返回 V2NIMMessage
    failure V2NIMFailureCallback 插入消息失败回调,返回 错误码
    iOS
    Objective-C- (void)insertMessageToLocal:(V2NIMMessage *)message
                  conversationId:(NSString *)conversationId
                        senderId:(NSString*)senderId
                      createTime:(NSTimeInterval)createTime
                         success:(nullable V2NIMInertMessagSuccess)success
                         failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 插入的消息对象。如果为空或不存在则返回 191004 参数错误。
  • 不能插入相同的消息,否则返回 191007 资源已存在错误。
  • conversationId NSString * 消息所属的会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • senderId NSTimeInterval 消息发送方账号(accountId),如果传空或 null 则默认为当前用户账号。
    createTime Long 插入消息的时间戳。默认为 0,表示 SDK 默认使用当前 NTP 时间。
    success V2NIMInertMessagSuccess 插入消息成功回调,可自定义设置。
    failure V2NIMFailureCallback 插入消息失败回调,返回 错误码
    macOS/Windows
    C++virtual void insertMessageToLocal(V2NIMMessage message,
        nstd::string conversationId,
        nstd::string senderId,
        uint64_t createTime,
        V2NIMSuccessCallback<V2NIMMessage> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 插入的消息对象。如果为空或不存在则返回 191004 参数错误。
  • 不能插入相同的消息,否则返回 191007 资源已存在错误。
  • conversationId nstd::string 消息所属的会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • senderId nstd::string 消息发送方账号(accountId),如果传空或 null 则默认为当前用户账号。
    createTime uint64_t 插入消息的时间戳。默认为 0,表示 SDK 默认使用当前 NTP 时间。
    success V2NIMSuccessCallback 插入消息成功回调,返回 V2NIMMessage
    failure V2NIMFailureCallback 插入消息失败回调,返回 错误码
    Node.js/Electron
    TypeScriptinsertMessageToLocal(message, conversationId, senderId, createTime): Promise<V2NIMMessage>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 插入的消息对象。如果为空或不存在则返回 191004 参数错误。
  • 不能插入相同的消息,否则返回 191007 资源已存在错误。
  • conversationId string 消息所属的会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • senderId string 消息发送方账号(accountId),如果传空或 null 则默认为当前用户账号。
    createTime number 插入消息的时间戳。默认为 0,表示 SDK 默认使用当前 NTP 时间。
    HarmonyOS
    TypeScriptinsertMessageToLocal(message: V2NIMMessage, conversationId: string, senderId?: string, createTime?: number)
      :Promise<V2NIMMessage>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 插入的消息对象。如果为空或不存在则返回 191004 参数错误。
  • 不能插入相同的消息,否则返回 191007 资源已存在错误。
  • conversationId string 消息所属的会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • senderId string 消息发送方账号(accountId),如果传空或 null 则默认为当前用户账号。
    createTime number 插入消息的时间戳。默认为 0,表示 SDK 默认使用当前 NTP 时间。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    // 构建被插入的消息
    V2NIMMessage v2NIMMessage = V2NIMMessageCreator.createTextMessage("xxx");
    
    V2NIMConversationType conversationType = V2NIMConversationType.V2NIM_CONVERSATION_TYPE_P2P;
    String conversationId = V2NIMConversationIdUtil.conversationId("xxx", conversationType);
    
    v2MessageService.insertMessageToLocal(v2NIMMessage, conversationId, "xxx", 0,
            new V2NIMSuccessCallback<NIMMessage>() {
                @Override
                public void onSuccess(NIMMessage nimMessage) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] insertMessageToLocal:message
                                               conversationId:@"conversaionId"
                                                     senderId:@"senderId"
                                                   createTime:1698809881
                                                      success:^(V2NIMMessage * _Nonnull result) {
        // result 插入消息成功
    } failure:^(V2NIMError * _Nonnull error) {
        // error 包含错误原因
    }];
    
    macOS/Windows
    C++auto conversationId = V2NIMConversationIdUtil::p2pConversationId("target_account_id");
    auto message = V2NIMMessageCreator::createTextMessage("hello world");
    messageService.insertMessageToLocal(
        message,
        conversationId,
        "target_account_id",
        0,
        [](V2NIMMessage message) {
            // Insert local message succeeded
        },
        [](V2NIMError error) {
            // Insert local message failed, handle error
    });
    
    Node.js/Electron
    TypeScriptconst message = await v2.messageService.insertMessageToLocal(message, conversationId, senderId, createTime)
    
    HarmonyOS
    TypeScriptconst messageResult:V2NIMMessage = await nim.messageService.insertMessageToLocal(message, conversationId)
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Node.js/Electron/HarmonyOS

    Promise<V2NIMMessage> 插入的消息对象

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含插入的 V2NIMMessage
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMInertMessagSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Node.js/Electron/HarmonyOS

    无。

    updateLocalMessage

    接口描述

    更新本地插入的消息。

    • 该方法仅更新本地插入的消息,如需要更新云端消息,请调用 modifyMessage 方法。
    • Web 端不支持该接口。

    参数说明

    Android
    Javavoid updateLocalMessage(V2NIMMessage message, V2NIMUpdateLocalMessageParams params,V2NIMSuccessCallback<V2NIMMessage> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    params V2NIMUpdateLocalMessageParams 需要更新的数据字段。
    success V2NIMSuccessCallback 更新成功回调,返回更新后的 V2NIMMessage
    failure V2NIMFailureCallback 更新失败回调,返回 错误码
    iOS
    Objective-C- (void)updateLocalMessage:(V2NIMMessage *)message
                        params:(V2NIMUpdateLocalMessageParams *)params
                       success:(nullable V2NIMUpdateLocalMessageSuccess)success
                       failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    params V2NIMUpdateLocalMessageParams 需要更新的数据字段。
    success V2NIMUpdateLocalMessageSuccess 更新成功回调,可自定义设置。
    failure V2NIMFailureCallback 更新失败回调,返回 错误码
    macOS/Windows
    C++virtual void updateLocalMessage(const V2NIMMessage& message,
        const V2NIMUpdateLocalMessageParams& params,
        const V2NIMSuccessCallback<const V2NIMMessage&>& success,
        const V2NIMFailureCallback& failure) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    params V2NIMUpdateLocalMessageParams 需要更新的数据字段。
    success V2NIMSuccessCallback 更新成功回调,返回更新后的 V2NIMMessage
    failure V2NIMFailureCallback 更新失败回调,返回 错误码
    Node.js/Electron
    TypeScriptupdateLocalMessage(message: V2NIMMessage, params: V2NIMUpdateLocalMessageParams): Promise<V2NIMMessage>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    params V2NIMUpdateLocalMessageParams 需要更新的数据字段。
    HarmonyOS
    TypeScriptupdateLocalMessage(message: V2NIMMessage, params: V2NIMUpdateLocalMessageParams): Promise<V2NIMMessage>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要更新的消息对象。如果为空或不存在则返回 191004 参数错误。
    params V2NIMUpdateLocalMessageParams 需要更新的数据字段。

    示例代码

    Android
    Java// 假设已有一个本地消息对象(serverId为0的消息)
    V2NIMMessage localMessage = getLocalMessage(); // 获取本地消息的方法
    
    // 构建更新参数
    V2NIMUpdateLocalMessageParams params = V2NIMUpdateLocalMessageParams.V2NIMUpdateLocalMessageParamsBuilder
        .builder()
        .withText("更新后的消息内容")
        .withSubType(1)
        .withLocalExtension("{\"updated\":true,\"timestamp\":" + System.currentTimeMillis() + "}")
        .withSendingState(V2NIMMessageSendingState.V2NIM_MESSAGE_SENDING_STATE_SUCCEEDED)
        .build();
    
    // 调用接口
    NIMClient.getService(V2NIMMessageService.class).updateLocalMessage(localMessage, params,
        new V2NIMSuccessCallback<V2NIMMessage>() {
            @Override
            public void onSuccess(V2NIMMessage updatedMessage) {
                System.out.println("Update local message success");
                System.out.println("Updated message text: " + updatedMessage.getText());
                System.out.println("Updated message ID: " + updatedMessage.getMessageClientId());
            }
        },
        new V2NIMFailureCallback() {
            @Override
            public void onFailure(V2NIMError error) {
                System.out.println("Update local message failed, code: " + error.getCode() + 
                                 ", message: " + error.getDesc());
            }
        }
    );
    
    macOS/Windows
    C++V2NIMMessage message;
    //...
    V2NIMUpdateLocalMessageParams params;
    params.text = "New text";
    messageService.updateLocalMessage(
        message,
        params,
        [](V2NIMMessage message) {
            // update local message succeeded
        },
        [](V2NIMError error) {
            // update local message failed, handle error
        });
    
    Node.js/Electron
    TypeScriptconst message = await v2.messageService.updateLocalMessage(message, {
        text: 'Hello NTES IM'
    
    HarmonyOS
    TypeScript// prepare a to-be-updated message
    const updatedLocalMessage: V2NIMMessage = await nim.messageService.updateLocalMessage(this.msg, {
      text: 'updated message text',
      subType: 199,
      attachment: {
        raw: 'raw',
      },
      localExtension: 'localExtension',
      sendingState: V2NIMMessageSendingState.V2NIM_MESSAGE_SENDING_STATE_FAILED,
    })
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Node.js/Electron/HarmonyOS

    Promise<V2NIMMessage> 更新后的消息对象

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含更新后的 V2NIMMessage
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMUpdateLocalMessageSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Node.js/Electron/HarmonyOS

    无。

    cancelMessageAttachmentUpload

    接口描述

    取消上传消息附件。

    • 该方法仅支持取消文件类消息(图片、视频、文件)的附件上传。
    • 无法取消已经上传成功的附件。
    • 如果取消上传成功,消息附件上传状态会转变为上传失败 V2NIM_MESSAGE_ATTACHMENT_UPLOAD_STATE_FAILED,对应的文件类消息会发送失败。

    参数说明

    Android
    Javavoid cancelMessageAttachmentUpload(V2NIMMessage message, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 取消附件上传的消息对象。该消息必须为图片、视频、文件类型。
    success V2NIMSuccessCallback 取消成功回调
    failure V2NIMFailureCallback 取消失败回调,返回 错误码
    iOS
    Objective-C- (void)cancelMessageAttachmentUpload:(V2NIMMessage *)message
                                  success:(nullable V2NIMSuccessCallback)success
                                  failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 取消附件上传的消息对象。该消息必须为图片、视频、文件类型。
    success V2NIMSuccessCallback 取消成功回调
    failure V2NIMFailureCallback 取消失败回调,返回 错误码
    macOS/Windows
    C++virtual void cancelMessageAttachmentUpload(V2NIMMessage message, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 取消附件上传的消息对象。该消息必须为图片、视频、文件类型。
    success V2NIMSuccessCallback 取消成功回调
    failure V2NIMFailureCallback 取消失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptcancelMessageAttachmentUpload(message: V2NIMMessage): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 取消附件上传的消息对象。该消息必须为图片、视频、文件类型。
    Node.js/Electron
    TypeScriptcancelMessageAttachmentUpload(message): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 取消附件上传的消息对象。该消息必须为图片、视频、文件类型。
    HarmonyOS
    TypeScriptcancelMessageAttachmentUpload(message: V2NIMMessage): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 取消附件上传的消息对象。该消息必须为图片、视频、文件类型。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    v2MessageService.cancelMessageAttachmentUpload(message,
            new V2NIMSuccessCallback<Void>() {
                @Override
                public void onSuccess(Void unused) {
                // cancel succeeded
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
                // cancel failed, handle error
                }
            });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] cancelMessageAttachmentUpload:message
                                                                 success:^{
        //取消成功
    }
                                                                 failure:^(V2NIMError * _Nonnull error) {
        //error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMMessage message;
    // more code
    messageService.cancelMessageAttachmentUpload(
        message,
        []() {
            // cancel message attachment upload succeeded
        },
        [](V2NIMError error) {
            // cancel message attachment upload failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      await nim.V2NIMMessageService.cancelMessageAttachmentUpload(message)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      await v2.messageService.cancelMessageAttachmentUpload(message)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      await nim.messageService.cancelMessageAttachmentUpload(message)
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    replyMessage

    接口描述

    发送一条回复消息。

    发送回复消息前,请至网易云信控制台 开通会话消息回复功能,并调用 V2NIMMessageCreator 中的接口创建回复消息。

    参数说明

    Android
    Javavoid replyMessage(V2NIMMessage message,
                      V2NIMMessage replyMessage,
                      V2NIMSendMessageParams params,
                      V2NIMSuccessCallback<V2NIMSendMessageResult> success,
                      V2NIMFailureCallback failure,
                      V2NIMProgressCallback progress);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 发送的消息对象,通过调用 V2NIMMessageCreator 中的接口创建。如果为空或不存在则返回 191004 参数错误。
    replyMessage V2NIMMessage 被回复的消息对象,如果为空或不存在则返回 191004 参数错误。
    params V2NIMSendMessageParams 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。
    success V2NIMSuccessCallback 消息发送成功回调,返回 V2NIMSendMessageResult
    failure V2NIMFailureCallback 消息发送失败回调,返回 错误码
    progress V2NIMProgressCallback 附件上传进度回调,用于图片、语音、视频、文件类型消息。
    iOS
    Objective-C- (void)replyMessage:(V2NIMMessage *)message
            replyMessage:(V2NIMMessage *)replyMessage
                  params:(V2NIMSendMessageParams *)params
                 success:(nullable V2NIMSendMessageSuccess)success
                 failure:(nullable V2NIMFailureCallback)failure
                progress:(nullable V2NIMProgressCallback)progress;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 发送的消息对象,通过调用 V2NIMMessageCreator 中的接口创建。如果为空或不存在则返回 191004 参数错误。
    replyMessage V2NIMMessage 被回复的消息对象,如果为空或不存在则返回 191004 参数错误。
    params V2NIMSendMessageParams 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。
    success V2NIMSendMessageSuccess 消息发送成功回调,可自定义设置。
    failure V2NIMFailureCallback 消息发送失败回调,返回 错误码
    progress V2NIMProgressCallback 附件上传进度回调,用于图片、语音、视频、文件类型消息。
    macOS/Windows
    C++virtual void replyMessage(V2NIMMessage message,
        V2NIMMessage replyMessage,
        V2NIMSendMessageParams params,
        V2NIMSuccessCallback<V2NIMSendMessageResult> success,
        V2NIMFailureCallback failure,
        V2NIMProgressCallback progress) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 发送的消息对象,通过调用 V2NIMMessageCreator 中的接口创建。如果为空或不存在则返回 191004 参数错误。
    replyMessage V2NIMMessage 被回复的消息对象,如果为空或不存在则返回 191004 参数错误。
    params V2NIMSendMessageParams 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。
    success V2NIMSuccessCallback 消息发送成功回调,返回 V2NIMSendMessageResult
    failure V2NIMFailureCallback 消息发送失败回调,返回 错误码
    progress V2NIMProgressCallback 附件上传进度回调,用于图片、语音、视频、文件类型消息。
    Web/uni-app/小程序
    TypeScriptreplyMessage(
      message: V2NIMMessage,
      replyMessage: V2NIMMessage,
      params?: V2NIMSendMessageParams,
      progress?: (percentage: number) => void
    ): Promise<V2NIMSendMessageResult>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 发送的消息对象,通过调用 V2NIMMessageCreator 中的接口创建。如果为空或不存在则返回 191004 参数错误。
    replyMessage V2NIMMessage 被回复的消息对象,如果为空或不存在则返回 191004 参数错误。
    params V2NIMSendMessageParams 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。
    progress number 附件上传进度百分比,用于图片、语音、视频、文件类型消息。
    Node.js/Electron
    TypeScriptreplyMessage(message, replyMessage, params, progressCallback): Promise<V2NIMSendMessageResult>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 发送的消息对象,通过调用 V2NIMMessageCreator 中的接口创建。如果为空或不存在则返回 191004 参数错误。
    replyMessage V2NIMMessage 被回复的消息对象,如果为空或不存在则返回 191004 参数错误。
    params V2NIMSendMessageParams 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。
    progress number 附件上传进度百分比,用于图片、语音、视频、文件类型消息。
    HarmonyOS
    TypeScriptreplyMessage(
     message: V2NIMMessage,
     replyMessage: V2NIMMessage,
     params?: V2NIMSendMessageParams,
     progress?: (percentage: number) => void
    ): Promise<V2NIMSendMessageResult>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 发送的消息对象,通过调用 V2NIMMessageCreator 中的接口创建。如果为空或不存在则返回 191004 参数错误。
    replyMessage V2NIMMessage 被回复的消息对象,如果为空或不存在则返回 191004 参数错误。
    params V2NIMSendMessageParams 消息发送配置参数,包括发送、推送、抄送、反垃圾等配置。
    progress number 附件上传进度百分比,用于图片、语音、视频、文件类型消息。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    V2NIMMessage v2Message = V2NIMMessageCreator.createTextMessage("xxx");
    // V2NIMMessage replyMessage = ; // 被回复的消息
    
    // 根据实际情况配置
    V2NIMMessageAntispamConfig antispamConfig = V2NIMMessageAntispamConfig.V2NIMMessageAntispamConfigBuilder.builder()
    .withAntispamBusinessId()
    .withAntispamCheating()
    .withAntispamCustomMessage()
    .withAntispamEnabled()
    .withAntispamExtension()
    .build();
    
    // 根据实际情况配置
    V2NIMMessageConfig messageConfig = V2NIMMessageConfig.V2NIMMessageConfigBuilder.builder()
    .withLastMessageUpdateEnabled()
    .withHistoryEnabled()
    .withOfflineEnabled()
    .withOnlineSyncEnabled()
    .withReadReceiptEnabled()
    .withRoamingEnabled()
    .withUnreadEnabled()
    .build();
    
    // 根据实际情况配置
    V2NIMMessagePushConfig pushConfig = V2NIMMessagePushConfig.V2NIMMessagePushConfigBuilder.builder()
    .withContent()
    .withForcePush()
    .withForcePushAccountIds()
    .withForcePushContent()
    .withPayload()
    .withPushEnabled()
    .withPushNickEnabled()
    .build();
    
    // 根据实际情况配置
    V2NIMMessageRobotConfig robotConfig = V2NIMMessageRobotConfig.V2NIMMessageRobotConfigBuilder.builder()
    .withAccountId()
    .withCustomContent()
    .withFunction()
    .withTopic()
    .build();
    
    // 根据实际情况配置
    V2NIMMessageRouteConfig routeConfig = V2NIMMessageRouteConfig.V2NIMMessageRouteConfigBuilder.builder()
    .withRouteEnabled()
    .withRouteEnvironment()
    .build();
    
    // 根据实际情况配置
    V2NIMSendMessageParams sendMessageParams = V2NIMSendMessageParams.V2NIMSendMessageParamsBuilder.builder()
    .withAntispamConfig(antispamConfig)
    .withClientAntispamEnabled()
    .withClientAntispamReplace()
    .withMessageConfig(messageConfig)
    .withPushConfig(pushConfig)
    .withRobotConfig(robotConfig)
    .withRouteConfig(routeConfig)
    .build();
    
    v2MessageService.replyMessage(v2Message, replyMessage, sendMessageParams,
        new V2NIMSuccessCallback<V2NIMSendMessageResult>() {
            @Override
            public void onSuccess(V2NIMSendMessageResult v2NIMSendMessageResult) {
                // TODO: 发送成功
            }
        },
        new V2NIMFailureCallback() {
            @Override
            public void onFailure(V2NIMError error) {
                // TODO: 发送失败
            }
        },
        new V2NIMProgressCallback() {
            @Override
            public void onProgress(int progress) {
                // TODO: 发送进度
            }
        });
    
    iOS
    Objective-CV2NIMMessage *replyMessage = [V2NIMMessageCreator createTextMessage:@"reply message"];
    // 消息见参数设置文档
    V2NIMSendMessageParams *params = [[V2NIMSendMessageParams alloc] init];
    
    [[[NIMSDK sharedSDK] v2MessageService] sendMessage:replyMessage
                                        conversationId:@"conversationId"
                                                params:params
                                               success:^(V2NIMSendMessageResult * _Nonull result) {
                                                // 发送成功回调
                                                }
                                               failure:^(V2NIMError * _Nonnull error) {
                                                // 发送失败回调,error 包含错误原因
                                                }
                                              progress:^(NSUInteger progress) {
                                                // 发送进行
    }];
    
    V2NIMMessage *message = [V2NIMMessageCreator createTextMessage:@"message"];
    
    [[[NIMSDK sharedSDK] v2MessageService] replyMessage:message
                                           replyMessage:replyMessage
                                                 params:params
                                                success:^(V2NIMSendMessageResult * _Nonnull result) {
                                                // 发送成功回调
                                                }
                                                failure:^(V2NIMError * _Nonnull error) {
                                                // 发送失败回调,error 包含错误原因
                                                }
                                               progress:^(NSUInteger progress) {
                                              // 发送进行
    }];
    
    macOS/Windows
    C++auto message = V2NIMMessageCreator::createTextMessage("hello world");
    auto params = V2NIMSendMessageParams();
    messageService.replyMessage(
        message,
        replyMessage,
        params,
        [](V2NIMSendMessageResult result) {
            // reply message succeeded
        },
        [](V2NIMError error) {
            // reply message failed, handle error
        },
        [](uint32_t progress) {
            // upload progress
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const message: V2NIMMessage = nim.V2NIMMessageCreator.createTextMessage("reply text")
      const result: V2NIMSendMessageResult = await nim.V2NIMMessageService.replyMessage(message, repliedMessage)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      const replyMessage = v2.messageCreator.createTextMessage('Hello NTES IM')
      const result = await v2.messageService.replyMessage(message, replyMessage, params, progressCallback)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      const message: V2NIMMessage = nim.messageCreator.createTextMessage("reply text")
      const result: V2NIMSendMessageResult = await nim.messageService.replyMessage(message, repliedMessage)
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMSendMessageResult> 消息发送结果

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMSendMessageResult
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMSendMessageSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    getMessageListByRefers

    接口描述

    根据消息参考信息批量查询消息列表。获取结果不包含已删除、已撤回的消息。

    SDK 查询策略如下:

    查询引用消息.drawio.png

    当消息数据不明确时,可使用该接口获取消息。推荐回复消息、PIN 消息场景下使用。

    参数说明

    Android
    Javavoid getMessageListByRefers(List<V2NIMMessageRefer> messageRefers, V2NIMSuccessCallback<List<V2NIMMessage>> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    messageRefers List<V2NIMMessageRefer> 消息参考信息对象。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 查询成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    iOS
    Objective-C- (void)getMessageListByRefers:(NSArray<V2NIMMessageRefer *> *)messageRefers
                           success:(nullable V2NIMGetMessageListSuccess)success
                           failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    messageRefers NSArray<V2NIMMessageRefer *> * 消息参考信息对象。不能为空,否则返回 191004 参数错误。
    success V2NIMGetMessageListSuccess 查询成功回调,可自定义设置。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    macOS/Windows
    C++virtual void getMessageListByRefers(nstd::vector<V2NIMMessageRefer> messageRefers,
        V2NIMSuccessCallback<nstd::vector<V2NIMMessage>> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    messageRefers nstd::vector<V2NIMMessageRefer> 消息参考信息对象。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 查询成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptgetMessageListByRefers(messageRefers: V2NIMMessageRefer[]): Promise<V2NIMMessage[]>
    
    参数名称 类型 是否必填 说明
    messageRefers V2NIMMessageRefer[] 消息参考信息对象。不能为空,否则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptgetMessageListByRefers(messageRefers): Promise<V2NIMMessage[]>
    
    参数名称 类型 是否必填 说明
    messageRefers V2NIMMessageRefer[] 消息参考信息对象。不能为空,否则返回 191004 参数错误。
    HarmonyOS
    TypeScriptgetMessageListByRefers(messageRefers: V2NIMMessageRefer[]): Promise<V2NIMMessage[]>
    
    参数名称 类型 是否必填 说明
    messageRefers V2NIMMessageRefer[] 消息参考信息对象。不能为空,否则返回 191004 参数错误。

    示例代码

    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    List<V2NIMMessageRefer> messageRefers = new ArrayList<>();
    // 根据实际情况增加
    // messageRefers.add(messageRefer);
    v2MessageService.getMessageListByRefers(messageRefers,
            new V2NIMSuccessCallback<List<V2NIMMessage>>() {
                @Override
                public void onSuccess(List<V2NIMMessage> v2NIMMessages) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            });
    

    :::

    iOS
    Objective-CV2NIMMessageRefer *refer1 = [[V2NIMMessageRefer alloc] init];
    V2NIMMessageRefer *refer2 = [[V2NIMMessageRefer alloc] init];
    V2NIMMessageRefer *refern = [[V2NIMMessageRefer alloc] init];
    NSArray *refers = @[refer1, refer2, refern];
    [[[NIMSDK sharedSDK] v2MessageService] getMessageListByRefers:refers
                                                          success:^(NSArray<V2NIMMessage *> * _Nonnull result) {
        // result 返回消息数组
    }
                                                          failure:^(V2NIMError * _Nonnull error) {
        // error 包含错误原因
    }];
    
    macOS/Windows
    C++nstd::vector<V2NIMMessageRefer> messageRefers;
    // ...
    messageService.getMessageListByRefers(
        messageRefers,
        [](nstd::vector<V2NIMMessage> messages) {
            for (auto&& message : messages) {
                // do something
            }
        },
        [](V2NIMError error) {
            // get message list by refers failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const res: V2NIMMessage[] = await nim.V2NIMMessageService.getMessageListByRefers(
          [{
             senderId: 'me',
             receiverId: 'another',
             messageClientId: 'messageClientId',
             messageServerId: 'messageServerId',
             conversationType: 1,
             conversationId: 'me|1|another',
             createTime: 232312
          }]
      )
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      const messages = await v2.messageService.getMessageListByRefers(messageRefers)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      const res: V2NIMMessage[] = await nim.messageService.getMessageListByRefers(
          [{
             senderId: 'me',
             receiverId: 'another',
             messageClientId: 'messageClientId',
             messageServerId: 'messageServerId',
             conversationType: 1,
             conversationId: 'me|1|another',
             createTime: 232312
          }]
      )
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMMessage> Thread 父消息和根消息列表

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMMessage
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMGetMessageListSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    pinMessage

    接口描述

    PIN 一条消息。

    本地端或多端同步 PIN 消息成功后,消息发送方和消息接收方均会收到 PIN 消息状态变化通知回调 onMessagePinNotification,并同步数据库和缓存。

    • 调用 PIN 消息接口前,请至网易云信控制台 开通会话消息标记功能
    • 仅支持 Pin 已发送成功的消息,一个会话最多支持 Pin 100 条消息。

    参数说明

    Android
    Javavoid pinMessage(V2NIMMessage message, String serverExtension, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被 PIN 的消息对象。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能重复 Pin 相同的消息,否则返回 191007 资源已存在错误。
  • serverExtension String 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    success V2NIMSuccessCallback PIN 成功回调
    failure V2NIMFailureCallback PIN 失败回调,返回 错误码
    iOS
    Objective-C- (void)pinMessage:(V2NIMMessage *)message
       serverExtension:(NSString *)serverExtension
               success:(nullable V2NIMSuccessCallback)success
               failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage * 被 PIN 的消息对象。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能重复 Pin 相同的消息,否则返回 191007 资源已存在错误。
  • serverExtension NSString * 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    success V2NIMSuccessCallback PIN 成功回调
    failure V2NIMFailureCallback PIN 失败回调,返回 错误码
    macOS/Windows
    C++virtual void pinMessage(V2NIMMessage message,
        nstd::optional<nstd::string> serverExtension,
        V2NIMSuccessCallback<void> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被 PIN 的消息对象。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能重复 Pin 相同的消息,否则返回 191007 资源已存在错误。
  • serverExtension nstd::optionalnstd::string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    success V2NIMSuccessCallback PIN 成功回调
    failure V2NIMFailureCallback PIN 失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptpinMessage(message: V2NIMMessage, serverExtension?: string): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被 PIN 的消息对象。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能重复 Pin 相同的消息,否则返回 191007 资源已存在错误。
  • serverExtension string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    Node.js/Electron
    TypeScriptpinMessage(message, serverExtension): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被 PIN 的消息对象。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能重复 Pin 相同的消息,否则返回 191007 资源已存在错误。
  • serverExtension string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    HarmonyOS
    TypeScriptpinMessage(message: V2NIMMessage, serverExtension?: string): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被 PIN 的消息对象。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能重复 Pin 相同的消息,否则返回 191007 资源已存在错误。
  • serverExtension string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    // V2NIMMessage pinMessage = ; // 被 pin 的消息
    v2MessageService.pinMessage(pinMessage, "xxx",
            new V2NIMSuccessCallback<Void>() {
                @Override
                public void onSuccess(Void unused) {
                // success
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
                // failed, handle error
                }
            });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] pinMessage:message
                                      serverExtension:@"json string"
                                              success:^{
    
    }
                                              failure:^(V2NIMError * _Nonnull error) {
        // error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMMessage message;
    // ...
    messageService.pinMessage(
        message,
        "serverExtension",
        []() {
            // pin message succeeded
        },
        [](V2NIMError error) {
            // pin message failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      await nim.V2NIMMessageService.pinMessage(message, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      await v2.messageService.pinMessage(message, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      await nim.messageService.pinMessage(message, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。PIN 成功,返回 onMessagePinNotification 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/HarmonyOS

    PIN 成功,返回 onMessagePinNotification 回调。

    Node.js/Electron

    PIN 成功,返回 messagePinNotification 回调。

    unpinMessage

    接口描述

    取消一条 PIN 消息。

    本地端或多端同步取消 PIN 消息成功后,消息发送方和消息接收方均会收到 PIN 消息状态变化通知回调 onMessagePinNotification,并同步数据库和缓存。

    参数说明

    Android
    Javavoid unpinMessage(V2NIMMessageRefer messageRefer, String serverExtension, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer 被取消 PIN 的消息参考信息。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能重复取消 PIN 相同的消息,否则返回 191006 资源不存在错误。
  • serverExtension String 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    success V2NIMSuccessCallback 取消 PIN 成功回调
    failure V2NIMFailureCallback 取消 PIN 失败回调,返回 错误码
    iOS
    Objective-C- (void)unpinMessage:(V2NIMMessageRefer *)messageRefer
         serverExtension:(NSString *)serverExtension
                 success:(nullable V2NIMSuccessCallback)success
                 failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer 被取消 PIN 的消息参考信息。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能重复取消 PIN 相同的消息,否则返回 191006 资源不存在错误。
  • serverExtension NSString * 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    success V2NIMSuccessCallback 取消 PIN 成功回调
    failure V2NIMFailureCallback 取消 PIN 失败回调,返回 错误码
    macOS/Windows
    C++virtual void unpinMessage(V2NIMMessageRefer messageRefer,
        nstd::optional<nstd::string> serverExtension,
        V2NIMSuccessCallback<void> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer 被取消 PIN 的消息参考信息。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能重复取消 PIN 相同的消息,否则返回 191006 资源不存在错误。
  • serverExtension nstd::optionalnstd::string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    success V2NIMSuccessCallback 取消 PIN 成功回调
    failure V2NIMFailureCallback 取消 PIN 失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptunpinMessage(messageRefer: V2NIMMessageRefer, serverExtension?: string): Promise<void>
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer 被取消 PIN 的消息参考信息。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能重复取消 PIN 相同的消息,否则返回 191006 资源不存在错误。
  • serverExtension string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    Node.js/Electron
    TypeScriptunpinMessage(messageRefer, serverExtension): Promise<void>
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer 被取消 PIN 的消息参考信息。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能重复取消 PIN 相同的消息,否则返回 191006 资源不存在错误。
  • serverExtension string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    HarmonyOS
    TypeScriptunpinMessage(messageRefer: V2NIMMessageRefer, serverExtension?: string): Promise<void>
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer 被取消 PIN 的消息参考信息。
  • 如果为空或不存在则返回 191004 参数错误。
  • 不能重复取消 PIN 相同的消息,否则返回 191006 资源不存在错误。
  • serverExtension string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    // V2NIMMessageRefer unpinMessageRefer // 被 unpin 的消息引用
    v2MessageService.unpinMessage(unpinMessageRefer, "xxx",
            new V2NIMSuccessCallback<Void>() {
                @Override
                public void onSuccess(Void unused) {
                // success
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
                // failed, handle error
                }
            });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] unpinMessage:message
                                            serverExtension:@"json string"
                                                    success:^{
    
        }
                                                    failure:^(V2NIMError * _Nonnull error) {
            //error 包含错误原因
        }];
    
    macOS/Windows
    C++V2NIMMessageRefer messageRefer;
    // ...
    messageService.unpinMessage(
        messageRefer,
        "serverExtension",
        []() {
            // unpin message succeeded
        },
        [](V2NIMError error) {
            // unpin message failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      await nim.V2NIMMessageService.unpinMessage(messageRefer, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      await v2.messageService.unpinMessage(messageRefer, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      await nim.messageService.unpinMessage(messageRefer, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。取消 PIN 成功,返回 onMessagePinNotification 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/HarmonyOS

    取消 PIN 成功,返回 onMessagePinNotification 回调。

    Node.js/Electron

    取消 PIN 成功,返回 messagePinNotification 回调。

    updatePinMessage

    接口描述

    更新指定 PIN 消息的服务端扩展字段。

    本地端或多端同步更新 PIN 消息成功后,消息发送方和消息接收方均会收到 PIN 消息状态变化通知回调 onMessagePinNotification,并同步数据库和缓存。

    如果更新 PIN 消息的操作人非当前登录账号,则 V2NIMMessagePin.operatorId 变更为更新 PIN 消息的实际操作人。

    参数说明

    Android
    Javavoid updatePinMessage(V2NIMMessage message, String serverExtension, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被 PIN 的消息对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension String PIN 消息的服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    success V2NIMSuccessCallback 更新成功回调
    failure V2NIMFailureCallback 更新失败回调,返回 错误码
    iOS
    Objective-C- (void)updatePinMessage:(V2NIMMessage *)message
             serverExtension:(NSString *)serverExtension
                     success:(nullable V2NIMSuccessCallback)success
                     failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage * 被 PIN 的消息对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension NSString * PIN 消息的服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    success V2NIMSuccessCallback 更新成功回调
    failure V2NIMFailureCallback 更新失败回调,返回 错误码
    macOS/Windows
    C++virtual void updatePinMessage(V2NIMMessage message,
        nstd::optional<nstd::string> serverExtension,
        V2NIMSuccessCallback<void> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被 PIN 的消息对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension nstd::optionalnstd::string PIN 消息的服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    success V2NIMSuccessCallback 更新成功回调
    failure V2NIMFailureCallback 更新失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptupdatePinMessage(message: V2NIMMessage, serverExtension?: string): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被 PIN 的消息对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension string PIN 消息的服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    Node.js/Electron
    TypeScriptupdatePinMessage(message, serverExtension): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被 PIN 的消息对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension string PIN 消息的服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。
    HarmonyOS
    TypeScriptupdatePinMessage(message: V2NIMMessage, serverExtension?: string): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被 PIN 的消息对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension string PIN 消息的服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    // V2NIMMessage updateMessage = ; // 被更新的消息
    v2MessageService.updatePinMessage(updateMessage, "xxx",
        new V2NIMSuccessCallback<Void>() {
            @Override
            public void onSuccess(Void unused) {
    
            }
        },
        new V2NIMFailureCallback() {
            @Override
            public void onFailure(V2NIMError error) {
    
            }
        });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] updatePinMessage:message
                                            serverExtension:@"json string"
                                                    success:^{
    
    }
                                                    failure:^(V2NIMError * _Nonnull error) {
        //error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMMessage message;
    // ...
    messageService.updatePinMessage(
        message,
        "serverExtension",
        []() {
            // update pin message succeeded
        },
        [](V2NIMError error) {
            // update pin message failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      await nim.V2NIMMessageService.updatePinMessage(message, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      await v2.messageService.updatePinMessage(message, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      await nim.messageService.updatePinMessage(message, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。更新 PIN 消息成功,返回 onMessagePinNotification 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/HarmonyOS

    更新 PIN 消息成功,返回 onMessagePinNotification 回调。

    Node.js/Electron

    更新 PIN 消息成功,返回 messagePinNotification 回调。

    getPinnedMessageList

    接口描述

    获取会话内所有 PIN 消息。获取结果不包含已删除、已撤回的消息,结果按照更新时间排序。

    参数说明

    Android
    Javavoid getPinnedMessageList(String conversationId, V2NIMSuccessCallback<List<V2NIMMessagePin>> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    conversationId String 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • success V2NIMSuccessCallback 获取成功回调,返回按照更新时间排序的 V2NIMMessagePin 列表。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    iOS
    Objective-C- (void)getPinnedMessageList:(NSString *)conversationId
                         success:(nullable V2NIMGetPinListSuccess)success
                         failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    conversationId NSString * 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • success V2NIMGetPinListSuccess 获取成功回调,可自定义设置。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    macOS/Windows
    C++virtual void getPinnedMessageList(nstd::string conversationId,
        V2NIMSuccessCallback<nstd::vector<V2NIMMessagePin>> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    conversationId nstd::string 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • success V2NIMSuccessCallback 获取成功回调,返回按照更新时间排序的 V2NIMMessagePin 列表。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptgetPinnedMessageList(conversationId: string): Promise<V2NIMMessagePin[]>
    
    参数名称 类型 是否必填 说明
    conversationId string 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • Node.js/Electron
    TypeScriptgetPinnedMessageList(conversationId): Promise<V2NIMMessagePin[]>
    
    参数名称 类型 是否必填 说明
    conversationId string 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • HarmonyOS
    TypeScriptgetPinnedMessageList(conversationId: string): Promise<V2NIMMessagePin[]>
    
    参数名称 类型 是否必填 说明
    conversationId string 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • 示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    V2NIMConversationType conversationType = V2NIMConversationType.V2NIM_CONVERSATION_TYPE_P2P;
    String conversationId = V2NIMConversationIdUtil.conversationId("xxx", conversationType);
    
    v2MessageService.getPinnedMessageList(conversationId,
            new V2NIMSuccessCallback<List<V2NIMMessagePin>>() {
                @Override
                public void onSuccess(List<V2NIMMessagePin> v2NIMMessagePins) {
                // success
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
                // failed, handle error
                }
            });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] getPinnedMessageList:@"conversationId"
                                                         success:^(NSArray<V2NIMMessagePin *> * _Nonnull result) {
        // V2NIMMessagePin 数组
    }
                                                         failure:^(V2NIMError * _Nonnull error) {
        // error 包含错误原因
    }];
    
    macOS/Windows
    C++auto conversationId = V2NIMConversationIdUtil::p2pConversationId("target_account_id");
    messageService.getPinnedMessageList(
        conversationId,
        [](std::vector<V2NIMMessagePin> pins) {
            for (auto&& pin : pins) {
                // do something
            }
        },
        [](V2NIMError error) {
            // get pin message list failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const messagePinArr = await nim.V2NIMMessageService.getPinnedMessageList('me|1|another')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      const result = await v2.messageService.getPinnedMessageList(conversationId)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      const messagePinArr = await nim.messageService.getPinnedMessageList('me|1|another')
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMMessagePin> 按照更新时间排序的 PIN 消息列表

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含按照更新时间排序的 V2NIMMessagePin 列表。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMGetPinListSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    addQuickComment

    接口描述

    添加一条消息快捷评论。

    本地端或多端同步添加消息快捷评论成功后,消息发送方和消息接收方均会收到消息快捷评论通知回调 onMessageQuickCommentNotification,并同步数据库和缓存。

    您可以多次调用该方法,对同一条消息添加多个快捷评论。

    • 调用添加消息快捷评论接口前,请至网易云信控制台 开通消息快捷评论
    • 仅支持评论已发送成功的消息。

    参数说明

    Android
    Javavoid addQuickComment(V2NIMMessage message, long index, String serverExtension, V2NIMMessageQuickCommentPushConfig pushConfig, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被快捷评论的消息对象。如果为空或不存在则返回 191004 参数错误。
    index long 自定义快捷评论索引,必须大于 0。可在本地自定义映射关系,例如:
  • 表情回复:1:笑脸。2:大笑。UI 层根据 index 展示对应的表情。
  • 文本快捷回复等其他回复场景。
  • serverExtension String 评论服务端扩展字段。必须为 JSON 格式封装,长度上限为 8 字符,多端同步。
    pushConfig V2NIMMessageQuickCommentPushConfig 快捷评论推送配置
    success V2NIMSuccessCallback 评论成功回调
    failure V2NIMFailureCallback 评论失败回调,返回 错误码
    iOS
    Objective-C- (void)addQuickComment:(V2NIMMessage *)message
                      index:(NSInteger)index
            serverExtension:(NSString *)serverExtension
                 pushConfig:(V2NIMMessageQuickCommentPushConfig *)pushConfig
                    success:(V2NIMSuccessCallback)success
                    failure:(V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage * 被快捷评论的消息对象。如果为空或不存在则返回 191004 参数错误。
    index NSInteger 自定义快捷评论索引,必须大于 0。可在本地自定义映射关系,例如:
  • 表情回复:1:笑脸。2:大笑。UI 层根据 index 展示对应的表情。
  • 文本快捷回复等其他回复场景。
  • serverExtension NSString * 评论服务端扩展字段。必须为 JSON 格式封装,长度上限为 8 字符,多端同步。
    pushConfig V2NIMMessageQuickCommentPushConfig 快捷评论推送配置
    success V2NIMSuccessCallback 评论成功回调
    failure V2NIMFailureCallback 评论失败回调,返回 错误码
    macOS/Windows
    C++virtual void addQuickComment(V2NIMMessage message,
        uint64_t index,
        nstd::optional<nstd::string> serverExtension,
        V2NIMMessageQuickCommentPushConfig pushConfig,
        V2NIMSuccessCallback<void> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被快捷评论的消息对象。如果为空或不存在则返回 191004 参数错误。
    index uint64_t 自定义快捷评论索引,必须大于 0。可在本地自定义映射关系,例如:
  • 表情回复:1:笑脸。2:大笑。UI 层根据 index 展示对应的表情。
  • 文本快捷回复等其他回复场景。
  • serverExtension nstd::optionalnstd::string 评论服务端扩展字段。必须为 JSON 格式封装,长度上限为 8 字符,多端同步。
    pushConfig V2NIMMessageQuickCommentPushConfig 快捷评论推送配置
    success V2NIMSuccessCallback 评论成功回调
    failure V2NIMFailureCallback 评论失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptaddQuickComment(message: V2NIMMessage, index: number, serverExtension?: string, pushConfig?: V2NIMMessageQuickCommentPushConfig): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被快捷评论的消息对象。如果为空或不存在则返回 191004 参数错误。
    index number 自定义快捷评论索引,必须大于 0。可在本地自定义映射关系,例如:
  • 表情回复:1:笑脸。2:大笑。UI 层根据 index 展示对应的表情。
  • 文本快捷回复等其他回复场景。
  • serverExtension string 评论服务端扩展字段。必须为 JSON 格式封装,长度上限为 8 字符,多端同步。
    pushConfig V2NIMMessageQuickCommentPushConfig 快捷评论推送配置
    Node.js/Electron
    TypeScriptaddQuickComment(message, index, serverExtension, pushConfig): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被快捷评论的消息对象。如果为空或不存在则返回 191004 参数错误。
    index number 自定义快捷评论索引,必须大于 0。可在本地自定义映射关系,例如:
  • 表情回复:1:笑脸。2:大笑。UI 层根据 index 展示对应的表情。
  • 文本快捷回复等其他回复场景。
  • serverExtension string 评论服务端扩展字段。必须为 JSON 格式封装,长度上限为 8 字符,多端同步。
    pushConfig V2NIMMessageQuickCommentPushConfig 快捷评论推送配置
    HarmonyOS
    TypeScriptaddQuickComment(message: V2NIMMessage, index: number, serverExtension?: string, pushConfig?: V2NIMMessageQuickCommentPushConfig): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 被快捷评论的消息对象。如果为空或不存在则返回 191004 参数错误。
    index number 自定义快捷评论索引,必须大于 0。可在本地自定义映射关系,例如:
  • 表情回复:1:笑脸。2:大笑。UI 层根据 index 展示对应的表情。
  • 文本快捷回复等其他回复场景。
  • serverExtension string 评论服务端扩展字段。必须为 JSON 格式封装,长度上限为 8 字符,多端同步。
    pushConfig V2NIMMessageQuickCommentPushConfig 快捷评论推送配置

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    V2NIMMessageQuickCommentPushConfig quickCommentPushConfig = V2NIMMessageQuickCommentPushConfig.V2NIMMessageQuickCommentPushConfigBuilder.builder()
    // 根据实际情况设置
    .withNeedBadge()
    .withPushContent()
    .withPushEnabled()
    .withPushPayload()
    .withPushTitle()
    .build();
    
    // V2NIMMessage quickCommentMessage = ; // 添加快捷评论的消息
    // int quickCommentIndex = ; // 快捷评论的序号
    
    v2MessageService.addQuickComment(quickCommentMessage, quickCommentIndex, "xxx", quickCommentPushConfig,
            new V2NIMSuccessCallback<Void>() {
                @Override
                public void onSuccess(Void unused) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            });
    
    iOS
    Objective-CV2NIMMessageQuickCommentPushConfig *quickCommentPushConfig = [[V2NIMMessageQuickCommentPushConfig alloc] init];
    [[[NIMSDK sharedSDK] v2MessageService] addQuickComment:message
                                                     index:1
                                           serverExtension:@"serverExtension"
                                               pushConfig:quickCommentPushConfig
                                                   success:^{
        // success
    } failure:^(V2NIMError * _Nonnull error) {
        // error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMMessage message;
    // ...
    V2NIMMessageQuickCommentPushConfig pushConfig;
    messageService.addQuickComment(
        message,
        1,
        "serverExtension",
        pushConfig,
        []() {
            // add quick comment succeeded
        },
        [](V2NIMError error) {
            // add quick comment failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      await nim.V2NIMMessageService.addQuickComment(message, 1, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      await v2.messageService.addQuickComment(message, index, 'serverExtension', pushConfig)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      await nim.messageService.addQuickComment(message, 1, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。评论成功,返回 onMessageQuickCommentNotification 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/HarmonyOS

    评论成功,返回 onMessageQuickCommentNotification 回调。

    Node.js/Electron

    评论成功,返回 messageQuickCommentNotification 回调。

    removeQuickComment

    接口描述

    移除指定消息的快捷评论。

    本地端或多端同步移除快捷评论成功后,消息发送方和消息接收方均会收到消息快捷评论通知回调 onMessageQuickCommentNotification,并同步数据库和缓存。

    参数说明

    Android
    Javavoid removeQuickComment(V2NIMMessageRefer messageRefer, long index, String serverExtension, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer 被快捷评论的消息参考信息。如果为空或不存在则返回 191004 参数错误。
    index long 快捷评论索引,必须大于 0。
    serverExtension String 服务端扩展字段。长度上限为 8 字符,多端同步。
    success V2NIMSuccessCallback 移除评论成功回调
    failure V2NIMFailureCallback 移除评论失败回调,返回 错误码
    iOS
    Objective-C- (void)removeQuickComment:(V2NIMMessageRefer *)messageRefer
                         index:(NSInteger)index
               serverExtension:(NSString *)serverExtension
                       success:(V2NIMSuccessCallback)success
                       failure:(V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer * 被快捷评论的消息参考信息。如果为空或不存在则返回 191004 参数错误。
    index NSInteger 快捷评论索引,必须大于 0。
    serverExtension NSString * 服务端扩展字段。长度上限为 8 字符,多端同步。
    success V2NIMSuccessCallback 移除评论成功回调
    failure V2NIMFailureCallback 移除评论失败回调,返回 错误码
    macOS/Windows
    C++virtual void removeQuickComment(V2NIMMessageRefer messageRefer,
        uint32_t index,
        nstd::optional<nstd::string> serverExtension,
        V2NIMSuccessCallback<void> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer 被快捷评论的消息参考信息。如果为空或不存在则返回 191004 参数错误。
    index uint32_t 快捷评论索引,必须大于 0。
    serverExtension nstd::optionalnstd::string 服务端扩展字段。长度上限为 8 字符,多端同步。
    success V2NIMSuccessCallback 移除评论成功回调
    failure V2NIMFailureCallback 移除评论失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptremoveQuickComment(messageRefer: V2NIMMessageRefer, index: number, serverExtension?: string): Promise<void>
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer 被快捷评论的消息参考信息。如果为空或不存在则返回 191004 参数错误。
    index number 快捷评论索引,必须大于 0。
    serverExtension string 服务端扩展字段。长度上限为 8 字符,多端同步。
    Node.js/Electron
    TypeScriptremoveQuickComment(messageRefer, index, serverExtension): Promise<void>
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer 被快捷评论的消息参考信息。如果为空或不存在则返回 191004 参数错误。
    index number 快捷评论索引,必须大于 0。
    serverExtension string 服务端扩展字段。长度上限为 8 字符,多端同步。
    HarmonyOS
    TypeScriptremoveQuickComment(messageRefer: V2NIMMessageRefer, index: number, serverExtension?: string): Promise<void>
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer 被快捷评论的消息参考信息。如果为空或不存在则返回 191004 参数错误。
    index number 快捷评论索引,必须大于 0。
    serverExtension string 服务端扩展字段。长度上限为 8 字符,多端同步。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    // V2NIMMessageRefer quickCommentMessageRefer // 移除快捷评论的消息引用
    // int quickCommentIndex // 快捷评论的序号
    
    v2MessageService.removeQuickComment(quickCommentMessageRefer, quickCommentIndex, "xxx",
            new V2NIMSuccessCallback<Void>() {
                @Override
                public void onSuccess(Void unused) {
                // success
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
                // failed, handle error
                }
            });
    
    iOS
    Objective-CV2NIMMessageRefer *refer = [[V2NIMMessageRefer alloc] init];
    [[[NIMSDK sharedSDK] v2MessageService] removeQuickComment:refer index:1 serverExtension:@"serverExtension" success:^{
    
    } failure:^(V2NIMError * _Nonnull error) {
        // error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMMessageRefer messageRefer;
    // ...
    messageService.removeQuickComment(
        messageRefer,
        1,
        "serverExtension",
        []() {
            // remove quick comment succeeded
        },
        [](V2NIMError error) {
            // remove quick comment failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      await nim.V2NIMMessageService.removeQuickComment(messageRefer, 1, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      await v2.messageService.removeQuickComment(messageRefer, index, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      await nim.messageService.removeQuickComment(messageRefer, 1, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。移除成功,返回 onMessageQuickCommentNotification 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/HarmonyOS

    移除成功,返回 onMessageQuickCommentNotification 回调。

    Node.js/Electron

    移除成功,返回 messageQuickCommentNotification 回调。

    getQuickCommentList

    接口描述

    获取指定消息的所有快捷评论。获取结果不包含已删除消息的快捷评论,按照评论时间排序。

    参数说明

    Android
    Javavoid getQuickCommentList(List<V2NIMMessage> messages, V2NIMSuccessCallback<Map<String, List<V2NIMMessageQuickComment>>> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    messages List<V2NIMMessage> 被快捷评论的消息列表。如果为空或不存在则返回 191004 参数错误。
    success V2NIMSuccessCallback 获取成功回调,返回按照评论时间排序的 V2NIMMessageQuickComment 列表。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    iOS
    Objective-C- (void)getQuickCommentList:(NSArray <V2NIMMessage *> *)messages
                        success:(V2NIMGetQuickCommentListSuccess)success
                        failure:(V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    messages NSArray <V2NIMMessage *> * 被快捷评论的消息列表。如果为空或不存在则返回 191004 参数错误。
    success V2NIMGetQuickCommentListSuccess 获取成功回调,可自定义设置。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    macOS/Windows
    C++virtual void getQuickCommentList(std::vector<V2NIMMessage> messages,
        V2NIMSuccessCallback<std::map<std::string, std::vector<V2NIMMessageQuickComment>>> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    messages std::vector<V2NIMMessage> 被快捷评论的消息列表。如果为空或不存在则返回 191004 参数错误。
    success V2NIMSuccessCallback 获取成功回调,返回按照评论时间排序的 V2NIMMessageQuickComment 列表。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptgetQuickCommentList(messages: V2NIMMessage[]): Promise<{ [messageClientId: string]: V2NIMMessageQuickComment[] }>
    
    参数名称 类型 是否必填 说明
    messages V2NIMMessage[] 被快捷评论的消息对象。如果为空或不存在则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptgetQuickCommentList(messages): Promise<Map<string, V2NIMMessageQuickComment[]>>
    
    参数名称 类型 是否必填 说明
    messages V2NIMMessage[] 被快捷评论的消息对象。如果为空或不存在则返回 191004 参数错误。
    HarmonyOS
    TypeScriptgetQuickCommentList(message: V2NIMMessage[]): Promise<Map<string, V2NIMMessageQuickComment[]>>
    
    参数名称 类型 是否必填 说明
    messages V2NIMMessage[] 被快捷评论的消息对象。如果为空或不存在则返回 191004 参数错误。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    // List<V2NIMMessage> messages // 需要查询快捷评论的消息列表
    
    v2MessageService.getQuickCommentList(messages,
            new V2NIMSuccessCallback<Map<String, List<V2NIMMessageQuickComment>>>() {
                @Override
                public void onSuccess(Map<String, List<V2NIMMessageQuickComment>> stringListMap) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] getQuickCommentList:@[message1, message2]
                                                       success:^(NSDictionary<NSString *,NSArray<V2NIMMessageQuickComment *> *> * _Nonnull result) {
        // 返回 Dictionary 被快捷评论的消息
    }
                                                       failure:^(V2NIMError * _Nonnull error) {
        // error 包含错误原因
    }];
    
    macOS/Windows
    C++nstd::vector<V2NIMMessage> messages
    // ...
    messageService.getQuickCommentList(
        messages,
        [](nstd::map<nstd::string, nstd::vector<V2NIMMessageQuickComment>> quiments) {
            for (auto&& quickComment : quickComments) {
                // do something
            }
        },
        [](V2NIMError error) {
            // get quick comment list failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const quickCommentList = await nim.V2NIMMessageService.getQuickCommentList(messages)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      const result = await v2.messageService.getQuickCommentList(messages)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      const quickCommentList = await nim.messageService.getQuickCommentList(messages)
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMMessageQuickComment> 按照评论时间排序的快捷评论列表

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含按照评论时间排序的 V2NIMMessageQuickComment 列表。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMGetQuickCommentListSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    addCollection

    接口描述

    添加一条收藏。支持收藏消息或其他自定义内容。

    如果收藏消息,仅支持收藏已发送成功的消息。

    参数说明

    Android
    Javavoid addCollection(V2NIMAddCollectionParams params, V2NIMSuccessCallback<V2NIMCollection> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    params V2NIMAddCollectionParams 收藏配置参数
    success V2NIMSuccessCallback 收藏成功回调,返回收藏对象 V2NIMCollection
    failure V2NIMFailureCallback 收藏失败回调,返回 错误码
    iOS
    Objective-C- (void)addCollection:(V2NIMAddCollectionParams *)params
                  success:(V2NIMCollectionSuccess)success
                  failure:(V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    params V2NIMAddCollectionParams 收藏配置参数
    success V2NIMCollectionSuccess 收藏成功回调,可自定义设置。
    failure V2NIMFailureCallback 收藏失败回调,返回 错误码
    macOS/Windows
    C++virtual void addCollection(V2NIMAddCollectionParams params, V2NIMSuccessCallback<V2NIMCollection> success, V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    params V2NIMAddCollectionParams 收藏配置参数
    success V2NIMSuccessCallback 收藏成功回调,返回收藏对象 V2NIMCollection
    failure V2NIMFailureCallback 收藏失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptaddCollection(params: V2NIMAddCollectionParams): Promise<V2NIMCollection>
    
    参数名称 类型 是否必填 说明
    params V2NIMAddCollectionParams 收藏配置参数
    Node.js/Electron
    TypeScriptaddCollection(params): Promise<V2NIMCollection>
    
    参数名称 类型 是否必填 说明
    params V2NIMAddCollectionParams 收藏配置参数
    HarmonyOS
    TypeScriptaddCollection(params: V2NIMAddCollectionParams): Promise<V2NIMCollection>
    
    参数名称 类型 是否必填 说明
    params V2NIMAddCollectionParams 收藏配置参数

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    // int collectionType = ;
    // String collectionData = ;
    
    V2NIMAddCollectionParams addCollectionParams = V2NIMAddCollectionParams.V2NIMAddCollectionParamsBuilder
    // 必填
    .builder(collectionType, collectionData)
    // 根据实际情况配置
    .withServerExtension()
    .build();
    
    v2MessageService.addCollection(addCollectionParams,
            new V2NIMSuccessCallback<V2NIMCollection>() {
                @Override
                public void onSuccess(V2NIMCollection v2NIMCollection) {
                // success
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
                // failed, handle error
                }
            });
    
    iOS
    Objective-CV2NIMAddCollectionParams *addCollectionParams = [[V2NIMAddCollectionParams alloc] init];
    [[[NIMSDK sharedSDK] v2MessageService] addCollection:addCollectionParams
                                                 success:^(V2NIMCollection * _Nonnull result) {
        // V2NIMCollection
    }
                                                 failure:^(V2NIMError * _Nonnull error) {
        // error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMAddCollectionParams params;
    params.collectionClientId = "id1";
    params.collectionType = 1;
    params.collectionData = "data";
    params.serverExtension = "serverExtension";
    messageService.addCollection(
        params,
        [](V2NIMCollection collection) {
            // add collection succeeded
        },
        [](V2NIMError error) {
            // add collection failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const res: V2NIMCollection = await nim.V2NIMMessageService.addCollection({
         collectionType: 1,
         collectionData: 'data',
         serverExtension: 'serverExtension'
      })
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      const result = await v2.messageService.addCollection(params)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      const res: V2NIMCollection = await nim.messageService.addCollection({
         collectionType: 1,
         collectionData: 'data',
         serverExtension: 'serverExtension'
      })
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMCollection>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含收藏对象 V2NIMCollection
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    removeCollections

    接口描述

    批量移除收藏列表。

    参数说明

    Android
    Javavoid removeCollections(List<V2NIMCollection> collections, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    collections List<V2NIMCollection> 收藏对象列表。不可为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 移除成功回调
    failure V2NIMFailureCallback 移除失败回调,返回 错误码
    iOS
    Objective-C- (void)removeCollections:(NSArray<V2NIMCollection *> *)collections
                     success:(V2NIMRemoveCollectionSuccess)success
                     failure:(V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    collections NSArray<V2NIMCollection *> * 收藏对象列表。不可为空,否则返回 191004 参数错误。
    success V2NIMRemoveCollectionSuccess 移除成功回调,可自定义设置。
    failure V2NIMFailureCallback 移除失败回调,返回 错误码
    macOS/Windows
    C++virtual void removeCollections(nstd::vector<V2NIMCollection> collections, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    collections nstd::vector<V2NIMCollection> 收藏对象列表。不可为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 移除成功回调
    failure V2NIMFailureCallback 移除失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptremoveCollections(collections: V2NIMCollection[]): Promise<number>
    
    参数名称 类型 是否必填 说明
    collections V2NIMCollection[] 收藏对象列表。不可为空,否则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptremoveCollections(collections): Promise<number>
    
    参数名称 类型 是否必填 说明
    collections V2NIMCollection[] 收藏对象列表。不可为空,否则返回 191004 参数错误。
    HarmonyOS
    TypeScriptremoveCollections(collections: V2NIMCollection[]): Promise<number>
    
    参数名称 类型 是否必填 说明
    collections V2NIMCollection[] 收藏对象列表。不可为空,否则返回 191004 参数错误。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    // List<V2NIMCollection> collections = ; // 需要移除的相关收藏
    v2MessageService.removeCollections(collections,
        new V2NIMSuccessCallback<Void>() {
            @Override
            public void onSuccess(Void unused) {
    
            }
        },
        new V2NIMFailureCallback() {
            @Override
            public void onFailure(V2NIMError error) {
    
            }
        });
    
    iOS
    Objective-CV2NIMCollection *collection = [[V2NIMCollection alloc] init];
    [[[NIMSDK sharedSDK] v2MessageService] removeCollections:@[collection]
                                                     success:^(int count) {
        // count
    }
                                                     failure:^(V2NIMError * _Nonnull error) {
        // error 包含错误原因
    }];
    
    macOS/Windows
    C++nstd::vector<V2NIMCollection> collections;
    // ...
    messageService.removeCollections(
        collections,
        []() {
            // remove collection succeeded
        },
        [](V2NIMError error) {
            // remove collection failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const res: number = await nim.V2NIMMessageService.removeCollections(collections)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      const count = await v2.messageService.removeCollections(collections)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      const res: number = await nim.messageService.removeCollections(collections)
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMRemoveCollectionSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    updateCollectionExtension

    接口描述

    更新指定收藏的服务端扩展字段。

    参数说明

    Android
    Javavoid updateCollectionExtension (V2NIMCollection collection, String serverExtension, V2NIMSuccessCallback<V2NIMCollection> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    collection V2NIMCollection 收藏对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension String 收藏的服务端扩展字段。必须为 JSON 格式封装,如果设置为空则表示取消现有的扩展字段。
    success V2NIMSuccessCallback 更新成功回调,返回更新后的 V2NIMCollection
    failure V2NIMFailureCallback 更新失败回调,返回 错误码
    iOS
    Objective-C- (void)updateCollectionExtension:(V2NIMCollection *)collection
                  serverExtension:(NSString *)serverExtension
                        success:(V2NIMCollectionSuccess)success
                        failure:(V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    collection V2NIMCollection 收藏对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension NSString * 收藏的服务端扩展字段。必须为 JSON 格式封装,如果设置为空则表示取消现有的扩展字段。
    success V2NIMCollectionSuccess 更新成功回调,可自定义设置。
    failure V2NIMFailureCallback 更新失败回调,返回 错误码
    macOS/Windows
    C++virtual void updateCollectionExtension(V2NIMCollection collection,
        nstd::optional<nstd::string> serverExtension,
        V2NIMSuccessCallback<V2NIMCollection> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    collection V2NIMCollection 收藏对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension nstd::optional<\nstd::string> 收藏的服务端扩展字段。必须为 JSON 格式封装,如果设置为空则表示取消现有的扩展字段。
    success V2NIMSuccessCallback 更新成功回调,返回更新后的 V2NIMCollection
    failure V2NIMFailureCallback 更新失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptupdateCollectionExtension(collection: V2NIMCollection, serverExtension?: string): Promise<V2NIMCollection>
    
    参数名称 类型 是否必填 说明
    collection V2NIMCollection 收藏对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension string 收藏的服务端扩展字段。必须为 JSON 格式封装,如果设置为空则表示取消现有的扩展字段。
    Node.js/Electron
    TypeScriptupdateCollectionExtension(collection, serverExtension): Promise<V2NIMCollection>
    
    参数名称 类型 是否必填 说明
    collection V2NIMCollection 收藏对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension string 收藏的服务端扩展字段。必须为 JSON 格式封装,如果设置为空则表示取消现有的扩展字段。
    HarmonyOS
    TypeScriptupdateCollectionExtension(collection: V2NIMCollection, serverExtension?: string): Promise<V2NIMCollection>
    
    参数名称 类型 是否必填 说明
    collection V2NIMCollection 收藏对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension string 收藏的服务端扩展字段。必须为 JSON 格式封装,如果设置为空则表示取消现有的扩展字段。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    //V2NIMCollection collection = ; // 需要更新的收藏信息
    v2MessageService.updateCollectionExtension(collection, "xxx",
    new V2NIMSuccessCallback<V2NIMCollection>() {
        @Override
        public void onSuccess(V2NIMCollection v2NIMCollection) {
        // success
        }
    },
        new V2NIMFailureCallback() {
        @Override
        public void onFailure(V2NIMError error) {
        // failed, handle error
        }
    });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] updateCollectionExtension:collection
                                                   serverExtension:@"serverExtension"
                                                            success:^(V2NIMCollection * _Nonnull result) {
            // result 更新后的 collection
        }
                                                            failure:^(V2NIMError * _Nonnull error) {
            // error 包含错误原因
        }];
    
    macOS/Windows
    C++V2NIMCollection collection
    // ...
    messageService.updateCollectionExtension(
        collection,
        "serverExtension",
        [](V2NIMCollection collection) {
            // update collection succeeded
        },
        [](V2NIMError error) {
            // update collection failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const collection: V2NIMCollection = await nim.V2NIMMessageService.updateCollectionExtension(collection, 'newExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      const result = await v2.messageService.updateCollectionExtension(collection, 'serverExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      const collection: V2NIMCollection = await nim.messageService.updateCollectionExtension(collection, 'newExtension')
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMCollection> 更新后的收藏对象

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含更新后的 V2NIMCollection
    • 请求失败,返回 V2NIMFailureCallback 回调,包含会话相关错误码。
    iOS
    • 请求成功,返回 V2NIMCollectionSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    getCollectionListByOption

    接口描述

    按照查询条件分页获取收藏列表,结果按照收藏时间排序。

    参数说明

    Android
    Javavoid getCollectionListByOption (V2NIMCollectionOption option, V2NIMSuccessCallback<List<V2NIMCollection>> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    option V2NIMCollectionOption 收藏查询选项
    success V2NIMSuccessCallback 获取成功回调,返回按照收藏时间排序的 V2NIMCollection 列表。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    iOS
    Objective-C- (void)getCollectionListByOption:(V2NIMCollectionOption *)option
                              success:(V2NIMGetCollectionListSuccess)success
                              failure:(V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    option V2NIMCollectionOption 收藏查询选项
    success V2NIMGetCollectionListSuccess 获取成功回调,可自定义设置。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    macOS/Windows
    C++virtual void getCollectionListByOption(V2NIMCollectionOption option,
        V2NIMSuccessCallback<nstd::vector<V2NIMCollection>> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    option V2NIMCollectionOption 收藏查询选项
    success V2NIMSuccessCallback 获取成功回调,返回按照收藏时间排序的 V2NIMCollection 列表。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptgetCollectionListByOption(option: V2NIMCollectionOption): Promise<V2NIMCollection[]>
    
    参数名称 类型 是否必填 说明
    option V2NIMCollectionOption 收藏查询选项
    Node.js/Electron
    TypeScriptgetCollectionListByOption(option): Promise<V2NIMCollection[]>
    
    参数名称 类型 是否必填 说明
    option V2NIMCollectionOption 收藏查询选项
    HarmonyOS
    TypeScriptgetCollectionListByOption(option: V2NIMCollectionOption): Promise<V2NIMCollection[]>
    
    参数名称 类型 是否必填 说明
    option V2NIMCollectionOption 收藏查询选项

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    // 根据实际情况配置
    V2NIMCollectionOption option = V2NIMCollectionOption.V2NIMCollectionOptionBuilder.builder()
    .withAnchorCollection()
    .withBeginTime()
    .withCollectionType()
    .withDirection()
    .withEndTime()
    .withLimit()
    .build();
    
    v2MessageService.getCollectionListByOption(option,
            new V2NIMSuccessCallback<List<V2NIMCollection>>() {
                @Override
                public void onSuccess(List<V2NIMCollection> v2NIMCollections) {
                // success
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
                // failed, handle error
                }
            });
    
    iOS
    Objective-CV2NIMCollectionOption *collectionOption = [[V2NIMCollectionOption alloc] init];
    [[[NIMSDK sharedSDK] v2MessageService] getCollectionListByOption:collectionOption
                                                             success:^(NSArray<V2NIMCollection *> * _Nonnull result) {
        // result V2NIMCollection 数组
    }
                                                             failure:^(V2NIMError * _Nonnull error) {
        // error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMCollectionOption option;
    option.collectionType = 1;
    option.limit = 10;
    messageService.getCollectionListByOption(
        option,
        [](nstd::vector<V2NIMCollection> collections) {
            for (auto&& collection : collections) {
                // do something
            }
        },
        [](V2NIMError error) {
            // get collection list failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const res: V2NIMCollection[] = await nim.V2NIMMessageService.getCollectionListByOption({
        beginTime: 0,
        endTime: 0,
        direction: 0,
        limit: 100,
        collectionType: 0
      })
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      const result = await v2.messageService.getCollectionListByOption(option)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      const res: V2NIMCollection[] = await nim.messageService.getCollectionListByOption({
        beginTime: 0,
        endTime: 0,
        direction: 0,
        limit: 100,
        collectionType: 0
      })
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMCollection> 按照收藏时间排序的收藏列表

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含按照收藏时间排序的 V2NIMCollection 列表。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMGetCollectionListSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    getCollectionListExByOption

    接口描述

    按照查询条件分页获取收藏列表,结果按照收藏时间排序。

    getCollectionListByOption 方法,回参新增 totalCount 字段,表示收藏总数。

    参数说明

    Android
    Javavoid getCollectionListExByOption(V2NIMCollectionOption option, V2NIMSuccessCallback<V2NIMCollectionListResult> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    option V2NIMCollectionOption 收藏查询选项
    success V2NIMSuccessCallback 获取成功回调,返回查询结果。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    iOS
    Objective-C- (void)getCollectionListExByOption:(V2NIMCollectionOption *)option
                              success:(V2NIMGetCollectionListExSuccess)success
                              failure:(V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    option V2NIMCollectionOption 收藏查询选项
    success V2NIMGetCollectionListExSuccess 获取成功回调,可自定义设置。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    macOS/Windows
    C++virtual void getCollectionListExByOption(const V2NIMCollectionOption& option,
        const V2NIMSuccessCallback<const V2NIMCollectionListResult&>& success,
        const V2NIMFailureCallback& failure) = 0;
    
    参数名称 类型 是否必填 说明
    option V2NIMCollectionOption 收藏查询选项
    success V2NIMSuccessCallback 获取成功回调,返回查询结果。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptgetCollectionListExByOption(option: V2NIMCollectionOption): Promise<V2NIMCollectionListResult>
    
    参数名称 类型 是否必填 说明
    option V2NIMCollectionOption 收藏查询选项
    Node.js/Electron
    TypeScriptgetCollectionListExByOption(option): Promise<V2NIMCollectionListResult>
    
    参数名称 类型 是否必填 说明
    option V2NIMCollectionOption 收藏查询选项

    示例代码

    Android
    Java        V2NIMCollectionOption option = V2NIMCollectionOption.V2NIMCollectionOptionBuilder.builder()
                    // 按需设置
    //                .withAnchorCollection()
    //                .withBeginTime()
    //                .withCollectionType()
    //                .withDirection()
    //                .withEndTime()
    //                .withLimit()
                    .build();
    
            NIMClient.getService(V2NIMMessageService.class).getCollectionListExByOption(option,
                    new V2NIMSuccessCallback<V2NIMCollectionListResult>() {
                        @Override
                        public void onSuccess(V2NIMCollectionListResult v2NIMCollectionListResult) {
    
                        }
                    }, new V2NIMFailureCallback() {
                        @Override
                        public void onFailure(V2NIMError error) {
    
                        }
                    });
    
    iOS
    Objective-CV2NIMCollectionOption *option = [[V2NIMCollectionOption alloc] init];
    // 按需设置
    //option.anchorCollection = nil;
    //option.beginTime = 0;
    //option.collectionType = 0;
    //option.direction = 0;
    //option.endTime = 0;
    //option.limit = 0;
    [[NIMSDK sharedSDK].v2MessageService getCollectionListExByOption:option success:^(V2NIMCollectionListResult * _Nonnull result) {
            
        } failure:^(V2NIMError * _Nonnull error) {
            
        }];
    
    macOS/Windows
    C++V2NIMCollectionOption option;
    option.collectionType = 1;
    option.limit = 10;
    messageService.getCollectionListExByOption(
        option,
        [](V2NIMCollectionListResult result) {
            for (auto&& collection : result.collectionList) {
                // do something
            }
        },
        [](V2NIMError error) {
            // get collection list failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const res: V2NIMCollectionListResult = await nim.V2NIMMessageService.getCollectionListExByOption({
        beginTime: 0,
        endTime: 0,
        direction: 0,
        limit: 100,
        collectionType: 0
      });
      // todo: Success
    } catch (err) {
      // todo: error
    }
    
    Node.js/Electron
    TypeScriptconst result = await v2.messageService.getCollectionListExByOption(option)
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMCollectionListResult> 查询结果

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMCollectionListResult 查询结果。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMGetCollectionListExSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron

    无。

    sendP2PMessageReceipt

    接口描述

    发送单聊消息已读回执。

    当消息接收方收到 onReceiveMessages 回调后,可以调用该方法向消息发送方发送已读回执。单聊消息已读回执功能具体实现步骤请参考 消息已读回执

    本端发送已读回执成功后,其他登录客户端和消息发送方均会收到单聊已读回执回调 onReceiveP2PMessageReadReceipts

    参数说明

    Android
    Javavoid sendP2PMessageReceipt(V2NIMMessage message, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要发送已读回执的消息对象。如果为空或不存在则返回 191004 参数错误。
    success V2NIMSuccessCallback 已读回执发送成功回调
    failure V2NIMFailureCallback 已读回执发送失败回调,返回 错误码
    iOS
    Objective-C- (void)sendP2PMessageReceipt:(V2NIMMessage*)messages
                          success:(nullable V2NIMSuccessCallback)success
                          failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要发送已读回执的消息对象。如果为空或不存在则返回 191004 参数错误。
    success V2NIMSuccessCallback 已读回执发送成功回调
    failure V2NIMFailureCallback 已读回执发送失败回调,返回 错误码
    macOS/Windows
    C++ virtual void sendP2PMessageReceipt(V2NIMMessage message, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要发送已读回执的消息对象。如果为空或不存在则返回 191004 参数错误。
    success V2NIMSuccessCallback 已读回执发送成功回调
    failure V2NIMFailureCallback 已读回执发送失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptsendP2PMessageReceipt(message: V2NIMMessage): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要发送已读回执的消息对象。如果为空或不存在则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptsendP2PMessageReceipt(message): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要发送已读回执的消息对象。如果为空或不存在则返回 191004 参数错误。
    HarmonyOS
    TypeScriptsendP2PMessageReceipt(message: V2NIMMessage): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要发送已读回执的消息对象。如果为空或不存在则返回 191004 参数错误。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    // V2NIMMessage v2Message
    v2MessageService.sendP2PMessageReceipt(v2Message,
        new V2NIMSuccessCallback<Void>() {
            @Override
            public void onSuccess(Void unused) {
    
            }
        },
        new V2NIMFailureCallback() {
            @Override
            public void onFailure(V2NIMError error) {
    
            }
        });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] sendP2PMessageReceipt:message
                                                          success:^{
        //发送成功
        }
                                                          failure:^(V2NIMError * _Nonnull error) {
        //error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMMessage message;
    //...
    messageService.sendP2PMessageReceipt(
      message,
      []() {
      // send p2p message receipt succeeded
      },
      [](V2NIMError error) {
      // send p2p message receipt failed, handle error
      }
    );
    
    Web/uni-app/小程序
    TypeScripttry {
      await nim.V2NIMMessageService.sendP2PMessageReceipt(message)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      await v2.messageService.sendP2PMessageReceipt(message)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      await nim.messageService.sendP2PMessageReceipt(message)
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。发送已读回执成功,返回 onReceiveP2PMessageReadReceipts 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMConversationCallback 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/HarmonyOS

    发送已读回执成功,返回 onReceiveP2PMessageReadReceipts 回调。

    Node.js/Electron

    发送已读回执成功,返回 receiveP2PMessageReadReceipts 回调。

    getP2PMessageReceipt

    接口描述

    获取单聊消息已读回执。获取结果不包含已删除、已撤回消息的已读回执。

    参数说明

    Android
    Javavoid getP2PMessageReceipt(String conversationId, V2NIMSuccessCallback<V2NIMP2PMessageReadReceipt> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    conversationId String 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • success V2NIMSuccessCallback 获取成功回调,返回 V2NIMP2PMessageReadReceipt
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    iOS
    Objective-C- (void)getP2PMessageReceipt:(NSString*)conversationId
                         success:(nullable V2NIMP2PReadReceiptSuccess)success
                         failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    conversationId NSString* 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • success V2NIMSuccessCallback 获取成功回调,返回 V2NIMP2PMessageReadReceipt
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    macOS/Windows
    C++virtual void getP2PMessageReceipt(nstd::string conversationId,
            V2NIMSuccessCallback<V2NIMP2PMessageReadReceipt> success,
            V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    conversationId nstd::string 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • success V2NIMSuccessCallback 获取成功回调,返回 V2NIMP2PMessageReadReceipt
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptgetP2PMessageReceipt(conversationId: string): Promise<V2NIMP2PMessageReadReceipt>
    
    参数名称 类型 是否必填 说明
    conversationId string 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • Node.js/Electron
    TypeScriptgetP2PMessageReceipt(conversationId): Promise<V2NIMP2PMessageReadReceipt>
    
    参数名称 类型 是否必填 说明
    conversationId string 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • HarmonyOS
    TypeScriptgetP2PMessageReceipt(conversationId: string): Promise<V2NIMP2PMessageReadReceipt>
    
    参数名称 类型 是否必填 说明
    conversationId string 会话 ID,通过调用 V2NIMConversationIdUtil 的对应函数创建。
  • 组成方式:用户账号(accountId)| 会话类型(V2NIMConversationType)| 聊天对象账号(accountId)或群组 ID。
  • 如果为空或不存在则返回 191004 参数错误。
  • 示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    v2MessageService.getP2PMessageReceipt("x | x | x",
            new V2NIMSuccessCallback<V2NIMP2PMessageReadReceipt>() {
                @Override
                public void onSuccess(V2NIMP2PMessageReadReceipt v2NIMP2PMessageReadReceipt) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] getP2PMessageReceipt:@"conversationId"
                                                        success:^(V2NIMP2PMessageReadReceipt * _Nonnull receipt) {
        //receipt 请参考 V2NIMP2PMessageReadReceipt
    }
                                                        failure:^(V2NIMError * _Nonnull error) {
        //error 包含错误原因
    }];
    
    macOS/Windows
    C++auto conversationId = V2NIMConversationIdUtil::p2pConversationId("target_account_id");
    messageService.getP2PMessageReceipt(
        conversationId,
        [](V2NIMP2PMessageReadReceipt receipt) {
          // get p2p message receipt succeeded
        },
        [](V2NIMError error) {
          // get p2p message receipt failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const res: V2NIMP2PMessageReadReceipt = await nim.V2NIMMessageService.getP2PMessageReceipt('me|1|another')
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      const result = await v2.messageService.getP2PMessageReceipt(conversationId)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      const res: V2NIMP2PMessageReadReceipt = await nim.messageService.getP2PMessageReceipt('me|1|another')
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMP2PMessageReadReceipt> 单聊消息已读回执

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMP2PMessageReadReceipt
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMConversationResultCallback 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    isPeerRead

    接口描述

    查询单聊消息是否已读。

    消息发送方在发送消息后,可调用该方法判断消息接收方是否已读消息。

    参数说明

    Android
    Javaboolean isPeerRead(V2NIMMessage message);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 单聊消息对象,如果为空或不存在则返回 191004 参数错误。
    iOS
    Objective-C- (BOOL)isPeerRead:(V2NIMMessage *)message;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 单聊消息对象,如果为空或不存在则返回 191004 参数错误。
    macOS/Windows
    C++virtual bool isPeerRead(V2NIMMessage message) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 单聊消息对象,如果为空或不存在则返回 191004 参数错误。
    Web/uni-app/小程序
    TypeScriptisPeerRead(message: V2NIMMessage): boolean
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 单聊消息对象,如果为空或不存在则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptisPeerRead(message): boolean
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 单聊消息对象,如果为空或不存在则返回 191004 参数错误。
    HarmonyOS
    TypeScriptisPeerRead(message: V2NIMMessage): boolean
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 单聊消息对象,如果为空或不存在则返回 191004 参数错误。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    boolean isPeerRead = v2MessageService.isPeerRead(v2Message);
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] isPeerRead:message];
    
    macOS/Windows
    C++V2NIMMessage message;
      // ...
    bool peerRead = messageService.isPeerRead(message);
    
    Web/uni-app/小程序
    TypeScripttry {
      const res: boolean = nim.V2NIMMessageService.isPeerRead(message)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      const result = v2.messageService.isPeerRead(message)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      const res: boolean = nim.messageService.isPeerRead(message)
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    • true:该单聊消息为已读
    • false:该单聊消息为未读

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMP2PMessageReadReceipt
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMConversationResultCallback 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    sendTeamMessageReceipts

    接口描述

    发送群组消息已读回执。

    当消息接收方收到 onReceiveMessages 回调后,可以调用该方法向消息发送方发送已读回执。群组消息已读回执功能具体实现请参考 消息已读回执

    本端发送已读回执成功后,其他登录客户端和消息发送方均会收到群聊已读回执回调 onReceiveTeamMessageReadReceipts

    参数说明

    Android
    Javavoid sendTeamMessageReceipts(List<V2NIMMessage> messages, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    messages List<V2NIMMessage> 需要发送已读回执的群组消息对象。如果为空或不存在则返回 191004 参数错误。
    success V2NIMSuccessCallback 已读回执发送成功回调
    failure V2NIMFailureCallback 已读回执发送失败回调,返回 错误码
    iOS
    Objective-C- (void)sendTeamMessageReceipts:(NSArray<V2NIMMessage *> *)messages
                            success:(nullable V2NIMSuccessCallback)success
                            failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message NSArray<V2NIMMessage *> * 需要发送已读回执的群组消息对象。如果为空或不存在则返回 191004 参数错误。
    success V2NIMSuccessCallback 已读回执发送成功回调
    failure V2NIMFailureCallback 已读回执发送失败回调,返回 错误码
    macOS/Windows
    C++virtual void sendTeamMessageReceipts(nstd::vector<V2NIMMessage> messages, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    message nstd::vector<V2NIMMessage> 需要发送已读回执的群组消息对象。如果为空或不存在则返回 191004 参数错误。
    success V2NIMSuccessCallback 已读回执发送成功回调
    failure V2NIMFailureCallback 已读回执发送失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptsendTeamMessageReceipts(messages: V2NIMMessage[]): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage[] 需要发送已读回执的群组消息对象。如果为空或不存在则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptsendTeamMessageReceipts(messages): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage[] 需要发送已读回执的群组消息对象。如果为空或不存在则返回 191004 参数错误。
    HarmonyOS
    TypeScriptsendTeamMessageReceipts(messages: V2NIMMessage[]): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage[] 需要发送已读回执的群组消息对象。如果为空或不存在则返回 191004 参数错误。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    List<V2NIMMessage> v2Messages = ; // 需要发送已读回执的消息列表
    v2MessageService.sendTeamMessageReceipts(v2Messages,
            new V2NIMSuccessCallback<Void>() {
                @Override
                public void onSuccess(Void unused) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] sendTeamMessageReceipts:@[message]
                                                            success:^{
        //发送成功
        }
                                                            failure:^(V2NIMError * _Nonnull error) {
        //error 包含错误原因
    }];
    
    macOS/Windows
    C++nstd::vector<V2NIMMessage> messages;
    // ...
    messageService.sendTeamMessageReceipts(
        messages,
        []() {
            // send team message receipts succeeded
        },
        [](V2NIMError error) {
            // send team message receipts failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      await nim.V2NIMMessageService.sendTeamMessageReceipts(messages)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      await v2.messageService.sendTeamMessageReceipts(messages)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      await nim.messageService.sendTeamMessageReceipts(messages)
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。发送已读回执成功,返回 onReceiveTeamMessageReadReceipts 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMConversationCallback 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/HarmonyOS

    发送已读回执成功,返回 onReceiveTeamMessageReadReceipts 回调。

    Node.js/Electron

    发送已读回执成功,返回 receiveTeamMessageReadReceipts 回调。

    getTeamMessageReceipts

    接口描述

    批量获取群组消息已读回执。获取结果不包含已删除、已撤回消息的已读回执。

    参数说明

    Android
    Javavoid getTeamMessageReceipts(List<V2NIMMessage> messages, V2NIMSuccessCallback<List<V2NIMTeamMessageReadReceipt>> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    messages List<V2NIMMessage> 发送已读回执的群组消息对象列表。
  • 不能为空,否则返回 191004 参数错误。
  • 所有消息必须属于同一个会话,否则返回 191001 使用姿势错误。
  • 单次最多查询 50 条消息。
  • success V2NIMSuccessCallback 获取成功回调,返回 V2NIMTeamMessageReadReceipt 列表。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    iOS
    Objective-C- (void)getTeamMessageReceipts:(NSArray<V2NIMMessage *> *)messages
                           success:(nullable V2NIMTeamReadReceiptSuccess)success
                           failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    messages NSArray<V2NIMMessage *> * 发送已读回执的群组消息对象列表。
  • 不能为空,否则返回 191004 参数错误。
  • 所有消息必须属于同一个会话,否则返回 191001 使用姿势错误。
  • 单次最多查询 50 条消息。
  • success V2NIMSuccessCallback 获取成功回调,返回 V2NIMTeamMessageReadReceipt 列表。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    macOS/Windows
    C++    virtual void getTeamMessageReceipts(nstd::vector<V2NIMMessage> messages,
            V2NIMSuccessCallback<nstd::vector<V2NIMTeamMessageReadReceipt>> success,
            V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    messages nstd::vector 发送已读回执的群组消息对象列表。
  • 不能为空,否则返回 191004 参数错误。
  • 所有消息必须属于同一个会话,否则返回 191001 使用姿势错误。
  • 单次最多查询 50 条消息。
  • success V2NIMSuccessCallback 获取成功回调,返回 V2NIMTeamMessageReadReceipt 列表。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptgetTeamMessageReceipts(messages: V2NIMMessage[]): Promise<V2NIMTeamMessageReadReceipt[]>
    
    参数名称 类型 是否必填 说明
    messages V2NIMMessage[] 发送已读回执的群组消息对象列表。
  • 不能为空,否则返回 191004 参数错误。
  • 所有消息必须属于同一个会话,否则返回 191001 使用姿势错误。
  • 单次最多查询 50 条消息。
  • Node.js/Electron
    TypeScriptgetTeamMessageReceipts(messages): Promise<V2NIMTeamMessageReadReceipt[]>
    
    参数名称 类型 是否必填 说明
    messages V2NIMMessage[] 发送已读回执的群组消息对象列表。
  • 不能为空,否则返回 191004 参数错误。
  • 所有消息必须属于同一个会话,否则返回 191001 使用姿势错误。
  • 单次最多查询 50 条消息。
  • HarmonyOS
    TypeScriptgetTeamMessageReceipts(messages: V2NIMMessage[]): Promise<V2NIMTeamMessageReadReceipt[]>
    
    参数名称 类型 是否必填 说明
    messages V2NIMMessage[] 发送已读回执的群组消息对象列表。
  • 不能为空,否则返回 191004 参数错误。
  • 所有消息必须属于同一个会话,否则返回 191001 使用姿势错误。
  • 单次最多查询 50 条消息。
  • 示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    //    List<V2NIMMessage> v2Messages = ; // 需要查询已读回执状态的消息
    v2MessageService.getTeamMessageReceipts(v2Messages,
            new V2NIMSuccessCallback<List<V2NIMTeamMessageReadReceipt>>() {
                @Override
                public void onSuccess(List<V2NIMTeamMessageReadReceipt> v2NIMTeamMessageReadReceipts) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            });
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] getTeamMessageReceipts:@[message]
                                                          success:^(NSArray<V2NIMTeamMessageReadReceipt *> * _Nonnull readReceipts) {
        //readReceipts 请参考 V2NIMTeamMessageReadReceipt
        }
                                                          failure:^(V2NIMError * _Nonnull error) {
        //error 包含错误原因
    }];
    
    macOS/Windows
    C++nstd::vector<V2NIMMessage> messages;
    // ...
    messageService.getTeamMessageReceipts(
        messages,
        [](nstd::vector<V2NIMTeamMessageReadReceipt> receipts) {
            for (auto&& receipt : receipts) {
                 // do something
            }
        },
        [](V2NIMError error) {
            // get team message receipts failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const res: V2NIMTeamMessageReadReceipt[] = await nim.V2NIMMessageService.getTeamMessageReceipts(messages)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      const result = await v2.messageService.getTeamMessageReceipts(messages)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      const res: V2NIMTeamMessageReadReceipt[] = await nim.messageService.getTeamMessageReceipts(messages)
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMTeamMessageReadReceipt[]> 群组消息已读回执列表

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMTeamMessageReadReceipt 列表。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMConversationResultCallback 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    getTeamMessageReceiptDetail

    接口描述

    获取指定群组消息的已读回执详情,包含已读回执、已读/未读账号列表。可指定需要查询的群成员列表。

    参数说明

    Android
    Javavoid getTeamMessageReceiptDetail(V2NIMMessage message, Set<String> memberAccountIds, V2NIMSuccessCallback<V2NIMTeamMessageReadReceiptDetail> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 发送已读回执的群组消息对象。如果为空或不存在则返回 191004 参数错误。
    memberAccountIds Set 群成员账号列表。如果为空则表示查询所有群成员。
    success V2NIMSuccessCallback 获取成功回调,返回 V2NIMTeamMessageReadReceiptDetail
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    iOS
    Objective-C- (void)getTeamMessageReceiptDetail:(V2NIMMessage *)message
                        memberAccountIds:(NSSet*)memberAccountIds
                                 success:(nullable V2NIMTeamReadReceiptDetailSuccess)success
                                 failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 发送已读回执的群组消息对象。如果为空或不存在则返回 191004 参数错误。
    memberAccountIds NSSet* 群成员账号列表。如果为空则表示查询所有群成员。
    success V2NIMTeamReadReceiptDetailSuccess 获取成功回调,可自定义设置。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    macOS/Windows
    C++virtual void getTeamMessageReceiptDetail(V2NIMMessage message,
            nstd::set<nstd::string> memberAccountIds,
            V2NIMSuccessCallback<V2NIMTeamMessageReadReceiptDetail> success,
            V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 发送已读回执的群组消息对象。如果为空或不存在则返回 191004 参数错误。
    memberAccountIds nstd::set<\nstd::string> 群成员账号列表。如果为空则表示查询所有群成员。
    success V2NIMSuccessCallback 获取成功回调,返回 V2NIMTeamMessageReadReceiptDetail
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptgetTeamMessageReceiptDetail(messages: V2NIMMessage, memberAccountIds?: string[]): Promise<V2NIMTeamMessageReadReceiptDetail>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 发送已读回执的群组消息对象。如果为空或不存在则返回 191004 参数错误。
    memberAccountIds string[] 群成员账号列表。如果为空则表示查询所有群成员。
    Node.js/Electron
    TypeScriptgetTeamMessageReceiptDetail(message, memberAccountIds): Promise<V2NIMTeamMessageReadReceiptDetail>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 发送已读回执的群组消息对象。如果为空或不存在则返回 191004 参数错误。
    memberAccountIds string[] 群成员账号列表。如果为空则表示查询所有群成员。
    HarmonyOS
    TypeScriptgetTeamMessageReceiptDetail(messages: V2NIMMessage, memberAccountIds?: string[]): Promise<V2NIMTeamMessageReadReceiptDetail>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 发送已读回执的群组消息对象。如果为空或不存在则返回 191004 参数错误。
    memberAccountIds string[] 群成员账号列表。如果为空则表示查询所有群成员。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    // V2NIMMessage message = ; // 需要查询已读回执状态的消息
    // Set<String> memberAccountIds = ; // 指定账号列表
    v2MessageService.getTeamMessageReceiptDetail(message, memberAccountIds,
            new V2NIMSuccessCallback<V2NIMTeamMessageReadReceiptDetail>() {
                @Override
                public void onSuccess(V2NIMTeamMessageReadReceiptDetail v2NIMTeamMessageReadReceiptDetail) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            }
    );
    
    iOS
    Objective-C[[[NIMSDK sharedSDK] v2MessageService] getTeamMessageReceiptDetail:message
                                                      memberAccountIds:@[@"user1"] success:^(V2NIMTeamMessageReadReceiptDetail * _Nonnull detail) {
        //detail 请参考 V2NIMTeamMessageReadReceiptDetail
        }
                                                                failure:^(V2NIMError * _Nonnull error) {
        //error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMMessage message;
    // ...
    messageService.getTeamMessageReceiptDetail(
        message,
        {},
        [](V2NIMTeamMessageReadReceiptDetail readReceiptDetial) {
            // get team message receipt detail succeeded
        },
        [](V2NIMError error) {
            // get team message receipt detail failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const res: V2NIMTeamMessageReadReceiptDetail = await nim.V2NIMMessageService.getTeamMessageReceiptDetail(message)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      const result = await v2.messageService.getTeamMessageReceiptDetail(message, memberAccountIds)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      const res: V2NIMTeamMessageReadReceiptDetail = await nim.messageService.getTeamMessageReceiptDetail(message)
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMTeamMessageReadReceiptDetail> 群组消息已读回执详情

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMTeamMessageReadReceiptDetail
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMConversationResultCallback 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    voiceToText

    接口描述

    语音转文字。

    该方法将语音内容转换为可编辑、可搜索的文本。

    使用该接口前,请至网易云信控制台 开通语音识别

    参数说明

    Android
    Javavoid voiceToText(V2NIMVoiceToTextParams params, V2NIMSuccessCallback<String> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    params V2NIMVoiceToTextParams 语音转文字配置参数。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 转换成功回调,返回转换后的文本字符串。
    failure V2NIMFailureCallback 转换失败回调,返回 错误码
    iOS
    Objective-C- (void)voiceToText:(V2NIMVoiceToTextParams *)params
                success:(nullable V2NIMTranslateSuccess)success
                failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    params V2NIMVoiceToTextParams 语音转文字配置参数。不能为空,否则返回 191004 参数错误。
    success V2NIMTranslateSuccess 转换成功回调,可自定义设置。
    failure V2NIMFailureCallback 转换失败回调,返回 错误码
    macOS/Windows
    C++virtual void voiceToText(V2NIMVoiceToTextParams params, V2NIMSuccessCallback<nstd::string> success, V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    params V2NIMVoiceToTextParams 语音转文字配置参数。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 转换成功回调,返回转换后的文本字符串。
    failure V2NIMFailureCallback 转换失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptvoiceToText(params: V2NIMVoiceToTextParams): Promise<string>
    
    参数名称 类型 是否必填 说明
    params V2NIMVoiceToTextParams 语音转文字配置参数。不能为空,否则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptvoiceToText(params): Promise<string>
    
    参数名称 类型 是否必填 说明
    params V2NIMVoiceToTextParams 语音转文字配置参数。不能为空,否则返回 191004 参数错误。
    HarmonyOS
    TypeScriptvoiceToText(params: V2NIMVoiceToTextParams): Promise<string>
    
    参数名称 类型 是否必填 说明
    params V2NIMVoiceToTextParams 语音转文字配置参数。不能为空,否则返回 191004 参数错误。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    V2NIMVoiceToTextParams params = V2NIMVoiceToTextParams.V2NIMVoiceToTextParamsBuilder
    // 必填
    .builder(duration)
    // 根据实际情况配置
    .withMimeType()
    .withSampleRate()
    .withSceneName()
    .withVoicePath()
    .withVoiceUrl()
    .build();
    v2MessageService.voiceToText(params,
            new V2NIMSuccessCallback<String>() {
                @Override
                public void onSuccess(String s) {
                // 转换成功
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
                // 转换失败
                }
            });
    
    iOS
    Objective-CV2NIMVoiceToTextParams *voiceToTextParams = [[V2NIMVoiceToTextParams alloc] init];
    [[[NIMSDK sharedSDK] v2MessageService] voiceToText:voiceToTextParams
                                               success:^(NSString * _Nonnull result) {
        // result 语音转出的文本
    }
                                               failure:^(V2NIMError * _Nonnull error) {
        // error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMVoiceToTextParams params,
    params.voiceUrl = "voice_url";
    params.mimeType = "aac";
    params.duration = "1000";
    messageService.voiceToText(
        params,
        [](nstd::string text) {
            // translate voice to text succeeded
        },
        [](V2NIMError error) {
            // translate voice to text failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const res: string = await nim.V2NIMMessageService.voiceToText({
        voiceUrl: 'https://nim.nosdn.127.net/{bucket}/{object}',
        sampleRate: '44kHz',
        duration: 30000,
        mimeType: 'audio/mp3'
      });
      // TODO: Success
    } catch (err) {
      // TODO: Error
    }
    
    Node.js/Electron
    TypeScripttry {
      const result = await v2.messageService.voiceToText({
        voiceUrl: 'https://nim.nosdn.127.net/{bucket}/{object}',
        sampleRate: '44kHz',
        duration: 30000,
        mimeType: 'audio/mp3'
      });
      // TODO: Success
    } catch (err) {
      // TODO: Error
    }
    
    HarmonyOS
    TypeScripttry {
      const res: string = await nim.messageService.voiceToText({
          voiceUrl: 'https://nim.nosdn.127.net/{bucket}/{object}',
          sampleRate: '44kHZ',
          duration: 30000,
          mimeType: 'audio/mp3'
      })
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    String 格式文本字符串

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise 语音转换后的文本字符串

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMConversationResultCallback 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    searchCloudMessages

    接口描述

    全文检索云端历史消息。

    该方法按照指定条件全局检索整个应用内的云端历史消息。

    使用该接口前,请至 网易云信控制台 开通全文云端消息检索,详细介绍请参考 开始使用网易云信 IM

    参数说明

    Android
    Javavoid searchCloudMessages(V2NIMMessageSearchParams params, V2NIMSuccessCallback<List<V2NIMMessage>> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchParams 消息检索配置参数。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 检索成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 检索失败回调,返回 错误码
    iOS
    Objective-C- (void)searchCloudMessages:(V2NIMMessageSearchParams *)params
                        success:(nullable V2NIMGetMessageListSuccess)success
                        failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchParams 消息检索配置参数。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 检索成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 检索失败回调,返回 错误码
    macOS/Windows
    C++virtual void searchCloudMessages(V2NIMMessageSearchParams params,
            V2NIMSuccessCallback<nstd::vector<V2NIMMessage>> success,
            V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchParams 消息检索配置参数。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 检索成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 检索失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptsearchCloudMessages(searchParams: V2NIMMessageSearchParams): Promise<V2NIMMessage[]>
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchParams 消息检索配置参数。不能为空,否则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptsearchCloudMessages(params): Promise<V2NIMMessage[]>
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchParams 消息检索配置参数。不能为空,否则返回 191004 参数错误。
    HarmonyOS
    TypeScriptsearchCloudMessages(searchParams: V2NIMMessageSearchParams): Promise<V2NIMMessage[]>
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchParams 消息检索配置参数。不能为空,否则返回 191004 参数错误。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    V2NIMMessageSearchParams searchParams = V2NIMMessageSearchParams.V2NIMMessageSearchParamsBuilder
            // 搜索关键字,必填
            .builder(keyword)
            // TODO: 根据实际情况配置
    //                .withBeginTime()
    //                .withConversationLimit()
    //                .withEndTime()
    //                .withMessageLimit()
    //                .withMessageSubtypes()
    //                .withMessageTypes()
    //                .withP2pAccountIds()
    //                .withSenderAccountIds()
    //                .withSortOrder()
    //                .withTeamIds()
            .build();
    
    v2MessageService.searchCloudMessages(searchParams,
            new V2NIMSuccessCallback<List<V2NIMMessage>>() {
                @Override
                public void onSuccess(List<V2NIMMessage> v2NIMMessages) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            });
    
    iOS
    Objective-CV2NIMMessageSearchParams *searchParams = [[V2NIMMessageSearchParams alloc] init];
    [[[NIMSDK sharedSDK] v2MessageService] searchCloudMessages:searchParams
                                                        success:^(NSArray<V2NIMMessage *> * _Nonnull result) {
        //查询成功结果
    }
                                                        failure:^(V2NIMError * _Nonnull error) {
        //error 包含错误原因
    }];
    
    macOS/Windows
    C++V2NIMMessageSearchParams params;
    params.keyword = "keyword";
    params.messageLimit = 20;
    messageService.searchCloudMessages(
        params,
        [](nstd::vector<V2NIMMessage> messages) {
            for (auto&& message : messages) {
                // do something
            }
        },
        [](V2NIMError error) {
            // search cloud messages failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
      const res: V2NIMMessage[] = await nim.V2NIMMessageService.searchCloudMessages({
        keyword: 'keyword',
        beginTime: 0,
        endTime: 0,
        conversationLimit: 20,
        sortOrder: 0,
        p2pAccountIds: ['a', 'b'],
        senderAccountIds: ['c', 'd']
      })
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      const result = await v2.messageService.searchCloudMessages({
        keyword: 'keyword',
        beginTime: 0,
        endTime: 0,
        conversationLimit: 20,
        sortOrder: 0,
        p2pAccountIds: ['a', 'b'],
        senderAccountIds: ['c', 'd']
      })
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      const res: V2NIMMessage[] = await nim.messageService.searchCloudMessages({
        keyword: 'keyword',
        beginTime: 0,
        endTime: 0,
        conversationLimit: 20,
        sortOrder: 0,
        p2pAccountIds: ['a', 'b'],
        senderAccountIds: ['c', 'd']
      })
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMMessage[]> 云端消息列表

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMMessage 云端消息列表。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMConversationResultCallback 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    searchCloudMessagesEx

    接口描述

    全文检索云端历史消息。

    该方法按照指定条件全局检索整个应用内的云端历史消息。

    searchCloudMessages 方法,入参支持传入多个 keyword。

    使用该接口前,请至 网易云信控制台 开通全文云端消息检索,详细介绍请参考 开始使用网易云信 IM

    参数说明

    Android
    Javavoid searchCloudMessagesEx(V2NIMMessageSearchExParams params, V2NIMSuccessCallback<V2NIMMessageSearchResult> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchExParams 消息检索配置参数。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 检索成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 检索失败回调,返回 错误码
    iOS
    Objective-C- (void)searchCloudMessagesEx:(V2NIMMessageSearchExParams *)params
                          success:(nullable V2NIMMessageSearchResultCallback)success
                          failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchExParams 消息检索配置参数。不能为空,否则返回 191004 参数错误。
    success V2NIMMessageSearchResultCallback 检索成功回调,可自定义设置。
    failure V2NIMFailureCallback 检索失败回调,返回 错误码
    macOS/Windows
    C++virtual void searchCloudMessagesEx(const V2NIMMessageSearchExParams& params,
        V2NIMSuccessCallback<const V2NIMMessageSearchResult&> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchExParams 消息检索配置参数。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 检索成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 检索失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptsearchCloudMessagesEx(searchParams: V2NIMMessageSearchExParams): Promise<V2NIMMessageSearchResult>
    
    参数名称 类型 是否必填 说明
    searchParams V2NIMMessageSearchExParams 消息检索配置参数。不能为空,否则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptsearchCloudMessagesEx(params): Promise<V2NIMMessageSearchResult>
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchExParams 消息检索配置参数。不能为空,否则返回 191004 参数错误。
    HarmonyOS
    TypeScriptsearchCloudMessagesEx(searchParams: V2NIMMessageSearchExParams): Promise<V2NIMMessageSearchResult>
    
    参数名称 类型 是否必填 说明
    searchParams V2NIMMessageSearchExParams 消息检索配置参数。不能为空,否则返回 191004 参数错误。

    示例代码

    Android
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    // 创建搜索参数
    V2NIMMessageSearchExParams searchParams = V2NIMMessageSearchExParams.V2NIMMessageSearchExParamsBuilder
            // 设置会话ID
            .builder("conversationId")
            // 设置关键词列表
            .withKeywordList(Arrays.asList("关键词1", "关键词2"))
            // 设置关键词匹配类型
            .withKeywordMatchType(V2NIMSearchKeywordMathType.V2NIM_SEARCH_KEYWORD_MATH_TYPE_OR)
            // 设置发送者账号列表
            .withSenderAccountIds(Arrays.asList("发送者ID1", "发送者ID2"))
            // 设置消息类型
            .withMessageTypes(Arrays.asList(V2NIMMessageType.V2NIM_MESSAGE_TYPE_TEXT, V2NIMMessageType.V2NIM_MESSAGE_TYPE_IMAGE))
            // 设置搜索开始时间(毫秒时间戳)
            .withSearchStartTime(System.currentTimeMillis() - 7 * 24 * 60 * 60 * 1000)
            // 设置搜索时间跨度(毫秒)
            .withSearchTimePeriod(7 * 24 * 60 * 60 * 1000)
            // 设置分页大小限制
            .withLimit(20)
            // 设置分页标记(首次搜索传空)
            .withPageToken("")
            // 设置消息子类型
            .withMessageSubtypes(Arrays.asList(1, 2))
            .build();
    
    v2MessageService.searchCloudMessagesEx(searchParams,
            new V2NIMSuccessCallback<V2NIMMessageSearchResult>() {
                @Override
                public void onSuccess(V2NIMMessageSearchResult result) {
                    // 获取搜索到的消息列表
                    List<V2NIMMessage> messages = result.getMessages();
                    // 获取下一页的分页标记
                    String nextPageToken = result.getNextPageToken();
                    
                    // 处理搜索结果...
                    for (V2NIMMessage message : messages) {
                        // 处理每条消息
                    }
                    
                    // 如果需要加载下一页
                    if (nextPageToken != null && !nextPageToken.isEmpty()) {
                        // 使用nextPageToken继续加载下一页
                    }
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
                    // 处理错误
                    int code = error.getCode();
                    String message = error.getMessage();
                    // 处理搜索失败...
                }
            });
    
    iOS
    Objective-CV2NIMMessageSearchExParams *params = [[V2NIMMessageSearchExParams alloc] init];
    // 设置会话ID,来指定搜索某个会话种的消息。不传则表示搜索所有会话中的消息。
    params.conversationId = conversation;
    // 消息检索的关键词列表
    params.keywordList = @[@"key1", @"key2"];
    // 关键词匹配类型,可以配置为匹配上所有关键词才命中或者匹配上至少一个关键词即可命中。
    // 这里设置为匹配上所有关键词才命中
    params.keywordMatchType = V2NIM_SEARCH_KEYWORD_MATH_TYPE_AND;
    // 搜索策略。默认通过FTS搜索。这里配置为通过数据库的LIKE语句搜索。
    params.strategy = V2NIM_SEARCH_STRATEGY_SQL_LIKE;
    // 设置发送者账号ID列表,来指定搜索某些发送者发送的消息。不传则表示搜索所有发送者发送的消息。
    params.senderAccountIds = @[@"accountId1", @"accountId2", @"accountId3"];
    // 设置消息类型列表,来指定搜索某些类型的消息。不传则表示搜索所有类型的消息。
    // 这里配置为搜索文本消息和文件消息。
    params.messageTypes = @[@(V2NIM_MESSAGE_TYPE_TEXT), @(V2NIM_MESSAGE_TYPE_FILE)];
    // 设置消息子类型列表,来指定搜索某些类型的消息。不传则表示搜索所有类型的消息。
    // 这里配置为搜索子类型为1,2,3,15的消息。
    params.messageSubtypes = @[@(1),@(2),@(3),@(15)];
    // 设置搜索起点时间。
    params.searchStartTime = 1700000000000;
    // 设置搜索时段的长度。
    // 这里设置24小时。
    params.searchTimePeriod = 24 * 60 * 60 * 1000;
    // 设置搜索方向。从搜索起点时间开始,向搜索方向搜索。默认从新到旧搜索。这里配置为从旧到新搜索
    // 这里设置为从搜索起点时间开始,向时间更大的方向搜索。
    params.direction = V2NIM_SEARCH_DIRECTION_FORWARD;
    // 设置搜索结果的最大条数。默认值为20。
    params.limit = 100;
    // 翻页标记。第一次查询不用传。搜索完成后会回调nextPageToken字段。翻页查询时需要传入该字段。
    params.pageToken = nil;
    
    [[NIMSDK sharedSDK].v2MessageService searchCloudMessagesEx:params success:^(V2NIMMessageSearchResult * _Nonnull result) {
        // 搜索成功
    } failure:^(V2NIMError * _Nonnull error) {
        // 搜索失败
    }];
    
    macOS/Windows
    C++V2NIMMessageSearchExParams params;
    nstd::vector<nstd::string> keywordList;
    keywordList.push_back("keyword");
    params.keywordList = keywordList;
    params.messageLimit = 20;
    messageService.searchCloudMessagesEx(
        params,
        [](nstd::vector<V2NIMMessage> messages) {
            for (auto&& message : messages) {
                // do something
            }
        },
        [](V2NIMError error) {
            // search cloud messages failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
    const res: V2NIMMessageSearchResult = await nim.V2NIMMessageService.searchCloudMessagesEx({
        conversationId: 'cjl|1|cjl1',
        keywordList: ['周', '杰', '伦'],
        keywordMatchType: undefined,
        senderAccountIds: ['cjl1', 'cjl2'],
        messageTypes: [],
        searchStartTime: 1234567890, // timestamp
        searchTimePeriod: 7 * 24 * 60 * 60 * 1000, // 7 day
        limit: 1,
        pageToken: undefined
    });
    // todo: Success
    } catch (err) {
    // todo: error
    }
    
    Node.js/Electron
    TypeScriptconst result = await v2.messageService.searchCloudMessagesEx({
       keywordList: ['keyword1', 'keyword2'],
       messageTypes: [0, 1, 2],
       messageSubtypes: [1, 2],
       limit: 10
    })
    
    HarmonyOS
    TypeScriptconst params: V2NIMMessageSearchExParams = {
      conversationId: 'cjl|1|cjl1',
      keywordList: ['周', '杰', '伦'],
      keywordMatchType: undefined,
      senderAccountIds: ['cjl1', 'cjl2'],
      messageTypes: [],
      searchStartTime: 1234567890, // timestamp
      searchTimePeriod: 7 * 24 * 60 * 60 * 1000, // 7 day
      limit: 1,
      pageToken: undefined
    }
    const messageResult: V2NIMMessageSearchResult = await nim.messageService.searchCloudMessagesEx(params)
    

    返回参数

    Android/iOS/macOS/Windows

    无。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMMessageSearchResult[]>:云端历史消息检索结果

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMMessageSearchResult 云端历史消息检索结果。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMMessageSearchResultCallback 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    searchLocalMessages

    接口描述

    全文检索本地历史消息。

    该方法按照指定条件全局检索整个应用内的本地历史消息。

    Web 端不支持该接口。

    参数说明

    Android
    Javavoid searchLocalMessages(V2NIMMessageSearchExParams params, V2NIMSuccessCallback<V2NIMMessageSearchResult> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchExParams 本地消息检索配置参数。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 检索成功回调,返回搜索结果。
    failure V2NIMFailureCallback 检索失败回调,返回 错误码
    iOS
    Objective-C- (void)searchLocalMessages:(V2NIMMessageSearchExParams *)params
                                 success:(nullable V2NIMMessageSearchResultCallback)success
                                 failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchExParams 本地消息检索配置参数。不能为空,否则返回 191004 参数错误。
    success V2NIMMessageSearchResultCallback 检索成功回调,可自定义设置。
    failure V2NIMFailureCallback 检索失败回调,返回 错误码
    macOS/Windows
    C++virtual void searchLocalMessages(const V2NIMMessageSearchExParams& params,
        const V2NIMSuccessCallback<const V2NIMMessageSearchResult&>& success,
        const V2NIMFailureCallback& failure) = 0;
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchExParams 本地消息检索配置参数。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 检索成功回调,返回搜索结果。
    failure V2NIMFailureCallback 检索失败回调,返回 错误码
    Node.js/Electron
    TypeScriptsearchLocalMessages(params): Promise<V2NIMMessageSearchResult>
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchExParams 本地消息检索配置参数。不能为空,否则返回 191004 参数错误。
    HarmonyOS
    TypeScriptsearchLocalMessages(params: V2NIMMessageSearchExParams): Promise<V2NIMMessageSearchResult>
    
    参数名称 类型 是否必填 说明
    params V2NIMMessageSearchExParams 本地消息检索配置参数。不能为空,否则返回 191004 参数错误。

    示例代码

    Android
    Java// 构建搜索参数
    String conversationId = "xxxx"; // 会话ID,可选,为null时搜索所有会话
    List<String> keywords = Arrays.asList("重要", "会议"); // 关键字列表,最多5个
    List<String> senderAccountIds = Arrays.asList("user1", "user2"); // 发送者账号列表,最多5个
    List<V2NIMMessageType> messageTypes = Arrays.asList(
        V2NIMMessageType.V2NIM_MESSAGE_TYPE_TEXT
    ); // 消息类型过滤
    long searchStartTime = System.currentTimeMillis(); // 搜索起始时间
    long searchTimePeriod = 7 * 24 * 60 * 60 * 1000L; // 搜索时间范围(7天)
    int limit = 20; // 搜索数量限制
    
    V2NIMMessageSearchExParams params = V2NIMMessageSearchExParams.V2NIMMessageSearchExParamsBuilder.builder()
        .withConversationId(conversationId)
        .withKeywordList(keywords)
        .withKeywordMatchType(V2NIMSearchKeywordMathType.V2NIM_SEARCH_KEYWORD_MATH_TYPE_OR)
        .withSenderAccountIds(senderAccountIds)
        .withMessageTypes(messageTypes)
        .withSearchStartTime(searchStartTime)
        .withSearchTimePeriod(searchTimePeriod)
        .withLimit(limit)
        .withSearchDirection(V2NIMSearchDirection.V2NIM_SEARCH_DIRECTION_BACKWARD)
        .withSearchStrategy(V2NIMSearchStrategy.V2NIM_SEARCH_STRATEGY_FTS)
        .build();
    
    // 调用接口
    NIMClient.getService(V2NIMMessageService.class).searchLocalMessages(params,
        new V2NIMSuccessCallback<V2NIMMessageSearchResult>() {
            @Override
            public void onSuccess(V2NIMMessageSearchResult result) {
                System.out.println("Search local messages success");
                System.out.println("Total count: " + result.getCount());
                System.out.println("Has more: " + result.hasMore());
                System.out.println("Next page token: " + result.getNextPageToken());
                
                for (V2NIMMessageSearchResult.V2NIMMessageSearchItem item : result.getItems()) {
                    System.out.println("Conversation: " + item.getConversationId() + 
                                     ", Message count: " + item.getCount());
                    for (V2NIMMessage message : item.getMessages()) {
                        System.out.println("Message: " + message.getText());
                    }
                }
            }
        },
        new V2NIMFailureCallback() {
            @Override
            public void onFailure(V2NIMError error) {
                System.out.println("Search local messages failed, code: " + error.getCode() + 
                                 ", message: " + error.getDesc());
            }
        }
    );
    
    iOS
    Objective-C// 创建搜索参数对象
    V2NIMMessageSearchExParams *searchParams = [[V2NIMMessageSearchExParams alloc] init];
    // 设置搜索参数,例如:
     searchParams.conversationId = @"myAccountId|1|otherAccountId";
     searchParams.limit = 20; // 每页结果数
    
    // 调用搜索方法
    [[NIMSDK sharedSDK].v2MessageService searchLocalMessages:searchParams success:^(V2NIMMessageSearchResult * _Nonnull result) {
        // search success
    } failure:^(V2NIMError * _Nonnull error) {
        // search failure
    }];
    
    macOS/Windows
    C++V2NIMMessageSearchExParams params;
    params.keywordList.push_back("keyword");
    params.messageLimit = 20;
    messageService.searchLocalMessages(
        params,
        [](const V2NIMMessageSearchResult& result) {
            for (auto&& message : result.items) {
                // do something
            }
        },
        [](const V2NIMError& error) {
            // search local messages failed, handle error
        });
    
    Node.js/Electron
    TypeScriptconst result = await v2.messageService.searchLocalMessages({
       keywordList: ['keyword1', 'keyword2'],
    })
    
    HarmonyOS
    TypeScriptconst params: V2NIMMessageSearchExParams = {
      conversationId: 'cjl|1|cjl1',
      keywordList: ['周', '杰', '伦'],
      keywordMatchType: undefined,
      senderAccountIds: ['cjl1', 'cjl2'],
      messageTypes: [],
      searchStartTime: 1234567890, // timestamp
      searchTimePeriod: 7 * 24 * 60 * 60 * 1000, // 7 day
      limit: 1,
      pageToken: undefined
    }
    const messageResult: V2NIMMessageSearchResult = await nim.messageService.searchLocalMessages(params)
    

    返回参数

    Android/iOS/macOS/Windows

    无。

    Node.js/Electron/HarmonyOS

    Promise<V2NIMMessageSearchResult[]> 搜索本地消息结果

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMMessageSearchResult 搜索本地消息结果
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMMessageSearchResultCallback 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Node.js/Electron/HarmonyOS

    无。

    getThreadMessageList

    接口描述

    分页获取云端 Thread 历史消息列表。

    该方法用于根据 Thread 根消息分页获取所有 Thread 子消息。

    为避免触发请求频控,若云端会话数据同步已完成(收到 onSyncFinished),建议您改用 getLocalThreadMessageList 方法获取本地 Thread 历史消息列表。

    参数说明

    Android
    Javavoid getThreadMessageList(V2NIMThreadMessageListOption threadMessageListOption, V2NIMSuccessCallback<V2NIMThreadMessageListResult> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    threadMessageListOption V2NIMThreadMessageListOption Thread 消息查询配置项,支持根据 Thread 根消息的参考信息分页查询子消息。
    success V2NIMSuccessCallback 查询成功回调,返回 V2NIMThreadMessageListResult 列表。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    iOS
    Objective-C- (void)getThreadMessageList:(V2NIMThreadMessageListOption *)threadMessageListOption
                         success:(nullable V2NIMGetThreadMessageListSuccess)success
                         failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    threadMessageListOption V2NIMThreadMessageListOption Thread 消息查询配置项,支持根据 Thread 根消息的参考信息分页查询子消息。
    success V2NIMGetThreadMessageListSuccess 查询成功回调,可自定义设置。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    macOS/Windows
    C++virtual void v2::V2NIMMessageService::getThreadMessageList(V2NIMThreadMessageListOption threadMessageListOption,
                                                               V2NIMSuccessCallback<V2NIMThreadMessageListResult> success,
                                                               V2NIMFailureCallback failure
    )
    
    参数名称 类型 是否必填 说明
    threadMessageListOption V2NIMThreadMessageListOption Thread 消息查询配置项,支持根据 Thread 根消息的参考信息分页查询子消息。
    success V2NIMSuccessCallback 查询成功回调,返回 V2NIMThreadMessageListResult 列表。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptgetThreadMessageList(option: V2NIMThreadMessageListOption): Promise<V2NIMThreadMessageListResul
    
    参数名称 类型 是否必填 说明
    option V2NIMThreadMessageListOption Thread 消息查询配置项,支持根据 Thread 根消息的参考信息分页查询子消息。
    Node.js/Electron
    TypeScriptgetThreadMessageList(threadMessageListOption): Promise<V2NIMThreadMessageListResult>
    
    参数名称 类型 是否必填 说明
    threadMessageListOption V2NIMThreadMessageListOption Thread 消息查询配置项,支持根据 Thread 根消息的参考信息分页查询子消息。
    HarmonyOS
    TypeScriptgetThreadMessageList(option: V2NIMThreadMessageListOption): Promise<V2NIMThreadMessageListResult>
    
    参数名称 类型 是否必填 说明
    option V2NIMThreadMessageListOption Thread 消息查询配置项,支持根据 Thread 根消息的参考信息分页查询子消息。

    示例代码

    Android
    JavaV2NIMThreadMessageListOption option = new V2NIMThreadMessageListOption();
    // messageRefer field is mandatory and is used to determine a root message. It can be filled directly with a message body or a V2NIMMessageRefer object can be constructed based on the message body's fields.
    option.setMessageRefer(rootMessageRefer);
    // The following fields are optional
    // beginTime and endTime define the time range of the query. Fill with 0 to indicate no restriction.
    option.setBeginTime(0L);
    option.setEndTime(0L);
    // For the first page, leave this field blank. When paging, fill in the serverId of the message closest to the target page's current page. For example, anchorMessage represents the earliest message on the current page, allowing the current request to page backward (earlier events). Query 20 messages earlier than anchorMessage (excluding itself).
    option.setExcludeMessageServerId("123456");
    // Maximum number of messages to be retrieved
    option.setLimit(20);
    // Query direction, default is V2NIM_QUERY_DIRECTION_DESC
    option.setDirection(V2NIMQueryDirection.V2NIM_QUERY_DIRECTION_DESC);
    
    NIMClient.getService(V2NIMMessageService.class).getThreadMessageList(option, v2NIMThreadMessageListResult -> {
        //Query successful
    }, error -> {
        //Query failed
    });
    
    iOS
    Objective-CV2NIMThreadMessageListOption *option = [[V2NIMThreadMessageListOption alloc] init];
    // messageRefer 字段必填,此字段用于确定一条根消息。可以直接填消息体,也可以根据消息体的字段,构造一个 V2NIMMessageRefer 对象
    option.messageRefer = rootMessage;
    //下面的字段均为可选字段
    // beginTime 和 endTime 划定了查询的时间范围,填 0 表示不做限制。
    option.beginTime = 0;
    option.endTime = 1715331571.927; //anchorMessage.createTime
    // 第一页不填,翻页时填写距离目标页最近的当前页的消息的 serverId。
    // 如 anchorMessage 表示当前页中最早的一条消息,则当前请求可以实现向前(事件更早)翻页。查询比 anchorMessage 早(不包括自己)的 20 条消息
    option.excludeMessageServerId = @"123456"; //anchorMessage.messageServerId
    // 查询出的消息条数上限
    option.limit = 20;
    // 查询方向。DESC 为按时间戳从大到小查询
    option.direction = V2NIM_QUERY_DIRECTION_DESC;
    
    // 调用接口查询消息
    [[NIMSDK sharedSDK].v2MessageService getThreadMessageList:option success:^(V2NIMThreadMessageListResult *result) {
            // 查询成功
        } failure:^(V2NIMError *error) {
            // 查询失败
        }];
    
    macOS/Windows
    C++V2NIMTheadMessageListOption threadMessageListOption;
    // ...
    messageService.getThreadMessageList(
        threadMessageListOption,
        [](V2NIMThreadMessageListResult response) {
            // do something
        },
        [](V2NIMError error) {
            // get message list by refers failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
        const result = await nim.V2NIMMessageService.getThreadMessageList({
          messageRefer: {
              "senderId": "account1",
              "receiverId": "account2",
              "messageClientId": "21a7e3d43a7afdf52e11f61d9753f99c",
              "messageServerId": "231689624",
              "createTime": 1715222453441,
              "conversationType": 1,
              "conversationId": "account1|1|account2"
          },
          "limit": 50
      })
    } catch(err) {
        console.error('getAddApplicationUnreadCount Error:', err)
    }
    
    Node.js/Electron
    TypeScripttry {
      const result = await v2.messageService.getThreadMessageList({
          messageRefer: {
              "senderId": "account1",
              "receiverId": "account2",
              "messageClientId": "21a7e3d43a7afdf52e11f61d9753f99c",
              "messageServerId": "231689624",
              "createTime": 1715222453441,
              "conversationType": 1,
              "conversationId": "account1|1|account2"
          },
          "limit": 50
      })
    } catch(err) {
        console.error('getAddApplicationUnreadCount Error:', err)
    }
    
    HarmonyOS
    TypeScripttry {
        const result = await nim.messageService.getThreadMessageList({
          messageRefer: {
              "senderId": "account1",
              "receiverId": "account2",
              "messageClientId": "21a7e3d43a7afdf52e11f61d9753f99c",
              "messageServerId": "231689624",
              "createTime": 1715222453441,
              "conversationType": 1,
              "conversationId": "account1|1|account2"
          },
          "limit": 50
      })
    } catch(err) {
        console.error('getAddApplicationUnreadCount Error:', err)
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<V2NIMThreadMessageListResult>:Thread 消息列表

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMThreadMessageListResult 列表。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMGetThreadMessageListSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    getLocalThreadMessageList

    接口描述

    获取本地 Thread 历史消息列表。

    该方法用于根据 Thread 根消息获取所有本地 Thread 子消息。

    Web 端不支持该接口。

    参数说明

    Android
    Javavoid getLocalThreadMessageList(V2NIMMessageRefer messageRefer, V2NIMSuccessCallback<V2NIMThreadMessageListResult> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer Thread 消息参考信息,支持根据 Thread 根消息的参考信息查询本地子消息。
    success V2NIMSuccessCallback 查询成功回调,返回 V2NIMThreadMessageListResult 列表。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    iOS
    Objective-C- (void)getLocalThreadMessageList:(V2NIMMessageRefer *)messageRefer
                              success:(nullable V2NIMGetLocalThreadMessageListSuccess)success
                              failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer Thread 消息参考信息,支持根据 Thread 根消息的参考信息查询本地子消息。
    success V2NIMGetLocalThreadMessageListSuccess 查询成功回调,可自定义设置。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    macOS/Windows
    C++virtual void v2::V2NIMMessageService::getLocalThreadMessageList(V2NIMMessageRefer messageRefer,
                                                                    V2NIMSuccessCallback<V2NIMThreadMessageListResult> success,
                                                                    V2NIMFailureCallback failure)
    
    参数名称 类型 是否必填 说明
    messageRefer V2NIMMessageRefer Thread 消息参考信息,支持根据 Thread 根消息的参考信息查询本地子消息。
    success V2NIMSuccessCallback 查询成功回调,返回 V2NIMThreadMessageListResult 列表。
    failure V2NIMFailureCallback 查询失败回调,返回 错误码
    Node.js/Electron
    TypeScriptgetLocalThreadMessageList(messageRefer): Promise<V2NIMThreadMessageListResult>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessageRefer Thread 消息参考信息,支持根据 Thread 根消息的参考信息查询本地子消息。
    HarmonyOS
    TypeScriptgetLocalThreadMessageList(message: V2NIMMessageRefer): Promise<V2NIMThreadMessageListResult>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessageRefer Thread 消息参考信息,支持根据 Thread 根消息的参考信息查询本地子消息。

    示例代码

    Android
    Java// messageRefer 字段用于确定一条根消息。可以直接填消息体,也可以根据消息体的字段,构造一个 V2NIMMessageRefer 对象
    V2NIMMessageRefer messageRefer = rootMessage;
    NIMClient.getService(V2NIMMessageService.class).getLocalThreadMessageList(messageRefer, v2NIMThreadMessageListResult -> {
        //Query successful
    }, error -> {
        //Query failed
    });
    
    iOS
    Objective-C// messageRefer 字段用于确定一条根消息。可以直接填消息体,也可以根据消息体的字段,构造一个 V2NIMMessageRefer 对象
    V2NIMMessageRefer *messageRefer = rootMessage;
    // 调用接口查询消息
    [[NIMSDK sharedSDK].v2MessageService getLocalThreadMessageList:messageRefer success:^(V2NIMThreadMessageListResult *result) {
        // 查询成功
    } failure:^(V2NIMError *error) {
        // 查询失败
    }];
    
    macOS/Windows
    C++V2NIMMessageRefer messageRefer;
    // ...
    messageService.getLocalThreadMessageList(
        messageRefer,
        [](V2NIMThreadMessageListResult response) {
            // do something
        },
        [](V2NIMError error) {
            // get message list by refers failed, handle error
        });
    
    Node.js/Electron
    TypeScriptconst messageRefer = {
              "senderId": "account1",
              "receiverId": "account2",
              "messageClientId": "21a7e3d43a7afdf52e11f61d9753f99c",
              "messageServerId": "231689624",
              "createTime": 1715222453441,
              "conversationType": 1,
              "conversationId": "account1|1|account2"
          } as V2NIMMessageRefer
    
    const result = await v2.messageService.getLocalThreadMessageList(messageRefer)
    
    HarmonyOS
    TypeScriptconst messageRefer = {
              "senderId": "account1",
              "receiverId": "account2",
              "messageClientId": "21a7e3d43a7afdf52e11f61d9753f99c",
              "messageServerId": "231689624",
              "createTime": 1715222453441,
              "conversationType": 1,
              "conversationId": "account1|1|account2"
          } as V2NIMMessageRefer
    
    const result = await nim.messageService.getLocalThreadMessageList(messageRefer)
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Node.js/Electron/HarmonyOS

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMThreadMessageListResult 列表。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 V2NIMGetLocalThreadMessageListSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Node.js/Electron/HarmonyOS

    无。

    registerCustomAttachmentParser

    接口描述

    注册自定义消息附件解析器,解析消息类型为 100 的消息附件。

    • 可以注册多个解析器,后注册的优先级高,优先派发, 一旦被处理,则不继续派发。
    • 如果同一个类型多个解析均可以解析,则优先级高的先解析, 解析后直接返回。
    • 按需注册,若不再需要,请及时反注册。
    • 该方法为同步。

    参数说明

    Android
    Javavoid registerCustomAttachmentParser(V2NIMMessageCustomAttachmentParser parser);
    
    参数名称 类型 是否必填 说明
    parser V2NIMMessageCustomAttachmentParser 注册的自定义消息附件解析器。
    iOS
    Objective-C- (void)registerCustomAttachmentParser:(id<V2NIMMessageCustomAttachmentParser>)parser;
    
    参数名称 类型 是否必填 说明
    parser V2NIMMessageCustomAttachmentParser 注册的自定义消息附件解析器。
    macOS/Windows
    C++virtual void registerCustomAttachmentParser(const nstd::shared_ptr<V2NIMMessageCustomAttachmentParser>& parser) = 0;
    
    参数名称 类型 是否必填 说明
    parser V2NIMMessageCustomAttachmentParser 注册的自定义消息附件解析器。
    Web/uni-app/小程序
    TypescriptregisterCustomAttachmentParser(parser: V2NIMMessageCustomAttachmentParser): void
    
    参数名称 类型 是否必填 说明
    parser V2NIMMessageCustomAttachmentParser 注册的自定义消息附件解析器。
    HarmonyOS
    TypescriptregisterCustomAttachmentParser(parser: V2NIMMessageCustomAttachmentParser): void
    
    参数名称 类型 是否必填 说明
    parser V2NIMMessageCustomAttachmentParser 注册的自定义消息附件解析器。

    示例代码

    Android
    JavaV2NIMMessageCustomAttachmentParser parser = new V2NIMMessageCustomAttachmentParser() {
      @Override
      public V2NIMMessageCustomAttachment parse(int subType, String attach) {
       V2NIMMessageCustomAttachment attachment = null;
       if(subType == 1){
        attachment = new V2Test1CustomAttachment();
       }
       else if (subType == 2) {
        attachment = new V2Test2CustomAttachment();
       }
       if(attachment != null){
        attachment.parse(attach);
       }
       return attachment;
      }
    };
    NIMClient.getService(V2NIMMessageService.class).registerCustomAttachmentParser(parser);
    
    iOS
    Objective-CMyParser *parser = [[MyParser alloc] init];
    [[NIMSDK sharedSDK].v2MessageService registerCustomAttachmentParser:parser];
    
    macOS/Windows
    C++struct V2NIMMessageTempCustomAttachmentParser : public V2NIMMessageCustomAttachmentParser {
        nstd::shared_ptr<V2NIMMessageAttachment> parse(const nstd::string& attach, const int32_t& subType) override {
            // parse custom attachment
        }
    }
    V2NIMMessageTempCustomAttachmentParser parser;
    messageService.registerCustomAttachmentParser(parser);
    
    Web/uni-app/小程序
    Typescriptconst parser = function (subType, raw) {
      const rawObj = JSON.parse(raw);
      rawObj.subType = subType;
      return rawObj;
    }
    nim.V2NIMMessageService.registerCustomAttachmentParser(parser)
    
    HarmonyOS
    Typescriptconst parser = (subType, raw) => {
      const rawObj = JSON.parse(raw);
      rawObj.subType = subType;
      return rawObj;
    }
    nim.messageService.registerCustomAttachmentParser(parser)
    

    返回参数

    无。

    unregisterCustomAttachmentParser

    接口描述

    反注册自定义消息附件解析器。

    该方法为同步。

    参数说明

    Android
    Javavoid unregisterCustomAttachmentParser(V2NIMMessageCustomAttachmentParser parser);
    
    参数名称 类型 是否必填 说明
    parser V2NIMMessageCustomAttachmentParser 反注册的自定义消息附件解析器
    iOS
    Objective-C- (void)unregisterCustomAttachmentParser:(id<V2NIMMessageCustomAttachmentParser>)parser;
    
    参数名称 类型 是否必填 说明
    parser V2NIMMessageCustomAttachmentParser 反注册的自定义消息附件解析器
    macOS/Windows
    C++virtual void unRegisterCustomAttachmentParser(const nstd::shared_ptr<V2NIMMessageCustomAttachmentParser>& parser) = 0;
    
    参数名称 类型 是否必填 说明
    parser V2NIMMessageCustomAttachmentParser 反注册的自定义消息附件解析器
    Web/uni-app/小程序
    TypescriptunregisterCustomAttachmentParser(parser: V2NIMMessageCustomAttachmentParser): void
    
    参数名称 类型 是否必填 说明
    parser V2NIMMessageCustomAttachmentParser 反注册的自定义消息附件解析器
    HarmonyOS
    TypescriptunregisterCustomAttachmentParser(parser: V2NIMMessageCustomAttachmentParser): void
    
    参数名称 类型 是否必填 说明
    parser V2NIMMessageCustomAttachmentParser 反注册的自定义消息附件解析器

    示例代码

    Android
    JavaNIMClient.getService(V2NIMMessageService.class).unregisterCustomAttachmentParser(parser);
    
    iOS
    Objective-C[[NIMSDK sharedSDK].v2MessageService unregisterCustomAttachmentParser:parser];
    
    macOS/Windows
    C++struct V2NIMMessageTempCustomAttachmentParser : public V2NIMMessageCustomAttachmentParser {
        nstd::shared_ptr<V2NIMMessageAttachment> parse(const nstd::string& attach, const int32_t& subType) override {
            // parse custom attachment
        }
    }
    V2NIMMessageTempCustomAttachmentParser parser;
    messageService.registerCustomAttachmentParser(parser);
    ...
    messageService.unRegisterCustomAttachmentParser(parser);
    
    Web/uni-app/小程序
    Typescriptconst parser = function (subType, raw) {
      const rawObj = JSON.parse(raw);
      rawObj.subType = subType;
      return rawObj;
    }
    nim.V2NIMMessageService.registerCustomAttachmentParser(parser)
    // 备注: 注册和反注册须传同一个函数.
    nim.V2NIMMessageService.unregisterCustomAttachmentParser(parser)
    
    HarmonyOS
    Typescriptconst parser = (subType, raw) => {
      const rawObj = JSON.parse(raw);
      rawObj.subType = subType;
      return rawObj;
    }
    nim.messageService.registerCustomAttachmentParser(parser)
    // 备注: 注册和反注册须传同一个函数.
    nim.messageService.unregisterCustomAttachmentParser(parser)
    

    返回参数

    无。

    messageSerialization

    接口描述

    V2NIMMessage 序列化为字符串,调用成功后返回序列化后的字符串。

    参数说明

    Android
    Javapublic static String messageSerialization(V2NIMMessage message) {
        if(message == null) {
            return null;
        }
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要转换的消息对象。
    iOS
    Objective-C@interface V2NIMMessageConverter : NSObject
    + (NSString * _Nullable)messageSerialization:(V2NIMMessage *)message;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要转换的消息对象。
    macOS/Windows
    C++static nstd::optional<nstd::string> messageSerialization(const V2NIMMessage& message);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要转换的消息对象。
    Web/uni-app/小程序
    TypescriptmessageSerialization: (message: V2NIMMessage) => string | null
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要转换的消息对象。
    Node.js/Electron
    TypescriptmessageSerialization(message): null | string
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要转换的消息对象。
    HarmonyOS
    TypescriptmessageSerialization: ((message: V2NIMMessage) => string)
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要转换的消息对象。

    示例代码

    Android
    JavaString messageString = V2NIMMessageConverter.messageSerialization(message);
    
    iOS
    Objective-CNSString *messageString = [V2NIMMessageConverter messageSerialization:message];
    
    macOS/Windows
    C++auto messageString = V2NIMMessageConverter::messageSerialization(message);
    
    Web/uni-app/小程序
    Typescriptconst messageString = nim.V2NIMMessageConverter.messageSerialization(message)
    
    Node.js/Electron
    Typescriptconst jsonString = v2.messageConverter.messageSerialization(message)
    
    HarmonyOS
    Typescriptconst messageString = nim.messageConverter.messageSerialization(message)
    

    返回参数

    消息字符串。

    messageDeserialization

    接口描述

    将消息字符串反序列为 V2NIMMessage 对象,调用成功后返回反序列化后的对象。

    参数说明

    Android
    Javapublic static V2NIMMessage messageDeserialization(String msg){
        if(TextUtils.isEmpty(msg)){
            return null;
        }
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要转换的消息字符串。
    iOS
    Objective-C@interface V2NIMMessageConverter : NSObject
    + (V2NIMMessage * _Nullable)messageDeserialization:(NSString *)msg;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要转换的消息字符串。
    macOS/Windows
    C++static nstd::optional<V2NIMMessage> messageDeserialization(const nstd::string& messageString);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要转换的消息字符串。
    Web/uni-app/小程序
    TypescriptmessageDeserialization: (message: string) => V2NIMMessage | null
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要转换的消息字符串。
    Node.js/Electron
    TypescriptmessageDeserialization(message): null | V2NIMMessage
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要转换的消息字符串。
    HarmonyOS
    TypescriptmessageDeserialization: ((message: string) => V2NIMMessage)
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要转换的消息字符串。

    示例代码

    Android
    JavaV2NIMMessage message = V2NIMMessageConverter.messageDeserialization(messageString);
    
    iOS
    Objective-CV2NIMMessage *message = [V2NIMMessageConverter messageDeserialization:messageString];
    
    macOS/Windows
    C++auto message = V2NIMMessageConverter::messageDeserialization(messageString);
    
    Web/uni-app/小程序
    Typescriptconst message = nim.V2NIMMessageConverter.messageDeserialization(messageString)
    
    Node.js/Electron
    Typescriptconst message = v2.messageConverter.messageDeserialization(jsonString)
    
    HarmonyOS
    Typescriptconst message = nim.messageConverter.messageDeserialization(messageString)
    

    返回参数

    V2NIMMessage 消息对象

    stopAIStreamMessage

    接口描述

    打断 AI 数字人消息的流式输出。可选择直接停止输出,也可以选择撤回/更新 AI 数字人消息。

    用户可随时打断正在输出的 AI 回复,支持以下三种处理方式:

    • 停止输出:以当前输出内容为最终消息。
    • 撤回:直接撤回整条消息。
    • 更新:用自定义文本替换当前消息。

    参数说明

    Android
    Javavoid stopAIStreamMessage(V2NIMMessage message, V2NIMMessageAIStreamStopParams params, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要打断的流式消息。
    params V2NIMMessageAIStreamStopParams 打断输出配置参数,需要确定打断输出的操作类型。若需要更新,请设置更新文案。
    不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 操作成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 操作失败回调,返回 错误码
    iOS
    Objective-C- (void)stopAIStreamMessage:(V2NIMMessage *)message
                         params:(V2NIMMessageAIStreamStopParams *)params
                        success:(nullable V2NIMSuccessCallback)success
                        failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要打断的流式消息。
    params V2NIMMessageAIStreamStopParams 打断输出配置参数,需要确定打断输出的操作类型。若需要更新,请设置更新文案。
    不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 检索成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 检索失败回调,返回 错误码
    macOS/Windows
    C++virtual void stopAIStreamMessage(const V2NIMMessage& message,
        const V2NIMMessageAIStreamStopParams& params,
        const V2NIMSuccessCallback<void>& success,
        const V2NIMFailureCallback& failure) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要打断的流式消息。
    params V2NIMMessageAIStreamStopParams 打断输出配置参数,需要确定打断输出的操作类型。若需要更新,请设置更新文案。
    不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 检索成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 检索失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptstopAIStreamMessage(message: V2NIMMessage, params: V2NIMMessageAIStreamStopParams): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要打断的流式消息。
    params V2NIMMessageAIStreamStopParams 打断输出配置参数,需要确定打断输出的操作类型。若需要更新,请设置更新文案。
    不能为空,否则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptstopAIStreamMessage(message, params): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要打断的流式消息。
    params V2NIMMessageAIStreamStopParams 打断输出配置参数,需要确定打断输出的操作类型。若需要更新,请设置更新文案。
    不能为空,否则返回 191004 参数错误。
    HarmonyOS
    TypeScriptstopAIStreamMessage(message, params): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要打断的流式消息。
    params V2NIMMessageAIStreamStopParams 打断输出配置参数,需要确定打断输出的操作类型。若需要更新,请设置更新文案。
    不能为空,否则返回 191004 参数错误。

    示例代码

    Android
    JavaV2NIMMessageAIStreamStopParams params = new V2NIMMessageAIStreamStopParams();
    // 支持保持现状、撤回或者更新。这里配置为更新。
    params.setOperationType(V2NIMMessageAIStreamStopOpType.V2NIM_MESSAGE_AI_STREAM_STOP_OP_UPDATE);
    // operationType 为更新时必填 updateContent,且仅在 operationType 为更新时有效。
    params.setUpdateContent("new content");
    
    NIMSDK.sharedSDK().getV2MessageService().stopAIStreamMessage(message,
        params,
        new RequestCallback<Void>() {
            @Override
            public void onSuccess(Void result) {
                // Stop AI success
            }
            
            @Override
            public void onFailed(int code) {
                // Stop AI failed
            }
            
            @Override
            public void onException(Throwable exception) {
                // Exception occurred
            }
        });
    
    iOS
    Objective-CV2NIMMessageAIStreamStopParams *params = [[V2NIMMessageAIStreamStopParams alloc] init];
    // 支持保持现状、撤回或者更新。这里配置为更新。
    params.operationType = V2NIM_MESSAGE_AI_STREAM_STOP_OP_UPDATE;
    // operationType为更新时必填updateContent,且仅在operationType为更新时有效。
    params.updateContent = @"new content";
    [[NIMSDK sharedSDK].v2MessageService stopAIStreamMessage:message
                                                 params:params success:^{
        // Stop AI success
    } failure:^(V2NIMError * _Nonnull error) {
        // Stop AI failed
    }];
    
    macOS/Windows
    C++V2NIMMessageAIStreamStopParams stop_parameter;
    stop_parameter.operationType = V2NIM_MESSAGE_AI_STREAM_STOP_OP_DEFAULT;
    messageService.stopAIStreamMessage(
       message,
       stop_parameter,
       [](void) {
            // stop AI stream message succeeded
       },
       [](V2NIMError error) {
            // stop AI stream message failed, handle error
       });
    
    Web/uni-app/小程序
    TypeScriptawait nim.V2NIMMessageService.stopAIStreamMessage(message, {
       operationType: 0
    })
    
    Node.js/Electron
    TypeScriptawait v2.messageService.stopAIStreamMessage(message, {
       operationType: 0
    })
    
    HarmonyOS
    TypeScriptconst stopParams: V2NIMMessageAIStreamStopParams = {
      operationType: this.stopOperationType,
      updateContent: this.stopUpdateContent
    }
    const messageService = nim.messageService! // Demo启用 message 模块,messageService 不为空
    await messageService.stopAIStreamMessage(stopMessage, stopParams)
    

    返回参数

    Android/iOS/macOS/Windows

    无。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 `` 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    regenAIMessage

    接口描述

    重新输出 AI 数字人流式消息。

    支持以下两种方式:

    • 更新原消息:新内容覆盖原消息(限 3 天内消息)。
    • 产生新消息:创建全新消息来展示重新输出的内容。

    若正处于流式输出过程中,则不允许调用该方法重新输出。

    参数说明

    Android
    Javavoid regenAIMessage(V2NIMMessage message, V2NIMMessageAIRegenParams params, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要重新输出的流式消息。
    params V2NIMMessageAIRegenParams 重新输出配置参数,需要确定重新输出的操作类型。
    不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 操作成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 操作失败回调,返回 错误码
    iOS
    Objective-C- (void)regenAIMessage:(V2NIMMessage *)message
                    params:(V2NIMMessageAIRegenParams *)params
                   success:(nullable V2NIMSuccessCallback)success
                   failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要重新输出的流式消息。
    params V2NIMMessageAIRegenParams 重新输出配置参数,需要确定重新输出的操作类型。
    不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 检索成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 检索失败回调,返回 错误码
    macOS/Windows
    C++virtual void regenAIMessage(const V2NIMMessage& message,
        const V2NIMMessageAIRegenParams& params,
        const V2NIMSuccessCallback<void>& success,
        const V2NIMFailureCallback& failure) = 0;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要重新输出的流式消息。
    params V2NIMMessageAIRegenParams 重新输出配置参数,需要确定重新输出的操作类型。
    不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 检索成功回调,返回 V2NIMMessage 列表。
    failure V2NIMFailureCallback 检索失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptregenAIMessage(message: V2NIMMessage, params: V2NIMMessageAIRegenParams): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要重新输出的流式消息。
    params V2NIMMessageAIRegenParams 重新输出配置参数,需要确定重新输出的操作类型。
    不能为空,否则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptregenAIMessage(message, params): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要重新输出的流式消息。
    params V2NIMMessageAIRegenParams 重新输出配置参数,需要确定重新输出的操作类型。
    不能为空,否则返回 191004 参数错误。
    HarmonyOS
    TypeScriptregenAIMessage(message, params): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 需要重新输出的流式消息。
    params V2NIMMessageAIRegenParams 重新输出配置参数,需要确定重新输出的操作类型。
    不能为空,否则返回 191004 参数错误。

    示例代码

    Android
    Java// 配置更新参数,可以配置为更新消息或者生成一条新的消息
    V2NIMMessageAIRegenParams params = new V2NIMMessageAIRegenParams(V2NIMMessageAIRegenOpType.V2NIM_MESSAGE_AI_REGEN_OP_UPDATE);
    
    NIMSDK.sharedSDK().getV2MessageService().regenAIMessage(message,
        params,
        new RequestCallback<Void>() {
            @Override
            public void onSuccess(Void result) {
                // Regen AI success
            }
            
            @Override
            public void onFailed(int code) {
                // Regen AI failed
            }
            
            @Override
            public void onException(Throwable exception) {
                // Exception occurred
            }
        });
    
    iOS
    Objective-C// 配置更新参数,可以配置为更新消息或者生成一条新的消息
    V2NIMMessageAIRegenParams *params = [[V2NIMMessageAIRegenParams alloc] initWith: V2NIM_MESSAGE_AI_REGEN_OP_UPDATE];
    [[NIMSDK sharedSDK].v2MessageService regenAIMessage:message
                                            params:params
                                                success:^{
        // Regen AI success
    } failure:^(V2NIMError * _Nonnull error) {
       // Regen AI failed
    }];
    
    macOS/Windows
    C++V2NIMMessageAIRegenParams regen_parameter;
    regen_parameter.operationType = V2NIM_MESSAGE_AI_REGEN_OP_UPDATE;
    messageService.regenAIMessage(
       message,
       regen_parameter,
       [](void) {
            // regen AI message succeeded
       },
       [](V2NIMError error) {
            // regen AI message failed, handle error
       });
    
    Web/uni-app/小程序
    TypeScriptawait nim.V2NIMMessageService.regenAIMessage(message, {
      operationType: 0
    })
    
    Node.js/Electron
    TypeScriptawait v2.messageService.regenAIMessage(message, {
      operationType: 0
    })
    
    HarmonyOS
    TypeScriptconst regenMessage: V2NIMMessage = this.sentMessagesMap.get(this.regenMessageClientId)
    const regenParams: V2NIMMessageAIRegenParams = {
      operationType: this.regenOperationType,
    }
    const messageService = nim.messageService! // Demo启用 message 模块,messageService 不为空
    await messageService.regenAIMessage(regenMessage, regenParams)
    

    返回参数

    Android/iOS/macOS/Windows

    无。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    iOS
    • 请求成功,返回 `` 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    setMessageFilter

    接口描述

    在接收消息时可设置统一的消息过滤器,实现消息过滤。

    云端会话的最后一条消息不受该过滤器控制。

    参数说明

    Android
    Javavoid setMessageFilter(V2NIMMessageFilter filter);
    
    参数名称 类型 是否必填 说明
    filter V2NIMMessageFilter 过滤器对象,为空表示移除过滤器。
    macOS/Windows
    C++virtual void setMessageFilter(const nstd::optional<V2NIMMessageFilter>& filter) = 0;
    
    参数名称 类型 是否必填 说明
    filter V2NIMMessageFilter 过滤器对象,为空表示移除过滤器。
    Web/uni-app/小程序
    TypeScriptsetMessageFilter(filter: null | void | V2NIMMessageFilter): void
    
    参数名称 类型 是否必填 说明
    filter V2NIMMessageFilter 过滤器对象,为空表示移除过滤器。
    Node.js/Electron
    TypeScriptsetMessageFilter(filter): void
    
    参数名称 类型 是否必填 说明
    filter V2NIMMessageFilter 过滤器对象,为空表示移除过滤器。

    示例代码

    Android
    Java// 创建消息过滤器实现类
    V2NIMMessageFilter messageFilter = new V2NIMMessageFilter() {
        @Override
        public boolean shouldIgnoreMessage(V2NIMMessage message) {
            // 根据消息内容进行过滤
            // 例如:过滤掉所有文本消息
            if (message.getMsgType() == V2NIMMessage.V2NIM_MESSAGE_TYPE_TEXT) {
                return true; // 返回 true 表示忽略该消息
            }
            
            // 例如:过滤掉来自特定发送者的消息
            if ("blockedUser123".equals(message.getFromAccount())) {
                return true;
            }
            
            // 例如:过滤掉特定群组的消息
            if (message.getConversationType() == V2NIMConversation.V2NIM_CONVERSATION_TYPE_GROUP 
                && "groupId123".equals(message.getTargetId())) {
                return true;
            }
            
            // 不过滤其他消息
            return false;
        }
    };
    
    // 设置消息过滤器
    NIMClient.getService(V2NIMMessageService.class).setMessageFilter(messageFilter);
    
    // 移除消息过滤器
    // NIMClient.getService(V2NIMMessageService.class).setMessageFilter(null);
    
    macOS/Windows
    C++V2NIMMessageFilter filter;
    filter.shouldIgnore = [](const V2NIMMessage& message) {
        if (message.messageClientId == 'xxx')
            return true;
        return false;
    }
    messageService.setMessageFilter(filter);
    
    Web/uni-app/小程序
    TypeScript// 创建消息过滤器
    const messageFilter = {
      shouldIgnoreMessage(message) {
        // 根据消息内容进行过滤
        // 例如:过滤掉所有文本消息
        if (message.msgType === V2NIMMessageType.text) {
          return true; // 返回 true 表示忽略该消息
        }
        
        // 例如:过滤掉来自特定发送者的消息
        if (message.fromAccount === 'blockedUser123') {
          return true;
        }
        
        // 例如:过滤掉特定群组的消息
        if (message.conversationType === V2NIMConversationType.group 
            && message.targetId === 'groupId123') {
          return true;
        }
        
        // 不过滤其他消息
        return false;
      }
    };
    
    // 设置消息过滤器
    nim.V2NIMMessageService.setMessageFilter(messageFilter);
    
    // 移除消息过滤器
    // nim.V2NIMMessageService.setMessageFilter(null);
    
    Node.js/Electron
    TypeScriptv2.messageService.setMessageFilter({
       shouldIgnore: (message) => {
           // 过滤消息
       }
    

    返回参数

    Android/macOS/Windows

    无。

    Web/uni-app/小程序/Node.js/Electron

    Promise<void>

    相关回调

    无。

    clearRoamingMessage

    接口描述

    清空指定的漫游会话消息,建议单次最多删除 50 个漫游会话。

    清空的漫游会话越多,请求耗时越长,因此若数据量打,建议分次操作。

    参数说明

    Android
    Javavoid clearRoamingMessage(List<String> conversationIds, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    conversationIds List<String> 需要清空的漫游会话 ID 列表。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 清空成功回调。
    failure V2NIMFailureCallback 清空失败回调,返回 错误码
    iOS
    Objective-C- (void)clearRoamingMessage:(NSArray *)conversationIds
                        success:(nullable V2NIMSuccessCallback)success
                        failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    conversationIds NSArray * 需要清空的漫游会话 ID 列表。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 清空成功回调。
    failure V2NIMFailureCallback 清空失败回调,返回 错误码
    macOS/Windows
    C++virtual void clearRoamingMessage(const nstd::vector<nstd::string>& conversationIds,
        const V2NIMSuccessCallback<void>& success,
        const V2NIMFailureCallback& failure) = 0;
    
    参数名称 类型 是否必填 说明
    conversationIds nstd::vector<nstd::string> 需要清空的漫游会话 ID 列表。不能为空,否则返回 191004 参数错误。
    success V2NIMSuccessCallback 清空成功回调。
    failure V2NIMFailureCallback 清空失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptclearRoamingMessage(conversationIds: string[]): Promise<void>
    
    参数名称 类型 是否必填 说明
    conversationIds string[] 需要清空的漫游会话 ID 列表。不能为空,否则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptclearRoamingMessage(conversationIds: string[]): Promise<void>
    
    参数名称 类型 是否必填 说明
    conversationIds string[] 需要清空的漫游会话 ID 列表。不能为空,否则返回 191004 参数错误。
    HarmonyOS
    TypeScriptclearRoamingMessage(conversationIds: string[]): Promise<void>
    
    参数名称 类型 是否必填 说明
    conversationIds string[] 需要清空的漫游会话 ID 列表。不能为空,否则返回 191004 参数错误。

    示例代码

    Android
    JavaList<String> conversationIds = new ArrayList<>();
    conversationIds.add("xxx1|1|xxx2");
    conversationIds.add("xxx1|1|xxx3");
    NIMClient.getService(V2NIMMessageService.class).clearRoamingMessage(
            conversationIds,
            new V2NIMSuccessCallback<Void>() {
                @Override
                public void onSuccess(Void result) {
                    System.out.println("clearRoamingMessage success");
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
                    System.out.println("clearRoamingMessage failed");
                }
            }
    );
    
    macOS/Windows
    C++nstd::vector<nstd::string> conversationIds;
    conversationIds.push_back("conversationId1");
    conversationIds.push_back("conversationId2");
    messageService.clearRoamingMessage(
        conversationIds,
        [](void) {
            // clear roaming message succeeded
        },
        [](V2NIMError error) {
            // clear roaming message failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScripttry {
        await nim.V2NIMMessageService.clearRoamingMessage(['xxx1|1|xxx2', 'xxx1|1|xxx3'])
        // success
    } catch (e) {
        // failed
    }
    
    Node.js/Electron
    TypeScriptawait v2.messageService.clearRoamingMessage(['conversationId1', 'conversationId2'])
    
    HarmonyOS
    TypeScripttry {
        await nim.messageService.clearRoamingMessage(['xxx1|1|xxx2', 'xxx1|1|xxx3'])
        // success
    } catch (e) {
        // failed
    }
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含消息相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    此文档是否对你有帮助?
    有帮助
    去反馈
    • 支持平台
    • API 概览
    • 消息监听
    • 消息基础操作
    • 消息扩展操作
    • 消息解析相关
    • 消息序列化
    • 接口类
    • addMessageListener
    • removeMessageListener
    • on("EventName")
    • off("EventName")
    • sendMessage
    • modifyMessage
    • revokeMessage
    • getMessageList
    • getMessageListEx
    • getCloudMessageList
    • 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
    • searchCloudMessagesEx
    • searchLocalMessages
    • getThreadMessageList
    • getLocalThreadMessageList
    • registerCustomAttachmentParser
    • unregisterCustomAttachmentParser
    • messageSerialization
    • messageDeserialization
    • stopAIStreamMessage
    • regenAIMessage
    • setMessageFilter
    • clearRoamingMessage