聊天室管理

更新时间: 2024/11/20 15:23:57

网易云信即时通讯 SDK(NetEase IM SDK,以下简称 NIM SDK)提供聊天室管理功能,支持用户创建、进入、退出、查询、销毁聊天室,拥有完善的管理功能。

本文介绍聊天室管理相关 API。更多聊天室相关功能请参考开发指南文档 聊天室概述

支持平台

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

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

API 概览

聊天室实例监听

Android/iOS/macOS/Windows
API 说明 起始版本
addChatroomClientListener 注册聊天室实例监听器 v10.2.0
removeChatroomClientListener 移除聊天室实例监听器 v10.2.0
Web/uni-app/小程序/Node.js/Electron/HarmonyOS
API 说明 起始版本
on("EventName") 注册聊天室实例监听 v10.2.0(对应 HarmonyOS v1.0.0)
off("EventName") 取消注册聊天室实例监听 v10.2.0(对应 HarmonyOS v1.0.0)

聊天室实例

API 说明 起始版本
newInstance 构造一个新的聊天室实例 v10.2.0(对应 HarmonyOS v1.0.0)
destroyInstance 销毁指定聊天室实例 v10.2.0(对应 HarmonyOS v1.0.0)
getInstance 获取指定聊天室实例 v10.2.0(对应 HarmonyOS v1.0.0)
getInstanceList 获取当前已经存在的聊天室实例列表 v10.2.0(对应 HarmonyOS v1.0.0)
destroyAll 销毁当前的所有聊天室实例 v10.2.0(对应 HarmonyOS v1.0.0)

聊天室操作

API 说明 起始版本
enter 进入聊天室 v10.2.0(对应 HarmonyOS v1.0.0)
exit 退出聊天室 v10.2.0(对应 HarmonyOS v1.0.0)
getChatroomInfo 获取聊天室信息 v10.2.0(对应 HarmonyOS v1.0.0)
getChatroomService 获取聊天室服务(除 Web 端) v10.2.0(对应 HarmonyOS v1.0.0)
getStorageService 获取 IM 存储服务(除 Web 端) v10.2.0(对应 HarmonyOS v1.0.0)

接口类

V2NIMChatroomClient 类提供群组相关接口,包括注册/注销聊天室实例监听,创建、进入、退出、销毁聊天室等接口。

addChatroomClientListener

接口描述

注册聊天室实例监听器。

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

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

  • 全局只需注册一次。

  • 该方法为同步。

参数说明

Android
Javapublic void addChatroomClientListener(V2NIMChatroomClientListener listener)
参数名称 类型 是否必填 说明
listener V2NIMChatroomClientListener 聊天室实例监听器
iOS
Objective-C- (void)addChatroomClientListener:(id<V2NIMChatroomClientListener>)listener;
参数名称 类型 是否必填 说明
listener V2NIMChatroomClientListener 聊天室实例监听器
macOS/Windows
C++virtual void addChatroomClientListener(V2NIMChatroomClientListener listener) = 0;
参数名称 类型 是否必填 说明
listener V2NIMChatroomClientListener 聊天室实例监听器

示例代码

Android
JavachatroomClient.addChatroomClientListener(new V2NIMChatroomClientListener() {
    @Override
    public void onChatroomStatus(V2NIMChatroomStatus status, V2NIMError error) {

    }

    @Override
    public void onChatroomEntered() {

    }

    @Override
    public void onChatroomExited(V2NIMError error) {

    }

    @Override
    public void onChatroomKicked(V2NIMChatroomKickedInfo kickedInfo) {

    }
});
iOS
Objective-C@interface ClientListener : NSObject <V2NIMChatroomClientListener>
- (void)addToClient:(NSInteger)clientId;
@end

@implementation ClientListener
- (void)addToClient:(NSInteger)clientId
{
    V2NIMChatroomClient *instance = [V2NIMChatroomClient getInstance:clientId];
    [instance addChatroomClientListener:self];
}

- (void)onChatroomStatus:(V2NIMChatroomStatus)status
                   error:(nullable V2NIMError *)error
{

}
- (void)onChatroomEntered
{

}

- (void)onChatroomExited:(nullable V2NIMError *)error
{

}

- (void)onChatroomKicked:(V2NIMChatroomKickedInfo *)kickedInfo
{

}
@end
macOS/Windows
C++V2NIMChatroomClientListener listener;
listener.onChatroomStatus = [](V2NIMChatroomStatus status, nstd::optional<V2NIMError> error) {
    // handle chatroom status
};
listener.onChatroomEntered = []() {
    // handle chatroom entered
};
listener.onChatroomExited = [](nstd::optional<V2NIMError> error) {
   // handle chatroom exited
};
listener.onChatroomKicked = [](V2NIMChatroomKickedInfo kickedInfo) {
    // handle chatroom kicked
};
chatroomClient.addChatroomClientListener(listener);

