消息操作

更新时间: 2024/11/14 11:44:12

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

本文介绍消息收发等消息操作相关 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)

消息扩展操作

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)
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)
searchCloudMessages 全文搜索云端历史消息 v10.2.0(对应 HarmonyOS v0.5.0)
getThreadMessageList 分页获取云端 Thread 历史消息列表
  • Android/iOS/Web:v10.2.6
  • macOS/Windows:v10.3.0
  • HarmonyOS:v1.4.0
  • getLocalThreadMessageList 分页获取本地 Thread 历史消息列表
  • Android/iOS:v10.2.6
  • macOS/Windows:v10.3.0
  • HarmonyOS:v1.4.0
  • 消息解析相关

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

    接口类

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

    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) {
    
        }
    };
    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
    };
    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:会话内历史消息清除回调,返回被清除的历史消息列表,包括本端清除的历史消息及其他端(单聊、群组)清除的历史消息。
  • 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:会话内历史消息清除回调,返回被清除的历史消息列表,包括本端清除的历史消息及其他端(单聊、群组)清除的历史消息。
  • 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:会话内历史消息清除回调,返回被清除的历史消息列表,包括本端清除的历史消息及其他端(单聊、群组)清除的历史消息。
  • 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[]) {})
    
    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[]) {})
    
    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[]) {})
    

    返回参数

    无。

    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:会话内历史消息清除回调,返回被清除的历史消息列表,包括本端清除的历史消息及其他端(单聊、群组)清除的历史消息。
  • 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:会话内历史消息清除回调,返回被清除的历史消息列表,包括本端清除的历史消息及其他端(单聊、群组)清除的历史消息。
  • 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:会话内历史消息清除回调,返回被清除的历史消息列表,包括本端清除的历史消息及其他端(单聊、群组)清除的历史消息。
  • 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[]) {})
    
    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[]) {})
    
    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[]) {})
    

    返回参数

    无。

    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 message = 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")
    message = await nim.V2NIMMessageService.sendMessage(message, 'YOUR_CONVERSATION_ID')
    await nim.V2NIMMessageService.modifyMessage(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
    • 请求成功,返回 `` 回调,可自定义设置。
    • 请求失败,返回 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

    接口描述

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

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

    如果会话数据同步已开始(收到 V2NIMConversationListener.onSyncStarted 回调),建议您在数据同步完成(收到 V2NIMConversationListener.onSyncFinished 回调)后再进行该操作,否则可能查询不到完整消息数据。

    参数说明

    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

    无。

    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::vectornstd::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): Promise<void>
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 删除的消息对象。如果为空或不存在则返回 191004 参数错误。
    serverExtension string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。

    示例代码

    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')
      // 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,并同步数据库和缓存。

    如果会话数据同步已开始(收到 V2NIMConversationListener.onSyncStarted 回调),建议您在数据同步完成(收到 V2NIMConversationListener.onSyncFinished 回调)后再进行该操作。

    参数说明

    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): Promise<void>
    
    参数名称 类型 是否必填 说明
    messages V2NIMMessage[] 删除的消息列表。
  • 不能为空,否则返回 191004 参数错误。
  • 删除的所有消息必须属于同一个会话。
  • 每次删除不可超过 50 条消息,否则返回 191004 参数错误。
  • serverExtension string 消息服务端扩展字段。必须为 JSON 格式封装,长度上限为 1024 字节,多端同步。

    示例代码

    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')
      // 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,并同步数据库和缓存。

    如果会话数据同步已开始(收到 V2NIMConversationListener.onSyncStarted 回调),建议您在数据同步完成(收到 V2NIMConversationListener.onSyncFinished 回调)后再进行该操作。

    参数说明

    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
    JavaV2NIMMessageService v2MessageService = NIMClient.getService(V2NIMMessageService.class);
    
    V2NIMConversationType conversationType = V2NIMConversationType.V2NIM_CONVERSATION_TYPE_P2P;
    String conversationId = V2NIMConversationIdUtil.conversationId("xxx", conversationType);
    
    V2NIMClearHistoryMessageOption clearOption = V2NIMClearHistoryMessageOption.V2NIMClearHistoryMessageOptionBuilder.builder(conversationId)
            // TODO: 根据实际情况配置
    //                .withDeleteRoam()
    //                .withExtension()
    //                .withOnlineSync()
            .build();
    
    v2MessageService.clearHistoryMessage(clearOption,
            new V2NIMSuccessCallback<Void>() {
                @Override
                public void onSuccess(Void unused) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            });
    
    iOS
    Objective-CV2NIMClearHistoryMessageOption *clearOption = [[V2NIMClearHistoryMessageOption alloc] init];
    [[[NIMSDK sharedSDK] v2MessageService] clearHistoryMessage:clearOption
                                                        success:^{
    
    } failure:^(V2NIMError * _Nonnull error) {
        //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/小程序
    TypeScripttry {
      await nim.V2NIMMessageService.clearHistoryMessage({conversationId: 'me|1|another'})
      // todo Success
    } catch (err) {
      // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
      await v2.messageService.clearHistoryMessage(option)
      // todo Success
    } catch (err) {
      // todo error
    }
    
    HarmonyOS
    TypeScripttry {
      await nim.messageService.clearHistoryMessage({conversationId: 'me|1|another'})
      // todo Success
    } catch (err) {
      // todo error
    }
    

    返回参数

    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/macOS/Windows

    无返回值。

    Node.js/Electron/HarmonyOS

    Promise<V2NIMMessage> 更新的消息对象

    相关回调

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

    无。

    insertMessageToLocal

    接口描述

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

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

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

    • 如果本地没有会话,则插入消息后 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

    无。

    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

    参数说明

    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,并同步数据库和缓存。

    参数说明

    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,并同步数据库和缓存。

    如果会话数据同步已开始(收到 V2NIMConversationListener.onSyncStarted 回调),建议您在数据同步完成(收到 V2NIMConversationListener.onSyncFinished 回调)后再进行该操作。

    参数说明

    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,并同步数据库和缓存。

    参数说明

    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 消息。获取结果不包含已删除、已撤回的消息,结果按照更新时间排序。

    如果会话数据同步已开始(收到 V2NIMConversationListener.onSyncStarted 回调),建议您在数据同步完成(收到 V2NIMConversationListener.onSyncFinished 回调)后再进行该操作,否则可能查询不到完整消息数据。

    参数说明

    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,并同步数据库和缓存。

    如果会话数据同步已开始(收到 V2NIMConversationListener.onSyncStarted 回调),建议您在数据同步完成(收到 V2NIMConversationListener.onSyncFinished 回调)后再进行该操作。

    参数说明

    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

    接口描述

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

    如果会话数据同步已开始(收到 V2NIMConversationListener.onSyncStarted 回调),建议您在数据同步完成(收到 V2NIMConversationListener.onSyncFinished 回调)后再进行该操作,否则可能查询不到完整消息数据。

    参数说明

    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

    接口描述

    批量移除收藏列表。

    如果会话数据同步已开始(收到 V2NIMConversationListener.onSyncStarted 回调),建议您在数据同步完成(收到 V2NIMConversationListener.onSyncFinished 回调)后再进行该操作。

    参数说明

    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

    接口描述

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

    如果会话数据同步已开始(收到 V2NIMConversationListener.onSyncStarted 回调),建议您在数据同步完成(收到 V2NIMConversationListener.onSyncFinished 回调)后再进行该操作,否则可能查询不到完整消息数据。

    参数说明

    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

    无。

    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

    接口描述

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

    如果会话数据同步已开始(收到 V2NIMConversationListener.onSyncStarted 回调),建议您在数据同步完成(收到 V2NIMConversationListener.onSyncFinished 回调)后再进行该操作,否则可能查询不到完整数据。

    参数说明

    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

    接口描述

    查询单聊消息是否已读。

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

    如果会话数据同步已开始(收到 V2NIMConversationListener.onSyncStarted 回调),建议您在数据同步完成(收到 V2NIMConversationListener.onSyncFinished 回调)后再进行该操作。

    参数说明

    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

    接口描述

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

    如果会话数据同步已开始(收到 V2NIMConversationListener.onSyncStarted 回调),建议您在数据同步完成(收到 V2NIMConversationListener.onSyncFinished 回调)后再进行该操作,否则可能查询不到完整数据。

    参数说明

    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

    接口描述

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

    如果会话数据同步已开始(收到 V2NIMConversationListener.onSyncStarted 回调),建议您在数据同步完成(收到 V2NIMConversationListener.onSyncFinished 回调)后再进行该操作,否则可能查询不到完整数据。

    参数说明

    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

    无。

    getThreadMessageList

    接口描述

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

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

    为避免触发请求频控,若云端会话数据同步已完成(收到 V2NIMConversationListener.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 注册的自定义消息附件解析器。

    示例代码

    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)
    

    返回参数

    无。

    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 反注册的自定义消息附件解析器

    示例代码

    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)
    

    返回参数

    无。

    此文档是否对你有帮助?
    有帮助
    去反馈
    • 支持平台
    • API 概览
    • 消息监听
    • 消息基础操作
    • 消息扩展操作
    • 消息解析相关
    • 接口类
    • addMessageListener
    • removeMessageListener
    • on("EventName")
    • off("EventName")
    • sendMessage
    • modifyMessage
    • revokeMessage
    • getMessageList
    • getMessageListByIds
    • deleteMessage
    • deleteMessages
    • clearHistoryMessage
    • updateMessageLocalExtension
    • insertMessageToLocal
    • cancelMessageAttachmentUpload
    • replyMessage
    • getMessageListByRefers
    • pinMessage
    • unpinMessage
    • updatePinMessage
    • getPinnedMessageList
    • addQuickComment
    • removeQuickComment
    • getQuickCommentList
    • addCollection
    • removeCollections
    • updateCollectionExtension
    • getCollectionListByOption
    • sendP2PMessageReceipt
    • getP2PMessageReceipt
    • isPeerRead
    • sendTeamMessageReceipts
    • getTeamMessageReceipts
    • getTeamMessageReceiptDetail
    • voiceToText
    • searchCloudMessages
    • getThreadMessageList
    • getLocalThreadMessageList
    • registerCustomAttachmentParser
    • unregisterCustomAttachmentParser