聊天室管理
更新时间: 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 概览
聊天室实例监听
API | 说明 | 起始版本 |
---|---|---|
addChatroomClientListener | 注册聊天室实例监听器 | v10.2.0 |
removeChatroomClientListener | 移除聊天室实例监听器 | v10.2.0 |
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 会返回对应的回调。
-
建议在初始化后调用该方法。
-
全局只需注册一次。
-
该方法为同步。
参数说明
Javapublic void addChatroomClientListener(V2NIMChatroomClientListener listener)
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMChatroomClientListener |
是 | 聊天室实例监听器 |
Objective-C- (void)addChatroomClientListener:(id<V2NIMChatroomClientListener>)listener;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMChatroomClientListener |
是 | 聊天室实例监听器 |
C++virtual void addChatroomClientListener(V2NIMChatroomClientListener listener) = 0;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMChatroomClientListener |
是 | 聊天室实例监听器 |
示例代码
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) {
}
});
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
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
接口描述
移除聊天室实例监听器。
该方法为同步。
参数说明
Javapublic void removeChatroomClientListener(V2NIMChatroomClientListener listener)
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMChatroomClientListener |
是 | 聊天室实例监听器 |
Objective-C- (void)removeChatroomClientListener:(id<V2NIMChatroomClientListener>)listener;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMChatroomClientListener |
是 | 聊天室实例监听器 |
C++virtual void removeChatroomClientListener(V2NIMChatroomClientListener listener) = 0;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMChatroomClientListener |
是 | 聊天室实例监听器 |
示例代码
JavachatroomClient.removeChatroomClientListener(chatroomClientListener);
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
C++V2NIMChatroomClientListener listener;
// ...
chatroomClient.addChatroomClientListener(listener);
// ...
chatroomClient.removeChatroomClientListener(listener);
返回参数
无。
on("EventName")
接口描述
注册聊天室实例监听。
注册成功后,当事件发生时,SDK 会返回对应的回调。
-
建议在初始化后调用该方法。
-
全局只需注册一次。
-
该方法为同步。
参数说明
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 | 是 | 监听事件的回调函数。当事件触发时,会调用该函数进行处理。 |
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 | 是 | 监听事件的回调函数。当事件触发时,会调用该函数进行处理。 |
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 | 是 | 监听事件的回调函数。当事件触发时,会调用该函数进行处理。 |
示例代码
TypeScriptchatroom.on("onChatroomStatus", function (status: V2NIMChatroomStatus, err?: V2NIMError) {})
chatroom.on("onChatroomEntered", function () {})
chatroom.on("onChatroomExited", function (err?: V2NIMError) {})
chatroom.on("onChatroomKicked", function (kickedInfo: V2NIMChatroomKickedInfo) {})
TypeScriptchatroom.on("chatroomStatus", function (status: V2NIMChatroomStatus, err?: V2NIMError) {})
chatroom.on("chatroomEntered", function () {})
chatroom.on("chatroomExited", function (err?: V2NIMError) {})
chatroom.on("chatroomKicked", function (kickedInfo: V2NIMChatroomKickedInfo) {})
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")
接口描述
取消注册聊天室实例监听。
该方法为同步。
参数说明
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 | 是 | 监听事件的回调函数。当事件触发时,会调用该函数进行处理。 |
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 | 是 | 监听事件的回调函数。当事件触发时,会调用该函数进行处理。 |
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 | 是 | 监听事件的回调函数。当事件触发时,会调用该函数进行处理。 |
示例代码
TypeScriptchatroom.off("onChatroomStatus", function (status: V2NIMChatroomStatus, err?: V2NIMError) {})
chatroom.off("onChatroomEntered", function () {})
chatroom.off("onChatroomExited", function (err?: V2NIMError) {})
chatroom.off("onChatroomKicked", function (kickedInfo: V2NIMChatroomKickedInfo) {})
TypeScriptchatroom.off("chatroomStatus", function (status: V2NIMChatroomStatus, err?: V2NIMError) {})
chatroom.off("chatroomEntered", function () {})
chatroom.off("chatroomExited", function (err?: V2NIMError) {})
chatroom.off("chatroomKicked", function (kickedInfo: V2NIMChatroomKickedInfo) {})
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
接口描述
构造一个新的聊天室实例。
参数说明
Javapublic synchronized static V2NIMChatroomClient newInstance()
Objective-C+ (instancetype)newInstance;
C++static nstd::shared_ptr<V2NIMChatroomClient> newInstance();
TypeScriptstatic newInstance(initParams: V2NIMChatroomInitParams): V2NIMChatroomClient
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
initParams |
V2NIMChatroomInitParams |
是 | 聊天室创建配置参数 |
TypeScriptstatic newInstance(): V2NIMChatroomClient
TypeScriptstatic newInstance(context:common.Context, initParams: V2NIMChatroomInitParams): V2NIMChatroomClient
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
context |
common.Context | 是 | 自定义的上下文对象,用于在实例中传递上下文信息。 |
initParams |
V2NIMChatroomInitParams |
是 | 聊天室创建配置参数 |
示例代码
JavaV2NIMChatroomClient chatroomClient = V2NIMChatroomClient.newInstance();
Objective-CV2NIMChatroomClient *chatroomClient = [V2NIMChatroomClient newInstance];
C++auto chatroomClient = V2NIMChatroomClient::newInstance();
if (!chatroomClient) {
// create instance failed
// ...
return;
}
auto instanceId = chatroomClient->getInstanceId();
// save instanceId to cache
// ...
TypeScriptconst chatroom = V2NIMChatroomClient.newInstance(
{
appkey: 'YOUR_APPKEY'
}
)
TypeScriptconst chatroomClient = V2NIMChatroomClient.newInstance()
TypeScriptconst context: common.Context = getContext(this).getApplicationContext()
const chatroom = V2NIMChatroomClient.newInstance(context,
{
appkey: 'YOUR_APPKEY'
}
)
返回参数
相关回调
无。
destroyInstance
接口描述
销毁指定聊天室实例。
该方法为静态、同步。
参数说明
Javapublic synchronized static void destroyInstance(int instanceId)
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
instanceId |
int | 是 | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
Objective-C+ (void)destroyInstance:(NSInteger)instanceId;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
instanceId |
NSInteger | 是 | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
C++static void destroyInstance(uint32_t instanceId);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
instanceId |
uint32_t | 是 | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
TypeScriptstatic destroyInstance(instanceId: number): void
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
instanceId |
number | 是 | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
TypeScriptstatic destroyInstance(instanceId): void
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
instanceId |
number | 是 | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
TypeScriptstatic destroyInstance(instanceId: number): void
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
instanceId |
number | 是 | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
示例代码
JavaV2NIMChatroomClient.destroyInstance(instanceId);
Objective-C[V2NIMChatroomClient destroyInstance:instanceId];
C++uint32_t instanceId{0};
// get instanceId from cache
// ...
V2NIMChatroomClient::destroyInstance(instanceId);
TypeScriptV2NIMChatroomClient.destroyInstance(this.instanceId)
TypeScriptV2NIMChatroomClient.destroyInstance(instanceId)
TypeScriptV2NIMChatroomClient.destroyInstance(this.instanceId)
返回参数
无返回值。
相关回调
无。
getInstance
接口描述
获取指定聊天室实例。
该方法为静态、同步。
参数说明
Javapublic synchronized static V2NIMChatroomClient getInstance(int instanceId)
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
instanceId |
int | 是 | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
Objective-C+ (instancetype)getInstance:(NSInteger)instanceId;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
instanceId |
NSInteger | 是 | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
C++static nstd::shared_ptr<V2NIMChatroomClient> getInstance(uint32_t instanceId);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
instanceId |
uint32_t | 是 | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
TypeScriptstatic getInstance(instanceId?: number): V2NIMChatroomClient
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
instanceId |
number | 是 | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
TypeScriptstatic getInstance(instanceId): null | V2NIMChatroomClient
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
instanceId |
number | 是 | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
TypeScriptstatic getInstance(instanceId: number): V2NIMChatroomClient
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
instanceId |
number | 是 | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
示例代码
JavaV2NIMChatroomClient chatroomClient = V2NIMChatroomClient.getInstance(roomClientId)
Objective-CV2NIMChatroomClient *client = [V2NIMChatroomClient getInstance:roomClientId];
C++uint32_t instanceId{0};
// get instanceId from cache
// ...
auto chatroomClient = V2NIMChatroomClient::getInstance(instanceId);
if (!chatroomClient) {
// instance not found
// ...
return;
}
TypeScriptconst chatroom = V2NIMChatroomClient.getInstance(instanceId)
TypeScriptconst chatroomClient = V2NIMChatroomClient.getInstance(instanceId)
TypeScriptconst chatroom = V2NIMChatroomClient.getInstance(instanceId)
返回参数
相关回调
无。
getInstanceList
接口描述
获取所有当前存在的聊天室实例。
该方法为静态、同步。
参数说明
Javapublic synchronized static List<V2NIMChatroomClient> getInstanceList()
Objective-C+ (NSArray<V2NIMChatroomClient *> *)getInstanceList;
C++static nstd::vector<nstd::shared_ptr<V2NIMChatroomClient>> getInstanceList();
TypeScriptstatic getInstanceList(): V2NIMChatroomClient[]
TypeScriptstatic getInstanceList(): V2NIMChatroomClient[]
TypeScriptstatic getInstanceList(): V2NIMChatroomClient[]
示例代码
JavaList<V2NIMChatroomClient> chatroomClients = V2NIMChatroomClient.getInstanceList();
Objective-CNSArray<V2NIMChatroomClient *> *clients = [V2NIMChatroomClient getInstanceList];
C++auto chatroomClients = V2NIMChatroomClient::getInstanceList();
TypeScriptconst chatroomArr = V2NIMChatroomClient.getInstanceList()
TypeScriptconst instanceList = V2NIMChatroomClient.getInstanceList()
TypeScriptconst chatroomArr = V2NIMChatroomClient.getInstanceList()
返回参数
相关回调
无。
destroyAll
接口描述
销毁所有当前存在的聊天室实例。
该方法为静态、同步。
参数说明
Javapublic synchronized static void destroyAll()
Objective-C+ (void)destroyAll;
C++static void destroyAll();
TypeScriptstatic destroyAll(): void
TypeScriptstatic destroyAll(): void
TypeScriptstatic destroyAll(): void
示例代码
JavaV2NIMChatroomClient.destroyAll();
Objective-C[V2NIMChatroomClient destroyAll];
C++V2NIMChatroomClient::destroyAll();
TypeScriptV2NIMChatroomClient.destroyAll()
TypeScriptV2NIMChatroomClient.destroyAll()
TypeScriptV2NIMChatroomClient.destroyAll()
返回参数
无。
相关回调
无。
enter
接口描述
进入聊天室。
本地端或多端同步进入聊天室成功后:
-
如果已在 网易云信控制台 开启了 聊天室用户进出消息系统下发 功能,聊天室内所有其他成员会收到回调
onChatroomMemberEnter
。如未开启,可参考 开通和配置聊天室功能。 -
聊天室实例(instanceId)与聊天室(roomId)形成绑定关系。
调用该方法前,请确保已完成以下步骤:
- 在 网易云信控制台 上 开通和配置聊天室功能。
- 调用服务端 API 创建聊天室。
参数说明
Javapublic void enter(String roomId, V2NIMChatroomEnterParams enterParams, V2NIMSuccessCallback<V2NIMChatroomEnterResult> success, V2NIMFailureCallback failure)
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
roomId |
String | 是 | 聊天室 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
enterParams |
V2NIMChatroomEnterParams |
是 | 进入聊天室相关参数 |
success |
V2NIMSuccessCallback |
是 | 进入聊天室成功回调,返回 V2NIMChatroomEnterResult 。 |
failure |
V2NIMFailureCallback |
是 | 进入聊天室失败回调,返回 错误码。 |
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 |
是 | 进入聊天室失败回调,返回 错误码。 |
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 |
是 | 进入聊天室失败回调,返回 错误码。 |
TypeScriptenter(roomId: string, enterParams: V2NIMChatroomEnterParams): Promise<V2NIMChatroomEnterResult>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
roomId |
string | 是 | 聊天室 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
enterParams |
V2NIMChatroomEnterParams |
是 | 进入聊天室相关参数 |
TypeScriptenter(roomId, enterParams): Promise<V2NIMChatroomEnterResult>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
roomId |
string | 是 | 聊天室 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
enterParams |
V2NIMChatroomEnterParams |
是 | 进入聊天室相关参数 |
TypeScriptenter(roomId: string, enterParams: V2NIMChatroomEnterParams): Promise<V2NIMChatroomEnterResult>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
roomId |
string | 是 | 聊天室 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
enterParams |
V2NIMChatroomEnterParams |
是 | 进入聊天室相关参数 |
示例代码
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) {
}
});
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)
{
//进入聊天室失败
}];
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
});
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])
}
});
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)
}
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)
返回参数
无返回值。
Promise<V2NIMChatroomEnterResult
> 进入聊天室结果
相关回调
- 请求成功,返回
V2NIMSuccessCallback
回调,包含V2NIMChatroomEnterResult
。 - 请求失败,返回
V2NIMFailuerCallback
回调,包含聊天室相关错误码。
- 请求成功,返回
V2NIMChatroomEnterResultCallback
回调,可自定义设置。创建成功,返回onTeamCreated
回调。 - 请求失败,返回
V2NIMFailuerCallback
回调,包含群组相关错误码。
无。
exit
接口描述
退出聊天室。
本地端或多端同步退出聊天室成功后:
-
如果已在 网易云信控制台 开启了 聊天室用户进出消息系统下发 功能,聊天室内所有其他成员会收到回调
onChatroomMemberExit
。如未开启,可参考 开通和配置聊天室功能。 -
聊天室实例(instanceId)与聊天室(roomId)解除绑定关系。
参数说明
Javapublic void exit()
Objective-C- (void)exit;
C++virtual void exit() = 0;
TypeScriptexit(): void
TypeScriptexit(): void
TypeScriptexit(): void
示例代码
JavachatroomCore.exit();
Objective-C[[V2NIMChatroomClient getInstance:instanceId] exit];
C++chatroomClient.exit();
TypeScriptchatroom.exit()
TypeScriptchatroomClient.exit()
TypeScriptconst client = this.getInstance(instanceId)
client.exit()
返回参数
无返回值。
相关回调
无。
getChatroomInfo
接口描述
获取聊天室信息。
调用该方法前,请确保已调用 enter
方法进入聊天室,否则返回 null。
参数说明
Javapublic V2NIMChatroomInfo getChatroomInfo()
Objective-C- (V2NIMChatroomInfo *)getChatroomInfo;
C++virtual V2NIMChatroomInfo getChatroomInfo() = 0;
TypeScriptgetChatroomInfo(): V2NIMChatroomInfo | null
TypeScriptgetChatroomInfo(): V2NIMChatroomInfo
TypeScriptgetChatroomInfo(): V2NIMChatroomInfo | null
示例代码
JavaV2NIMChatroomInfo chatroomInfo = chatroomClient.getChatroomInfo();
Objective-C[[V2NIMChatroomClient getInstance:instanceId] getChatroomInfo];
C++auto chatroomInfo = chatroomClient.getChatroomInfo();
TypeScriptconst chatroomInfo = chatroom.getChatroomInfo()
TypeScriptconst chatroomInfo = chatroomClient.getChatroomInfo()
TypeScriptconst client: V2NIMChatroomClient = this.getInstance(instanceId)
const ret = client.getChatroomInfo()
返回参数
V2NIMChatroomInfo
聊天室信息
相关回调
无。
getChatroomService
接口描述
获取聊天室服务。后续聊天室相关操作(聊天室成员、消息等)均在返回的 V2NIMChatroomService
类中实现。
- 调用该方法前,请确保已调用
enter
方法进入聊天室,否则返回 null。 - Web/uni-app/小程序无此接口。
参数说明
Javapublic V2NIMChatroomService getChatroomService()
Objective-C- (id<V2NIMChatroomService>)getChatroomService;
C++virtual V2NIMChatroomService& getChatroomService() = 0;
TypeScriptgetChatroomService(): V2NIMChatroomService
TypeScriptpublic chatroomService: V2NIMChatroomService
示例代码
JavaV2NIMChatroomService chatroomService = chatroomClient.getChatroomService()
Objective-C[[V2NIMChatroomClient getInstance:instanceId] getChatroomService];
C++auto& chatroomService = client.getChatroomService();
TypeScriptconst chatroomService = chatroomClient.getChatroomService()
TypeScriptconst client: V2NIMChatroomClient = this.getInstance(instanceId)
const ret = client.chatroomService
返回参数
V2NIMChatroomService
聊天室服务
相关回调
无。
getStorageService
接口描述
获取 IM 存储服务。后续收发富媒体/自定义消息所需存储相关接口均在返回的 V2NIMStorageService
类中实现。
Web/uni-app/小程序无此接口。
参数说明
Javapublic V2NIMStorageService getStorageService()
Objective-C- (id<V2NIMStorageService>)getStorageService;
C++virtual V2NIMStorageService& getStorageService() = 0;
TypeScriptgetStorageService(): V2NIMStorageService
TypeScriptpublic storageService: V2NIMChatroomStorageService
示例代码
JavaV2NIMStorageService storageService = chatroomClient.getStorageService()
Objective-C[[V2NIMChatroomClient getInstance:instanceId] getStorageService];
C++auto& storageService = client.getStorageService();
TypeScriptconst storageService = chatroomClient.getStorageService()
TypeScriptconst client: V2NIMChatroomClient = this.getInstance(instanceId)
const ret = client.storageService
返回参数
V2NIMStorageService
IM 存储服务
相关回调
无。