返回参数

无。

removeChatroomClientListener

接口描述

移除聊天室实例监听器。

该方法为同步。

参数说明

Android
Javapublic void removeChatroomClientListener(V2NIMChatroomClientListener listener)
参数名称 类型 是否必填 说明
listener V2NIMChatroomClientListener 聊天室实例监听器
iOS
Objective-C- (void)removeChatroomClientListener:(id<V2NIMChatroomClientListener>)listener;
参数名称 类型 是否必填 说明
listener V2NIMChatroomClientListener 聊天室实例监听器
macOS/Windows
C++virtual void removeChatroomClientListener(V2NIMChatroomClientListener listener) = 0;
参数名称 类型 是否必填 说明
listener V2NIMChatroomClientListener 聊天室实例监听器

示例代码

Android
JavachatroomClient.removeChatroomClientListener(chatroomClientListener);
iOS
Objective-C@interface ClientListener : NSObject <V2NIMChatroomClientListener>
- (void)addToClient:(NSInteger)clientId;
- (void)removeFromClient:(NSInteger)clientId;
@end

@implementation ClientListener
- (void)addToClient:(NSInteger)clientId
{
    V2NIMChatroomClient *instance = [V2NIMChatroomClient getInstance:clientId];
    [instance addChatroomClientListener:self];
}

- (void)removeFromClient:(NSInteger)clientId
{
    V2NIMChatroomClient *instance = [V2NIMChatroomClient getInstance:clientId];
    [instance removeChatroomClientListener:self];
}

- (void)onChatroomStatus:(V2NIMChatroomStatus)status
                   error:(nullable V2NIMError *)error
{

}
- (void)onChatroomEntered
{

}

- (void)onChatroomExited:(nullable V2NIMError *)error
{

}

