聊天室管理

更新时间: 2024/08/22 17:07:55

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

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

支持平台

Android iOS macOS/Windows Web/uni-app/小程序 HarmonyOS

API 概览

聊天室实例监听

Android/iOS/macOS/Windows
API 描述 起始版本
addChatroomClientListener 注册聊天室实例监听器 v10.2.0
removeChatroomClientListener 移除聊天室实例监听器 v10.2.0
Web/uni-app/小程序/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
cppvirtual 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
cppV2NIMChatroomClientListener 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
cppvirtual 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
cppV2NIMChatroomClientListener 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 - 监听事件的回调函数。当事件触发时,会调用该函数进行处理。
    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) {})
    
    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 - 监听事件的回调函数。当事件触发时,会调用该函数进行处理。
    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) {})
    
    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
    cppstatic nstd::shared_ptr<V2NIMChatroomClient> newInstance();
    
    Web/uni-app/小程序
    typescriptstatic newInstance(initParams: V2NIMChatroomInitParams): V2NIMChatroomClient
    
    参数名称 类型 是否必填 默认值 描述
    initParams V2NIMChatroomInitParams - 聊天室创建配置参数
    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
    cppauto 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'
        }
    )
    
    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
    cppstatic void destroyInstance(uint32_t instanceId);
    
    参数名称 类型 是否必填 默认值 描述
    instanceId uint32_t - 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    Web/uni-app/小程序
    typescriptstatic destroyInstance(instanceId: number): 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
    cppuint32_t instanceId{0};
    // get instanceId from cache
    // ...
    V2NIMChatroomClient::destroyInstance(instanceId);
    
    Web/uni-app/小程序
    typescriptV2NIMChatroomClient.destroyInstance(this.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
    cppstatic 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 参数错误。
    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
    cppuint32_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)
    
    HarmonyOS
    typescriptconst chatroom = V2NIMChatroomClient.getInstance(instanceId)
    

    返回值

    V2NIMChatroomClient 实例

    相关回调

    getInstanceList

    接口描述

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

    该方法为静态、同步。

    参数说明

    Android
    javapublic synchronized static List<V2NIMChatroomClient> getInstanceList()
    
    iOS
    objective-c+ (NSArray<V2NIMChatroomClient *> *)getInstanceList;
    
    macOS/Windows
    cppstatic nstd::vector<nstd::shared_ptr<V2NIMChatroomClient>> getInstanceList();
    
    Web/uni-app/小程序
    typescriptstatic getInstanceList(): V2NIMChatroomClient[]
    
    HarmonyOS
    typescriptstatic getInstanceList(): V2NIMChatroomClient[]
    

    示例代码

    Android
    javaList<V2NIMChatroomClient> chatroomClients = V2NIMChatroomClient.getInstanceList();
    
    iOS
    objective-cNSArray<V2NIMChatroomClient *> *clients = [V2NIMChatroomClient getInstanceList];
    
    macOS/Windows
    cppauto chatroomClients = V2NIMChatroomClient::getInstanceList();
    
    Web/uni-app/小程序
    typescriptconst chatroomArr = V2NIMChatroomClient.getInstanceList()
    
    HarmonyOS
    typescriptconst chatroomArr = V2NIMChatroomClient.getInstanceList()
    

    返回值

    V2NIMChatroomClient 列表

    相关回调

    destroyAll

    接口描述

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

    该方法为静态、同步。

    参数说明

    Android
    javapublic synchronized static void destroyAll()
    
    iOS
    objective-c+ (void)destroyAll;
    
    macOS/Windows
    cppstatic void destroyAll();
    
    Web/uni-app/小程序
    typescriptstatic destroyAll(): void
    
    HarmonyOS
    typescriptstatic destroyAll(): void
    

    示例代码

    Android
    javaV2NIMChatroomClient.destroyAll();
    
    iOS
    objective-c[V2NIMChatroomClient destroyAll];
    
    macOS/Windows
    cppV2NIMChatroomClient::destroyAll();
    
    Web/uni-app/小程序
    typescriptV2NIMChatroomClient.destroyAll()
    
    HarmonyOS
    typescriptV2NIMChatroomClient.destroyAll()
    

    返回值

    相关回调

    enter

    接口描述

    进入聊天室。

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

    • 如果已在云信控制台开启了聊天室用户进出消息系统下发功能,聊天室内所有其他成员会收到回调 onChatroomMemberEnter。如未开启,可参见开通和配置聊天室功能

    • 聊天室实例(instanceId)与聊天室(roomId)形成绑定关系。

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

    参数说明

    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 - null 进入聊天室相关参数
    success V2NIMChatroomEnterResultCallback - 进入聊天室成功回调,可自定义设置。
    failure V2NIMFailureCallback - 进入聊天室失败回调,返回错误码
    macOS/Windows
    cppvirtual void enter(nstd::string roomId,
        V2NIMChatroomEnterParams enterParams,
        V2NIMSuccessCallback<V2NIMChatroomEnterResult> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 默认值 描述
    roomId nstd::string - 聊天室 ID。如果为空、不合法、不存在则返回 191004 参数错误。
    enterParams V2NIMChatroomEnterParams - null 进入聊天室相关参数
    success V2NIMSuccessCallback - 进入聊天室成功回调,返回 V2NIMChatroomEnterResult
    failure V2NIMFailureCallback - 进入聊天室失败回调,返回错误码
    Web/uni-app/小程序
    typescriptenter(roomId: string, enterParams: V2NIMChatroomEnterParams): 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
    cppV2NIMChatroomEnterParams 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])
        }
    });
    
    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/小程序/HarmonyOS

    Promise<V2NIMChatroomEnterResult> 进入聊天室结果

    相关回调

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

    exit

    接口描述

    退出聊天室。

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

    • 如果已在云信控制台开启了聊天室用户进出消息系统下发功能,聊天室内所有其他成员会收到回调 onChatroomMemberExit。如未开启,可参见开通和配置聊天室功能

    • 聊天室实例(instanceId)与聊天室(roomId)解除绑定关系。

    参数说明

    Android
    javapublic void exit()
    
    iOS
    objective-c- (void)exit;
    
    macOS/Windows
    cppvirtual void exit() = 0;
    
    Web/uni-app/小程序
    typescriptexit(): void
    
    HarmonyOS
    typescriptexit(): void
    

    示例代码

    Android
    javachatroomCore.exit();
    
    iOS
    objective-c[[V2NIMChatroomClient getInstance:instanceId] exit];
    
    macOS/Windows
    cppchatroomClient.exit();
    
    Web/uni-app/小程序
    typescriptchatroom.exit()
    
    HarmonyOS
    typescriptconst client = this.getInstance(instanceId)
    client.exit()
    

    返回值

    无返回值

    相关回调

    getChatroomInfo

    接口描述

    获取聊天室信息。

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

    参数说明

    Android
    javapublic V2NIMChatroomInfo getChatroomInfo()
    
    iOS
    objective-c- (V2NIMChatroomInfo *)getChatroomInfo;
    
    macOS/Windows
    cppvirtual V2NIMChatroomInfo getChatroomInfo() = 0;
    
    Web/uni-app/小程序
    typescriptgetChatroomInfo(): V2NIMChatroomInfo | null
    
    HarmonyOS
    typescriptgetChatroomInfo(): V2NIMChatroomInfo | null
    

    示例代码

    Android
    javaV2NIMChatroomInfo chatroomInfo = chatroomClient.getChatroomInfo();
    
    iOS
    objective-c[[V2NIMChatroomClient getInstance:instanceId] getChatroomInfo];
    
    macOS/Windows
    cppauto chatroomInfo = chatroomClient.getChatroomInfo();
    
    Web/uni-app/小程序
    typescriptconst chatroomInfo = chatroom.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
    cppvirtual V2NIMChatroomService& getChatroomService() = 0;
    
    HarmonyOS
    typescriptpublic chatroomService: V2NIMChatroomService
    

    示例代码

    Android
    javaV2NIMChatroomService chatroomService = chatroomClient.getChatroomService()
    
    iOS
    objective-c[[V2NIMChatroomClient getInstance:instanceId] getChatroomService];
    
    macOS/Windows
    cppauto& chatroomService = client.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
    cppvirtual V2NIMStorageService& getStorageService() = 0;
    
    HarmonyOS
    typescriptpublic storageService: V2NIMChatroomStorageService
    

    示例代码

    Android
    javaV2NIMStorageService storageService = chatroomClient.getStorageService()
    
    iOS
    objective-c[[V2NIMChatroomClient getInstance:instanceId] getStorageService];
    
    macOS/Windows
    cppauto& storageService = client.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
    • 接口描述
    • 参数说明
    • 示例代码
    • 返回值
    • 相关回调