聊天室管理
更新时间: 2024/08/22 17:07:55
NetEase IM SDK(以下简称 NIM SDK)提供聊天室管理功能,支持用户创建、进入、退出、查询、销毁聊天室,拥有完善的管理功能。
本文介绍聊天室管理相关 API。更多聊天室相关功能请参考开发指南文档聊天室概述。
支持平台
Android | iOS | macOS/Windows | Web/uni-app/小程序 | 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 |
是 | - | 聊天室实例监听器 |
cppvirtual 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
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
接口描述
移除聊天室实例监听器。
该方法为同步。
参数说明
javapublic void removeChatroomClientListener(V2NIMChatroomClientListener listener)
参数名称 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
listener |
V2NIMChatroomClientListener |
是 | - | 聊天室实例监听器 |
objective-c- (void)removeChatroomClientListener:(id<V2NIMChatroomClientListener>)listener;
参数名称 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
listener |
V2NIMChatroomClientListener |
是 | - | 聊天室实例监听器 |
cppvirtual 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
cppV2NIMChatroomClientListener 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 | 是 | - | 事件名称: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) {})
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 | 是 | - | 事件名称: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("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
)而不是构造的实例本身。 - 该方法为静态、同步。
参数说明
javapublic synchronized static V2NIMChatroomClient newInstance()
objective-c+ (instancetype)newInstance;
cppstatic nstd::shared_ptr<V2NIMChatroomClient> newInstance();
typescriptstatic newInstance(initParams: V2NIMChatroomInitParams): V2NIMChatroomClient
参数名称 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
initParams |
V2NIMChatroomInitParams |
是 | - | 聊天室创建配置参数 |
typescriptstatic newInstance(context:common.Context, initParams: V2NIMChatroomInitParams): V2NIMChatroomClient
参数名称 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
context |
common.Context | 是 | - | 自定义的上下文对象,用于在实例中传递上下文信息。 |
initParams |
V2NIMChatroomInitParams |
是 | - | 聊天室创建配置参数 |
示例代码
javaV2NIMChatroomClient chatroomClient = V2NIMChatroomClient.newInstance();
objective-cV2NIMChatroomClient *chatroomClient = [V2NIMChatroomClient newInstance];
cppauto 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 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 参数错误。 |
cppstatic void destroyInstance(uint32_t instanceId);
参数名称 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
instanceId |
uint32_t | 是 | - | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
typescriptstatic destroyInstance(instanceId: number): void
参数名称 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
instanceId |
number | 是 | - | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
typescriptstatic destroyInstance(instanceId: number): void
参数名称 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
instanceId |
number | 是 | - | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
示例代码
javaV2NIMChatroomClient.destroyInstance(instanceId);
objective-c[V2NIMChatroomClient destroyInstance:instanceId];
cppuint32_t instanceId{0};
// get instanceId from cache
// ...
V2NIMChatroomClient::destroyInstance(instanceId);
typescriptV2NIMChatroomClient.destroyInstance(this.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 参数错误。 |
cppstatic 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: number): V2NIMChatroomClient
参数名称 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
instanceId |
number | 是 | - | 聊天室实例 ID。如果为空、不合法、不存在则返回 191004 参数错误。 |
示例代码
javaV2NIMChatroomClient chatroomClient = V2NIMChatroomClient.getInstance(roomClientId)
objective-cV2NIMChatroomClient *client = [V2NIMChatroomClient getInstance:roomClientId];
cppuint32_t instanceId{0};
// get instanceId from cache
// ...
auto chatroomClient = V2NIMChatroomClient::getInstance(instanceId);
if (!chatroomClient) {
// instance not found
// ...
return;
}
typescriptconst chatroom = V2NIMChatroomClient.getInstance(instanceId)
typescriptconst chatroom = V2NIMChatroomClient.getInstance(instanceId)
返回值
相关回调
无
getInstanceList
接口描述
获取所有当前存在的聊天室实例。
该方法为静态、同步。
参数说明
javapublic synchronized static List<V2NIMChatroomClient> getInstanceList()
objective-c+ (NSArray<V2NIMChatroomClient *> *)getInstanceList;
cppstatic nstd::vector<nstd::shared_ptr<V2NIMChatroomClient>> getInstanceList();
typescriptstatic getInstanceList(): V2NIMChatroomClient[]
typescriptstatic getInstanceList(): V2NIMChatroomClient[]
示例代码
javaList<V2NIMChatroomClient> chatroomClients = V2NIMChatroomClient.getInstanceList();
objective-cNSArray<V2NIMChatroomClient *> *clients = [V2NIMChatroomClient getInstanceList];
cppauto chatroomClients = V2NIMChatroomClient::getInstanceList();
typescriptconst chatroomArr = V2NIMChatroomClient.getInstanceList()
typescriptconst chatroomArr = V2NIMChatroomClient.getInstanceList()
返回值
相关回调
无
destroyAll
接口描述
销毁所有当前存在的聊天室实例。
该方法为静态、同步。
参数说明
javapublic synchronized static void destroyAll()
objective-c+ (void)destroyAll;
cppstatic void destroyAll();
typescriptstatic destroyAll(): void
typescriptstatic destroyAll(): void
示例代码
javaV2NIMChatroomClient.destroyAll();
objective-c[V2NIMChatroomClient destroyAll];
cppV2NIMChatroomClient::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 |
- | null | 进入聊天室相关参数 |
success |
V2NIMChatroomEnterResultCallback |
是 | - | 进入聊天室成功回调,可自定义设置。 |
failure |
V2NIMFailureCallback |
是 | - | 进入聊天室失败回调,返回错误码。 |
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 |
是 | - | 进入聊天室失败回调,返回错误码。 |
typescriptenter(roomId: string, enterParams: V2NIMChatroomEnterParams): 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)
{
//进入聊天室失败
}];
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
});
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 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;
cppvirtual void exit() = 0;
typescriptexit(): void
typescriptexit(): void
示例代码
javachatroomCore.exit();
objective-c[[V2NIMChatroomClient getInstance:instanceId] exit];
cppchatroomClient.exit();
typescriptchatroom.exit()
typescriptconst client = this.getInstance(instanceId)
client.exit()
返回值
无返回值
相关回调
无
getChatroomInfo
接口描述
获取聊天室信息。
调用该方法前,请确保已调用 enter
方法进入聊天室,否则返回 null。
参数说明
javapublic V2NIMChatroomInfo getChatroomInfo()
objective-c- (V2NIMChatroomInfo *)getChatroomInfo;
cppvirtual V2NIMChatroomInfo getChatroomInfo() = 0;
typescriptgetChatroomInfo(): V2NIMChatroomInfo | null
typescriptgetChatroomInfo(): V2NIMChatroomInfo | null
示例代码
javaV2NIMChatroomInfo chatroomInfo = chatroomClient.getChatroomInfo();
objective-c[[V2NIMChatroomClient getInstance:instanceId] getChatroomInfo];
cppauto chatroomInfo = chatroomClient.getChatroomInfo();
typescriptconst chatroomInfo = chatroom.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;
cppvirtual V2NIMChatroomService& getChatroomService() = 0;
typescriptpublic chatroomService: V2NIMChatroomService
示例代码
javaV2NIMChatroomService chatroomService = chatroomClient.getChatroomService()
objective-c[[V2NIMChatroomClient getInstance:instanceId] getChatroomService];
cppauto& chatroomService = client.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;
cppvirtual V2NIMStorageService& getStorageService() = 0;
typescriptpublic storageService: V2NIMChatroomStorageService
示例代码
javaV2NIMStorageService storageService = chatroomClient.getStorageService()
objective-c[[V2NIMChatroomClient getInstance:instanceId] getStorageService];
cppauto& storageService = client.getStorageService();
typescriptconst client: V2NIMChatroomClient = this.getInstance(instanceId)
const ret = client.storageService
返回值
V2NIMStorageService
IM 存储服务
相关回调
无