- (void)onChatroomKicked:(V2NIMChatroomKickedInfo *)kickedInfo
{

}
@end
macOS/Windows
C++V2NIMChatroomClientListener listener;
// ...
chatroomClient.addChatroomClientListener(listener);
// ...
chatroomClient.removeChatroomClientListener(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;
}
参数名称 类型 是否必填 说明
eventName T 事件名称:
  • onChatroomStatus:聊天室状态变更回调,返回聊天室状态和错误信息。聊天室内所有成员均会收到该回调。
  • onChatroomEntered:进入聊天室回调。
  • onChatroomExited:退出聊天室回调,返回退出原因。
  • onChatroomKicked:被踢出聊天室回调,返回被踢详情。被踢出聊天室后,会同时触发 onChatroomExited 回调。
  • 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;
    }
    
    参数名称 类型 是否必填 说明
    eventName T 事件名称:
  • chatroomStatus:聊天室状态变更回调,返回聊天室状态和错误信息。聊天室内所有成员均会收到该回调。
  • chatroomEntered:进入聊天室回调。
  • chatroomExited:退出聊天室回调,返回退出原因。
  • chatroomKicked:被踢出聊天室回调,返回被踢详情。被踢出聊天室后,会同时触发 chatroomExited 回调。
  • 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
    }
    
    参数名称 类型 是否必填 说明
    eventName T 事件名称:
  • onChatroomStatus:聊天室状态变更回调,返回聊天室状态和错误信息。聊天室内所有成员均会收到该回调。
  • onChatroomEntered:进入聊天室回调。
  • onChatroomExited:退出聊天室回调,返回退出原因。
  • onChatroomKicked:被踢出聊天室回调,返回被踢详情。被踢出聊天室后,会同时触发 onChatroomExited 回调。
  • fn function 监听事件的回调函数。当事件触发时,会调用该函数进行处理。

    示例代码

    Web/uni-app/小程序
    TypeScriptchatroom.on("onChatroomStatus", function (status: V2NIMChatroomStatus, err?: V2NIMError) {})
    chatroom.on("onChatroomEntered", function () {})
    chatroom.on("onChatroomExited", function (err?: V2NIMError) {})
    chatroom.on("onChatroomKicked", function (kickedInfo: V2NIMChatroomKickedInfo) {})
    
    Node.js/Electron
    TypeScriptchatroom.on("chatroomStatus", function (status: V2NIMChatroomStatus, err?: V2NIMError) {})
    chatroom.on("chatroomEntered", function () {})
    chatroom.on("chatroomExited", function (err?: V2NIMError) {})
    chatroom.on("chatroomKicked", function (kickedInfo: V2NIMChatroomKickedInfo) {})
    
    HarmonyOS
    TypeScriptconst chatroom = this.getInstance(instanceId)
    chatroom.on("onChatroomStatus", (status: V2NIMChatroomStatus, err?: V2NIMError) => {
    })
    chatroom.on("onChatroomEntered", ()=> {
    })
    chatroom.on("onChatroomExited", (err?: V2NIMError) => {
    })
    chatroom.on("onChatroomKicked", (kickedInfo: V2NIMChatroomKickedInfo)=> {
    })
    

    返回参数

    无。

    off("EventName")

    接口描述

    取消注册聊天室实例监听。

    该方法为同步。

    参数说明

    Web/uni-app/小程序
    TypeScriptexport interface NIMEBaseServiceInterface<I extends NIMEBaseListener> {
      /**
       * 继承自 EventEmitter3 的取消监听方法。
       */
      off<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void;
      /**
       * 继承自 EventEmitter3 的移除事件方法。
       */
      removeAllListeners<T extends keyof I>(eventName?: T): void;
    }
    
    参数名称 类型 是否必填 说明
    eventName T 事件名称:
  • onChatroomStatus:聊天室状态变更回调,返回聊天室状态和错误信息。聊天室内所有成员均会收到该回调。
  • onChatroomEntered:进入聊天室回调。
  • onChatroomExited:退出聊天室回调,返回退出原因。
  • onChatroomKicked:被踢出聊天室回调,返回被踢详情。被踢出聊天室后,会同时触发 onChatroomExited 回调。
  • fn function 监听事件的回调函数。当事件触发时,会调用该函数进行处理。
    Node.js/Electron
    TypeScriptexport interface NIMEBaseServiceInterface<I extends NIMEBaseListener> {
      /**
       * 继承自 EventEmitter3 的取消监听方法。
       */
      off<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void;
      /**
       * 继承自 EventEmitter3 的移除事件方法。
       */
      removeAllListeners<T extends keyof I>(eventName?: T): void;
    }
    
    参数名称 类型 是否必填 说明
    eventName T 事件名称:
  • chatroomStatus:聊天室状态变更回调,返回聊天室状态和错误信息。聊天室内所有成员均会收到该回调。
  • chatroomEntered:进入聊天室回调。
  • chatroomExited:退出聊天室回调,返回退出原因。
  • chatroomKicked:被踢出聊天室回调,返回被踢详情。被踢出聊天室后,会同时触发 chatroomExited 回调。
  • fn function 监听事件的回调函数。当事件触发时,会调用该函数进行处理。
    HarmonyOS
    TypeScriptexport interface NIMEBaseServiceInterface<I extends NIMEBaseListener> {
      /**
       * 继承自 eventEmitter3 的取消监听方法
       */
      off<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void
      /**
       * 继承自 eventEmitter3 的移除事件方法
       */
      removeAllListeners<T extends keyof I>(eventName?: T): void
    }
    
    参数名称 类型 是否必填 说明
    eventName T 事件名称:
  • onChatroomStatus:聊天室状态变更回调,返回聊天室状态和错误信息。聊天室内所有成员均会收到该回调。
  • onChatroomEntered:进入聊天室回调。
  • onChatroomExited:退出聊天室回调,返回退出原因。
  • onChatroomKicked:被踢出聊天室回调,返回被踢详情。被踢出聊天室后,会同时触发 onChatroomExited 回调。
  • fn function 监听事件的回调函数。当事件触发时,会调用该函数进行处理。

    示例代码

    Web/uni-app/小程序
    TypeScriptchatroom.off("onChatroomStatus", function (status: V2NIMChatroomStatus, err?: V2NIMError) {})
    chatroom.off("onChatroomEntered", function () {})
    chatroom.off("onChatroomExited", function (err?: V2NIMError) {})
    chatroom.off("onChatroomKicked", function (kickedInfo: V2NIMChatroomKickedInfo) {})
    
    Node.js/Electron
    TypeScriptchatroom.off("chatroomStatus", function (status: V2NIMChatroomStatus, err?: V2NIMError) {})
    chatroom.off("chatroomEntered", function () {})
    chatroom.off("chatroomExited", function (err?: V2NIMError) {})
    chatroom.off("chatroomKicked", function (kickedInfo: V2NIMChatroomKickedInfo) {})
    
    HarmonyOS
    TypeScriptchatroom.off("onChatroomStatus", function (status: V2NIMChatroomStatus, err?: V2NIMError) {})
    chatroom.off("onChatroomEntered", function () {})
    chatroom.off("onChatroomExited", function (err?: V2NIMError) {})
    chatroom.off("onChatroomKicked", function (kickedInfo: V2NIMChatroomKickedInfo) {})
    

    返回参数

    无。

    newInstance

    接口描述

    构造一个新的聊天室实例。

    • 聊天室功能需要额外开通。构建聊天室实例前,请确保已在 网易云信控制台开通和配置聊天室
    • 建议保存实例 ID(instanceId)而不是构造的实例本身。
    • 该方法为静态、同步。

    参数说明

    Android
    Javapublic synchronized static V2NIMChatroomClient newInstance()
    
    iOS
    Objective-C+ (instancetype)newInstance;
    
    macOS/Windows
    C++static nstd::shared_ptr<V2NIMChatroomClient> newInstance();
    
    Web/uni-app/小程序
    TypeScriptstatic newInstance(initParams: V2NIMChatroomInitParams): V2NIMChatroomClient
    
    参数名称 类型 是否必填 说明
    initParams V2NIMChatroomInitParams 聊天室创建配置参数
    Node.js/Electron
    TypeScriptstatic newInstance(): V2NIMChatroomClient
    
    HarmonyOS
    TypeScriptstatic newInstance(context:common.Context, initParams: V2NIMChatroomInitParams): V2NIMChatroomClient
    
    参数名称 类型 是否必填 说明
    context common.Context 自定义的上下文对象,用于在实例中传递上下文信息。
    initParams V2NIMChatroomInitParams 聊天室创建配置参数

    示例代码

    Android
    JavaV2NIMChatroomClient chatroomClient = V2NIMChatroomClient.newInstance();
    
    iOS
    Objective-CV2NIMChatroomClient *chatroomClient = [V2NIMChatroomClient newInstance];
    
    macOS/Windows
    C++auto chatroomClient = V2NIMChatroomClient::newInstance();
    if (!chatroomClient) {
        // create instance failed
        // ...
        return;
    }
    auto instanceId = chatroomClient->getInstanceId();
    // save instanceId to cache
    // ...
    
    Web/uni-app/小程序
    TypeScriptconst chatroom = V2NIMChatroomClient.newInstance(
        {
            appkey: 'YOUR_APPKEY'
        }
    )
    
    Node.js/Electron
    TypeScriptconst chatroomClient = V2NIMChatroomClient.newInstance()
    
    HarmonyOS
    TypeScriptconst context: common.Context = getContext(this).getApplicationContext()
    const chatroom = V2NIMChatroomClient.newInstance(context,
        {
            appkey: 'YOUR_APPKEY'
        }
    )
    

    返回参数

    V2NIMChatroomClient 实例

    相关回调

    无。

    destroyInstance

    接口描述

    销毁指定聊天室实例。

    该方法为静态、同步。

    参数说明

    Android
    Javapublic synchronized static void destroyInstance(int instanceId)
    
    参数名称 类型 是否必填 说明
    instanceId int 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    iOS
    Objective-C+ (void)destroyInstance:(NSInteger)instanceId;
    
    参数名称 类型 是否必填 说明
    instanceId NSInteger 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    macOS/Windows
    C++static void destroyInstance(uint32_t instanceId);
    
    参数名称 类型 是否必填 说明
    instanceId uint32_t 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    Web/uni-app/小程序
    TypeScriptstatic destroyInstance(instanceId: number): void
    
    参数名称 类型 是否必填 说明
    instanceId number 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptstatic destroyInstance(instanceId): void
    
    参数名称 类型 是否必填 说明
    instanceId number 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    HarmonyOS
    TypeScriptstatic destroyInstance(instanceId: number): void
    
    参数名称 类型 是否必填 说明
    instanceId number 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。

    示例代码

    Android
    JavaV2NIMChatroomClient.destroyInstance(instanceId);
    
    iOS
    Objective-C[V2NIMChatroomClient destroyInstance:instanceId];
    
    macOS/Windows
    C++uint32_t instanceId{0};
    // get instanceId from cache
    // ...
    V2NIMChatroomClient::destroyInstance(instanceId);
    
    Web/uni-app/小程序
    TypeScriptV2NIMChatroomClient.destroyInstance(this.instanceId)
    
    Node.js/Electron
    TypeScriptV2NIMChatroomClient.destroyInstance(instanceId)
    
    HarmonyOS
    TypeScriptV2NIMChatroomClient.destroyInstance(this.instanceId)
    

    返回参数

    无返回值。

    相关回调

    无。

    getInstance

    接口描述

    获取指定聊天室实例。

    该方法为静态、同步。

    参数说明

    Android
    Javapublic synchronized static V2NIMChatroomClient getInstance(int instanceId)
    
    参数名称 类型 是否必填 说明
    instanceId int 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    iOS
    Objective-C+ (instancetype)getInstance:(NSInteger)instanceId;
    
    参数名称 类型 是否必填 说明
    instanceId NSInteger 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    macOS/Windows
    C++static nstd::shared_ptr<V2NIMChatroomClient> getInstance(uint32_t instanceId);
    
    参数名称 类型 是否必填 说明
    instanceId uint32_t 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    Web/uni-app/小程序
    TypeScriptstatic getInstance(instanceId?: number): V2NIMChatroomClient
    
    参数名称 类型 是否必填 说明
    instanceId number 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    Node.js/Electron
    TypeScriptstatic getInstance(instanceId): null | V2NIMChatroomClient
    
    参数名称 类型 是否必填 说明
    instanceId number 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    HarmonyOS
    TypeScriptstatic getInstance(instanceId: number): V2NIMChatroomClient
    
    参数名称 类型 是否必填 说明
    instanceId number 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。

    示例代码

    Android
    JavaV2NIMChatroomClient chatroomClient = V2NIMChatroomClient.getInstance(roomClientId)
    
    iOS
    Objective-CV2NIMChatroomClient *client = [V2NIMChatroomClient getInstance:roomClientId];
    
    macOS/Windows
    C++uint32_t instanceId{0};
    // get instanceId from cache
    // ...
    auto chatroomClient = V2NIMChatroomClient::getInstance(instanceId);
    if (!chatroomClient) {
        // instance not found
        // ...
        return;
    }
    
    Web/uni-app/小程序
    TypeScriptconst chatroom = V2NIMChatroomClient.getInstance(instanceId)
    
    Node.js/Electron
    TypeScriptconst chatroomClient = V2NIMChatroomClient.getInstance(instanceId)
    
    HarmonyOS
    TypeScriptconst chatroom = V2NIMChatroomClient.getInstance(instanceId)
    

    返回参数

    V2NIMChatroomClient 实例

    相关回调

    无。

    getInstanceList

    接口描述

    获取所有当前存在的聊天室实例。

    该方法为静态、同步。

    参数说明

    Android
    Javapublic synchronized static List<V2NIMChatroomClient> getInstanceList()
    
    iOS
    Objective-C+ (NSArray<V2NIMChatroomClient *> *)getInstanceList;
    
    macOS/Windows
    C++static nstd::vector<nstd::shared_ptr<V2NIMChatroomClient>> getInstanceList();
    
    Web/uni-app/小程序
    TypeScriptstatic getInstanceList(): V2NIMChatroomClient[]
    
    Node.js/Electron
    TypeScriptstatic getInstanceList(): V2NIMChatroomClient[]
    
    HarmonyOS
    TypeScriptstatic getInstanceList(): V2NIMChatroomClient[]
    

    示例代码

    Android
    JavaList<V2NIMChatroomClient> chatroomClients = V2NIMChatroomClient.getInstanceList();
    
    iOS
    Objective-CNSArray<V2NIMChatroomClient *> *clients = [V2NIMChatroomClient getInstanceList];
    
    macOS/Windows
    C++auto chatroomClients = V2NIMChatroomClient::getInstanceList();
    
    Web/uni-app/小程序
    TypeScriptconst chatroomArr = V2NIMChatroomClient.getInstanceList()
    
    Node.js/Electron
    TypeScriptconst instanceList = V2NIMChatroomClient.getInstanceList()
    
    HarmonyOS
    TypeScriptconst chatroomArr = V2NIMChatroomClient.getInstanceList()
    

    返回参数

    V2NIMChatroomClient 列表

    相关回调

    无。

    destroyAll

    接口描述

    销毁所有当前存在的聊天室实例。

    该方法为静态、同步。

    参数说明

    Android
    Javapublic synchronized static void destroyAll()
    
    iOS
    Objective-C+ (void)destroyAll;
    
    macOS/Windows
    C++static void destroyAll();
    
    Web/uni-app/小程序
    TypeScriptstatic destroyAll(): void
    
    Node.js/Electron
    TypeScriptstatic destroyAll(): void
    
    HarmonyOS
    TypeScriptstatic destroyAll(): void
    

    示例代码

    Android
    JavaV2NIMChatroomClient.destroyAll();
    
    iOS
    Objective-C[V2NIMChatroomClient destroyAll];
    
    macOS/Windows
    C++V2NIMChatroomClient::destroyAll();
    
    Web/uni-app/小程序
    TypeScriptV2NIMChatroomClient.destroyAll()
    
    Node.js/Electron
    TypeScriptV2NIMChatroomClient.destroyAll()
    
    HarmonyOS
    TypeScriptV2NIMChatroomClient.destroyAll()
    

    返回参数

    无。

    相关回调

    无。

    enter

    接口描述

    进入聊天室。

    本地端或多端同步进入聊天室成功后:

    调用该方法前,请确保已完成以下步骤:

    参数说明

    Android
    Javapublic void enter(String roomId, V2NIMChatroomEnterParams enterParams, V2NIMSuccessCallback<V2NIMChatroomEnterResult> success, V2NIMFailureCallback failure)
    
    参数名称 类型 是否必填 说明
    roomId String 聊天室 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    enterParams V2NIMChatroomEnterParams 进入聊天室相关参数
    success V2NIMSuccessCallback 进入聊天室成功回调,返回 V2NIMChatroomEnterResult
    failure V2NIMFailureCallback 进入聊天室失败回调,返回 错误码
    iOS
    Objective-C- (void)enter:(NSString *)roomId
      enterParams:(V2NIMChatroomEnterParams *)enterParams
          success:(nullable V2NIMChatroomEnterResultCallback)success
          failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    roomId NSString * 聊天室 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    enterParams V2NIMChatroomEnterParams - 进入聊天室相关参数
    success V2NIMChatroomEnterResultCallback 进入聊天室成功回调,可自定义设置。
    failure V2NIMFailureCallback 进入聊天室失败回调,返回 错误码
    macOS/Windows
    C++virtual void enter(nstd::string roomId,
        V2NIMChatroomEnterParams enterParams,
        V2NIMSuccessCallback<V2NIMChatroomEnterResult> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    roomId nstd::string 聊天室 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    enterParams V2NIMChatroomEnterParams - 进入聊天室相关参数
    success V2NIMSuccessCallback 进入聊天室成功回调,返回 V2NIMChatroomEnterResult
    failure V2NIMFailureCallback 进入聊天室失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptenter(roomId: string, enterParams: V2NIMChatroomEnterParams): Promise<V2NIMChatroomEnterResult>
    
    参数名称 类型 是否必填 说明
    roomId string 聊天室 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    enterParams V2NIMChatroomEnterParams 进入聊天室相关参数
    Node.js/Electron
    TypeScriptenter(roomId, enterParams): Promise<V2NIMChatroomEnterResult>
    
    参数名称 类型 是否必填 说明
    roomId string 聊天室 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    enterParams V2NIMChatroomEnterParams 进入聊天室相关参数
    HarmonyOS
    TypeScriptenter(roomId: string, enterParams: V2NIMChatroomEnterParams): Promise<V2NIMChatroomEnterResult>
    
    参数名称 类型 是否必填 说明
    roomId string 聊天室 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    enterParams V2NIMChatroomEnterParams 进入聊天室相关参数

    示例代码

    Android
    JavaV2NIMChatroomLinkProvider chatroomLinkProvider = new V2NIMChatroomLinkProvider() {
        @Override
        public List<String> getLinkAddress(String roomId, String accountId) {
            return "聊天室 link 地址";
        }
    };
    
    V2NIMChatroomLoginOption loginOption = V2NIMChatroomLoginOption.V2NIMChatroomLoginOptionBuilder.builder()
    // 按需设置
    //                .withAuthType()
    //                .withLoginExtensionProvider()
    //                .withTokenProvider()
            .build();
    
    V2NIMChatroomEnterParams enterParams = V2NIMChatroomEnterParams.V2NIMChatroomEnterParamsBuilder.builder(chatroomLinkProvider)
    // 按需设置
    //                .withAccountId()
    //                .withAnonymousMode()
    //                .withAntispamConfig()
    //                .withLocationConfig()
    //                .withLoginOption(loginOption)
    //                .withNotificationExtension()
    //                .withRoomAvatar()
    //                .withRoomNick()
    //                .withServerExtension()
    //                .withTagConfig()
    //                .withTimeout()
    //                .withToken()
            .build();
    
    V2NIMChatroomClient.newInstance().enter(roomId, enterParams,
            new V2NIMSuccessCallback<V2NIMChatroomEnterResult>() {
                @Override
                public void onSuccess(V2NIMChatroomEnterResult result) {
    
                }
            },
            new V2NIMFailureCallback() {
                @Override
                public void onFailure(V2NIMError error) {
    
                }
            });
    
    iOS
    Objective-C// 配置 link 地址回调
    @interface ChatroomLinkProvider : NSObject <V2NIMChatroomLinkProvider>
    @end
    
    @implementation ChatroomLinkProvider
    - (nullable NSArray<NSString *> *)getLinkAddress:(NSString *)roomId accountId:(NSString *)accountId {
        return @[@"link0", @"link1"];
    }
    @end
    // 进入聊天室
    NSString *roomId = @"2024";
    
    V2NIMChatroomLoginOption *loginOption = [[V2NIMChatroomLoginOption alloc] init];
    //默认鉴权方式进入聊天室
    loginOption.authType = V2NIM_LOGIN_AUTH_TYPE_DEFAULT;
    V2NIMChatroomEnterParams *enterParams = [[V2NIMChatroomEnterParams alloc] init];
    // 账号
    enterParams.accountId = @"accountId";
    // token
    enterParams.token = @"token";
    // 动态设置 link 地址
    enterParams.linkProvider = [[ChatroomLinkProvider alloc] init];
    
    [[V2NIMChatroomClient newInstance] enter:roomId
                                 enterParams:enterParams
                                     success:^(V2NIMChatroomEnterResult *result)
                                     {
                                         //进入聊天室成功
                                     }
                                     failure:^(V2NIMError *error)
                                     {
                                         //进入聊天室失败
                                     }];
    
    macOS/Windows
    C++V2NIMChatroomEnterParams enterParams;
    enterParams.accountId = "accountId";
    enterParams.token = "token";
    enterParams.roomNick = "nick";
    enterParams.roomAvatar = "avatar";
    enterParams.linkProvider = [](nstd::string roomId, nstd::string account) {
        nstd::vector<nstd::string> linkAddresses;
        // get link addresses
        // ...
        return linkAddresses;
    };
    enterParams.serverExtension = "server extension";
    enterParams.notificationExtension = "notification extension";
    chatroomClient.enter(
        "roomId",
        enterParams,
        [](V2NIMChatroomEnterResult result) {
            // enter succeeded
        },
        [](V2NIMError error) {
            // enter failed, handle error
        });
    
    Web/uni-app/小程序
    TypeScriptconst res = await instance.enter(roomId, {
        accountId: 'ACCID',
        token: 'TOKEN',
        roomNick: 'YOUR_NICK',
        roomAvatar: 'YOUR_IMG_URL',
        linkProvider: function() {
            return Promise.resolve(['chatweblink12.netease.im])
        }
    });
    
    Node.js/Electron
    TypeScriptconst result = await chatroomClient.enter('your room id', {
        accountId: 'your account id',
        token: 'your token',
        roomNick: 'your room nick',
        linkProvider: (roomId, account) => {
            return ['chatroom link...']
        }
    })
    if (result) {
        console.error(result)
    }
    
    HarmonyOS
    TypeScriptconst client = this.getInstance(instanceId)
    const enterParams: V2NIMChatroomEnterParams = {
      accountId: accountId,
      roomNick: roomNick,
      roomAvatar: roomAvatar,
      token: token,
      linkProvider: function() {
        return Promise.resolve(linkAddressArray)
      },
      serverExtension: serverExtension,
      notificationExtension: notificationExtension,
      tagConfig: {
        tags: tags,
        notifyTargetTags: notifyTargetTags
      },
      locationConfig: {
        distance: distance,
        locationInfo: {
          x: x,
          y: y,
          z: z
        }
      }
    }
    
    return await client.enter(roomId, enterParams)
    

    返回参数

    Android/iOS/macOS/Windows

    无返回值。

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

    Promise<V2NIMChatroomEnterResult> 进入聊天室结果

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含 V2NIMChatroomEnterResult
    • 请求失败,返回 V2NIMFailuerCallback 回调,包含聊天室相关错误码。
    iOS
    • 请求成功,返回 V2NIMChatroomEnterResultCallback 回调,可自定义设置。创建成功,返回 onTeamCreated 回调。
    • 请求失败,返回 V2NIMFailuerCallback 回调,包含群组相关错误码。
    Web/uni-app/小程序/Node.js/Electron/HarmonyOS

    无。

    exit

    接口描述

    退出聊天室。

    本地端或多端同步退出聊天室成功后:

    参数说明

    Android
    Javapublic void exit()
    
    iOS
    Objective-C- (void)exit;
    
    macOS/Windows
    C++virtual void exit() = 0;
    
    Web/uni-app/小程序
    TypeScriptexit(): void
    
    Node.js/Electron
    TypeScriptexit(): void
    
    HarmonyOS
    TypeScriptexit(): void
    

    示例代码

    Android
    JavachatroomCore.exit();
    
    iOS
    Objective-C[[V2NIMChatroomClient getInstance:instanceId] exit];
    
    macOS/Windows
    C++chatroomClient.exit();
    
    Web/uni-app/小程序
    TypeScriptchatroom.exit()
    
    Node.js/Electron
    TypeScriptchatroomClient.exit()
    
    HarmonyOS
    TypeScriptconst client = this.getInstance(instanceId)
    client.exit()
    

    返回参数

    无返回值。

    相关回调

    无。

    getChatroomInfo

    接口描述

    获取聊天室信息。

    调用该方法前,请确保已调用 enter 方法进入聊天室,否则返回 null。

    参数说明

    Android
    Javapublic V2NIMChatroomInfo getChatroomInfo()
    
    iOS
    Objective-C- (V2NIMChatroomInfo *)getChatroomInfo;
    
    macOS/Windows
    C++virtual V2NIMChatroomInfo getChatroomInfo() = 0;
    
    Web/uni-app/小程序
    TypeScriptgetChatroomInfo(): V2NIMChatroomInfo | null
    
    Node.js/Electron
    TypeScriptgetChatroomInfo(): V2NIMChatroomInfo
    
    HarmonyOS
    TypeScriptgetChatroomInfo(): V2NIMChatroomInfo | null
    

    示例代码

    Android
    JavaV2NIMChatroomInfo chatroomInfo = chatroomClient.getChatroomInfo();
    
    iOS
    Objective-C[[V2NIMChatroomClient getInstance:instanceId] getChatroomInfo];
    
    macOS/Windows
    C++auto chatroomInfo = chatroomClient.getChatroomInfo();
    
    Web/uni-app/小程序
    TypeScriptconst chatroomInfo = chatroom.getChatroomInfo()
    
    Node.js/Electron
    TypeScriptconst chatroomInfo = chatroomClient.getChatroomInfo()
    
    HarmonyOS
    TypeScriptconst client: V2NIMChatroomClient = this.getInstance(instanceId)
    const ret = client.getChatroomInfo()
    

    返回参数

    V2NIMChatroomInfo 聊天室信息

    相关回调

    无。

    getChatroomService

    接口描述

    获取聊天室服务。后续聊天室相关操作(聊天室成员、消息等)均在返回的 V2NIMChatroomService 类中实现。

    • 调用该方法前,请确保已调用 enter 方法进入聊天室,否则返回 null。
    • Web/uni-app/小程序无此接口。

    参数说明

    Android
    Javapublic V2NIMChatroomService getChatroomService()
    
    iOS
    Objective-C- (id<V2NIMChatroomService>)getChatroomService;
    
    macOS/Windows
    C++virtual V2NIMChatroomService& getChatroomService() = 0;
    
    Node.js/Electron
    TypeScriptgetChatroomService(): V2NIMChatroomService
    
    HarmonyOS
    TypeScriptpublic chatroomService: V2NIMChatroomService
    

    示例代码

    Android
    JavaV2NIMChatroomService chatroomService = chatroomClient.getChatroomService()
    
    iOS
    Objective-C[[V2NIMChatroomClient getInstance:instanceId] getChatroomService];
    
    macOS/Windows
    C++auto& chatroomService = client.getChatroomService();
    
    Node.js/Electron
    TypeScriptconst chatroomService = chatroomClient.getChatroomService()
    
    HarmonyOS
    TypeScriptconst client: V2NIMChatroomClient = this.getInstance(instanceId)
    const ret = client.chatroomService
    

    返回参数

    V2NIMChatroomService 聊天室服务

    相关回调

    无。

    getStorageService

    接口描述

    获取 IM 存储服务。后续收发富媒体/自定义消息所需存储相关接口均在返回的 V2NIMStorageService 类中实现。

    Web/uni-app/小程序无此接口。

    参数说明

    Android
    Javapublic V2NIMStorageService getStorageService()
    
    iOS
    Objective-C- (id<V2NIMStorageService>)getStorageService;
    
    macOS/Windows
    C++virtual V2NIMStorageService& getStorageService() = 0;
    
    Node.js/Electron
    TypeScriptgetStorageService(): V2NIMStorageService
    
    HarmonyOS
    TypeScriptpublic storageService: V2NIMChatroomStorageService
    

    示例代码

    Android
    JavaV2NIMStorageService storageService = chatroomClient.getStorageService()
    
    iOS
    Objective-C[[V2NIMChatroomClient getInstance:instanceId] getStorageService];
    
    macOS/Windows
    C++auto& storageService = client.getStorageService();
    
    Node.js/Electron
    TypeScriptconst storageService = chatroomClient.getStorageService()
    
    HarmonyOS
    TypeScriptconst client: V2NIMChatroomClient = this.getInstance(instanceId)
    const ret = client.storageService
    

    返回参数

    V2NIMStorageService IM 存储服务

    相关回调

    无。

    此文档是否对你有帮助?
    有帮助
    去反馈
    • 支持平台
    • API 概览
    • 聊天室实例监听
    • 聊天室实例
    • 聊天室操作
    • 接口类
    • addChatroomClientListener
    • removeChatroomClientListener
    • on("EventName")
    • off("EventName")
    • newInstance
    • destroyInstance
    • getInstance
    • getInstanceList
    • destroyAll
    • enter
    • exit
    • getChatroomInfo
    • getChatroomService
    • getStorageService