聊天室成员管理

更新时间: 2024/06/03 11:22:56

网易云信 IM 支持用户查询、添加、移除群组成员,管理成员角色等功能,拥有完善的成员权限体系及管理功能,群组内所有用户根据权限分为群主、管理员、以及普通成员。

技术原理

网易云信 NIM SDK 的 V2NIMChatroomService 类提供管理聊天室成员的相关方法,帮助您快速实现和使用聊天室的成员权限体系及管理功能。

聊天室成员角色分为固定成员和非固定成员两类,具体成员角色类型请参见 V2NIMChatroomMemberRole

  • 固定成员:创建者、管理员、普通成员。总计上限 1000 人。
    • 管理员由创建者分配和管理。管理员不能对创建者和其他管理员进行操作。
    • 黑名单用户即被拉黑的聊天室成员,与聊天室断开连接且无法收发消息。
    • 永久禁言用户即被执行永久禁言的聊天室成员,可接收消息但不能发送消息。解除永久禁言后,不影响临时禁言的到期时间。
    • 若重复设置临时禁言,则后一次设置会覆盖前一次设置的到期时间(不累计)。
  • 非固定成员无人数上限:
    • 游客:普通游客、匿名游客。
      • 除了创建者,其他成员刚加入聊天室时均默认是游客,根据登录参数(V2NIMChatroomEnterParams.anonymousMode)判断是普通游客或匿名游客。
      • 游客只有在线时才属于聊天室的非固定成员;游客进入聊天室又退出后,不属于聊天室的任何成员(和聊天室没有任何关系)。
    • 虚构成员:虚构用户。仅支持通过新版服务端 API 添加聊天室虚构用户

前提条件

实现聊天室登录

聊天室相关事件监听

在进行聊天室相关操作前,您可以先注册监听聊天室相关事件。监听后,在进行聊天室管理操作后,会收到对应的通知。

  • 相关回调

    • onChatroomMemberEnter:成员进入聊天室回调,返回 V2NIMChatroomMember。聊天室内所有成员均会收到该回调。

    • onChatroomMemberExit:成员退出聊天室回调,返回 accountId。聊天室内所有成员均会收到该回调。

    • onChatroomMemberRoleUpdated:聊天室成员角色类型变更回调,返回 V2NIMChatroomMemberRoleV2NIMChatroomMember。聊天室内所有成员均会收到该回调。

    • onChatroomMemberInfoUpdated:聊天室成员信息变更回调,返回 V2NIMChatroomMember。聊天室内所有成员均会收到该回调。

    • onSelfChatBannedUpdated:聊天室成员本人禁言状态变更回调,返回 chatBanned 禁言状态。

    • onSelfTempChatBannedUpdated:聊天室成员本人临时禁言状态变更回调,返回 tempChatBanned 临时禁言状态和 tempChatBannedDuration 临时禁言时长(秒)。

    • onChatroomChatBannedUpdated:聊天室整体禁言状态变更回调,返回 chatBanned 禁言状态。

  • 示例代码

Android
javaV2NIMChatroomClient v2ChatroomClient = V2NIMChatroomClient.getInstance(instanceId);
V2NIMChatroomService v2ChatroomService = v2ChatroomClient.getChatroomService();

V2NIMChatroomListener listener = new V2NIMChatroomListener() {

    @Override
    public void onChatroomMemberEnter(V2NIMChatroomMember member) {

    }

    @Override
    public void onChatroomMemberExit(String accountId) {

    }

    @Override
    public void onChatroomMemberRoleUpdated(V2NIMChatroomMemberRole previousRole, V2NIMChatroomMember member) {

    }

    @Override
    public void onChatroomMemberInfoUpdated(V2NIMChatroomMember member) {

    }

    @Override
    public void onSelfChatBannedUpdated(boolean chatBanned) {

    }

    @Override
    public void onSelfTempChatBannedUpdated(boolean tempChatBanned, long tempChatBannedDuration) {

    }

    @Override
    public void onChatroomChatBannedUpdated(boolean chatBanned) {

    }
};

v2ChatroomService.addChatroomListener(listener);
iOS
objective-c@interface Listener: NSObject<V2NIMChatroomListener>
- (void)addToService;
@end

@implementation Listener

- (void)addToService
{
    id <V2NIMChatroomService> service = [[V2NIMChatroomClient getInstance:1] getChatroomService];
    [service addChatroomListener:self];
}

- (void)onChatroomMemberEnter:(V2NIMChatroomMember *)member
{

}

- (void)onChatroomMemberExit:(NSString *)accountId
{

}

- (void)onChatroomMemberRoleUpdated:(V2NIMChatroomMemberRole)previousRole
                             member:(V2NIMChatroomMember *)member
{

}
- (void)onChatroomMemberInfoUpdated:(V2NIMChatroomMember *)member
{

}

- (void)onSelfChatBannedUpdated:(BOOL)chatBanned
{

}

- (void)onSelfTempChatBannedUpdated:(BOOL)tempChatBanned
             tempChatBannedDuration:(NSInteger)tempChatBannedDuration
{

}

- (void)onChatroomChatBannedUpdated:(BOOL)chatBanned
{

}

- (void)onMessageRevokedNotification:(NSString *)messageClientId
                         messageTime:(NSTimeInterval)messageTime
{

}

@end
macOS/Windows
cppV2NIMChatroomListener listener;
listener.onChatroomMemberEnter = [](V2NIMChatroomMember member) {
    // handle chatroom member enter
};
listener.onChatroomMemberExit = [](nstd::string accountId) {
    // handle chatroom member exit
};
listener.onChatroomMemberRoleUpdated = [](V2NIMChatroomMemberRole previousRole, V2NIMChatroomMember member) {
    // handle chatroom member role updated
};
listener.onChatroomMemberInfoUpdated = [](V2NIMChatroomMember member) {
    // handle chatroom member info updated
};
listener.onSelfChatBannedUpdated = [](bool chatBanned) {
    // handle self chat banned updated
};
listener.onSelfTempChatBannedUpdated = [](bool tempChatBanned, uint64_t tempChatBannedDuration) {
    // handle self temp chat banned updated
};
listener.onChatroomChatBannedUpdated = [](bool chatBanned) {
    // handle chatroom chat banned updated
};
listener.onMessageRevokedNotification = [](nstd::string messageClientId, uint64_t messageTime) {
    // handle message revoked notification
};
chatroomService.addChatroomListener(listener);
Web/uni-app/小程序
typescriptchatroom.V2NIMChatroomService.on('onChatroomMemberEnter', function (member: V2NIMChatroomMember){})
chatroom.V2NIMChatroomService.on('onChatroomMemberExit', function (accountId: string){})
chatroom.V2NIMChatroomService.on('onChatroomMemberRoleUpdated', function (previousRole: V2NIMChatroomMemberRole, currentMember: V2NIMChatroomMember){})
chatroom.V2NIMChatroomService.on('onChatroomMemberInfoUpdated', function (member: V2NIMChatroomMember){})
chatroom.V2NIMChatroomService.on('onSelfChatBannedUpdated', function (chatBanned: boolean){})
chatroom.V2NIMChatroomService.on('onSelfTempChatBannedUpdated', function (tempChatBanned: boolean, tempChatBannedDuration: number){})
chatroom.V2NIMChatroomService.on('onChatroomChatBannedUpdated', function (chatBanned: boolean){})
Harmony
typescriptchatroom.chatroomService.on('onChatroomMemberEnter', (member: V2NIMChatroomMember) => {})
chatroom.chatroomService.on('onChatroomMemberExit', (accountId: string) => {})
chatroom.chatroomService.on('onChatroomMemberRoleUpdated', (previousRole: V2NIMChatroomMemberRole, currentMember: V2NIMChatroomMember) => {})
chatroom.chatroomService.on('onChatroomMemberInfoUpdated', (member: V2NIMChatroomMember) => {})
chatroom.chatroomService.on('onSelfChatBannedUpdated', (chatBanned: boolean) => {})
chatroom.chatroomService.on('onSelfTempChatBannedUpdated', (tempChatBanned: boolean, tempChatBannedDuration: number) => {})
chatroom.chatroomService.on('onChatroomChatBannedUpdated', (chatBanned: boolean) => {})

获取聊天室成员

分页获取聊天室成员

通过调用 getMemberListByOption 方法分页获取所有聊天室成员信息。分页查询选项请参见 V2NIMChatroomMemberQueryOption。支持获取指定多种类型/被加入黑名单/被禁言/在线的聊天室成员:

  • memberRoles:获取指定类型的聊天室成员

  • onlyChatBannedtrue:获取被加入黑名单的聊天室成员

  • onlyChatBannedtrue:获取被禁言的聊天室成员

  • onlyOnlinetrue:获取在线的聊天室固定成员(创建者、管理员、普通成员)

该方法该操作从服务器同步数据,耗时可能较长。SDK 不缓存数据,您需要根据需要自行做好缓存。

  • 示例代码
Android
java// 通过实例 ID 获取聊天室实例
V2NIMChatroomClient v2ChatroomClient = V2NIMChatroomClient.getInstance(instanceId);
V2NIMChatroomService v2ChatroomService = v2ChatroomClient.getChatroomService();

V2NIMChatroomMemberQueryOption queryOption = new V2NIMChatroomMemberQueryOption();
// 设置需要查询的成员类型,如果列表为空,表示查询所有类型的成员
List<V2NIMChatroomMemberRole> memberRoles = getMemberRoles();
queryOption.setMemberRoles(memberRoles);
// 是否只返回黑名单成员, 默认false
queryOption.setOnlyBlocked(false);
// 是否只返回禁言用户, 默认false
queryOption.setOnlyChatBanned(false);
// 是否只返回在线成员, 默认false
queryOption.setOnlyOnline(false);
// 设置查询数量
queryOption.setLimit(100);
// 设置分页标识,首页传"",下一页传上次返回的 pageToken
queryOption.setPageToken("");

v2ChatroomService.getMemberListByOption(queryOption, new V2NIMSuccessCallback<V2NIMChatroomMemberListResult>() {
    @Override
    public void onSuccess(V2NIMChatroomMemberListResult v2NIMChatroomMemberListResult) {
        // 查询成功
        List<V2NIMChatroomMember> memberList = v2NIMChatroomMemberListResult.getMemberList();
    }
}, new V2NIMFailureCallback() {
    @Override
    public void onFailure(V2NIMError error) {
        // 查询失败
    }
});
iOS
objective-c// 通过实例 ID 获取聊天室服务
id <V2NIMChatroomService> service = [[V2NIMChatroomClient getInstance:1] getChatroomService];

V2NIMChatroomMemberQueryOption *queryOption = [[V2NIMChatroomMemberQueryOption alloc] init];
// 设置需要查询的成员类型,如果列表为空,表示查询所有类型的成员
queryOption.memberRoles = @[@(V2NIM_CHATROOM_MEMBER_ROLE_NORMAL_GUEST), @(V2NIM_CHATROOM_MEMBER_ROLE_ANONYMOUS_GUEST)];
// 是否只返回黑名单成员, 默认false
queryOption.onlyBlocked = NO;
// 是否只返回禁言用户, 默认false
queryOption.onlyChatBanned = NO;
// 是否只返回在线成员, 默认false
queryOption.onlyOnline = NO;
// 设置查询数量
queryOption.limit = 100;
// 设置分页标识,首页传"",下一页传上次返回的 pageToken
queryOption.pageToken = @"";
[service getMemberListByOption:queryOption
                       success:^(V2NIMChatroomMemberListResult *result)
                       {
                           // 查询成功
                       }
                       failure:^(V2NIMError *error)
                       {
                           // 查询失败
                       }];
macOS/Windows
cppV2NIMChatroomMemberQueryOption queryOption;
queryOption.pageToken = 0; // first page
queryOption.limit = 10;
chatroomService.getMemberListByOption(
    queryOption,
    [](V2NIMChatroomMemberListResult result) {
        // get member list succeeded
    },
    [](V2NIMError error) {
        // get member list failed, handle error
    });
Web/uni-app/小程序
typescriptawait chatroom.V2NIMChatroomService.getMemberListByOption({
    // 普通成员
    memberRoles: [V2NIMChatroomMemberRole.V2NIM_CHATROOM_MEMBER_ROLE_NORMAL],
    onlyBlocked: false,
    onlyChatBanned: false,
    onlyOnline: false,
    limit: 100
})
Harmony
typescriptawait this.chatroomClient.chatroomService.getMemberListByOption({
    // 普通成员
    memberRoles: [V2NIMChatroomMemberRole.V2NIM_CHATROOM_MEMBER_ROLE_NORMAL],
    onlyBlocked: false,
    onlyChatBanned: false,
    onlyOnline: false,
    limit: 100
})

批量获取指定聊天室成员

通过调用 getMemberByIds 方法批量获取指定聊天室成员信息。

  • 单次查询数量上限为 200。
  • 返回聊天室成员信息按照输入 accountIds 顺序排序。
  • 参数说明
Android
参数名称 类型 是否必填 默认值 描述
accountIds List - 如果输入为空/数量为 0/数量超过 200,则返回 191004 参数错误。
success V2NIMSuccessCallback - 获取成功回调,返回 V2NIMChatroomMember 列表。
failure V2NIMFailureCallback - 获取失败回调,返回错误码
iOS
参数名称 类型 是否必填 默认值 描述
accountIds NSArray<NSString *> * - 如果输入为空/数量为 0/数量超过 200,则返回 191004 参数错误。
success V2NIMChatroomMemberListCallback - 获取成功回调,可自定义设置。
failure V2NIMFailureCallback - 获取失败回调,返回错误码
macOS/Windows
参数名称 类型 是否必填 默认值 描述
accountIds nstd::vector<nstd::string> - 如果输入为空/数量为 0/数量超过 200,则返回 191004 参数错误。
success V2NIMSuccessCallback - 获取成功回调,返回 [V2NIMChatroomMember] 列表。
failure V2NIMFailureCallback - 获取失败回调,返回错误码
Web/uni-app/小程序
参数名称 类型 是否必填 默认值 描述
accountIds string[] - 如果输入为空/数量为 0/数量超过 200,则返回 191004 参数错误。
Harmony
参数名称 类型 是否必填 默认值 描述
accountIds string[] - 如果输入为空/数量为 0/数量超过 200,则返回 191004 参数错误。
  • 示例代码
Android
javaV2NIMChatroomClient v2ChatroomClient = V2NIMChatroomClient.getInstance(instanceId);
V2NIMChatroomService v2ChatroomService = v2ChatroomClient.getChatroomService();
// 待查询的账号列表,为空或者 size==0,或者 size>200,返回参数错误
List<String> accountIds = getAccountIds();
v2ChatroomService.getMemberByIds(accountIds, new V2NIMSuccessCallback<List<V2NIMChatroomMember>>() {
    @Override
    public void onSuccess(List<V2NIMChatroomMember> v2NIMChatroomMembers) {
        // 查询成功
    }
}, new V2NIMFailureCallback() {
    @Override
    public void onFailure(V2NIMError error) {
        // 查询失败
    }
});
iOS
objective-c// 通过实例 ID 获取聊天室实例
id <V2NIMChatroomService> service = [[V2NIMChatroomClient getInstance:1] getChatroomService];

// 待查询的账号列表,为空或者 size==0,或者 size>200,返回参数错误
NSArray<NSString *> *accountIds = @[@"accountId0", @"accountId1", @"accountId2"];

[service getMemberByIds:accountIds
                success:^(NSArray<V2NIMChatroomMember *> *members) {
                    // 获取成功
                }
                failure:^(V2NIMError *error) {
                    // 获取失败
                }];
macOS/Windows
cppchatroomService.getMemberByIds(
    {"accountId1", "accountId2"},
    [](nstd::vector<V2NIMChatroomMember> members) {
        // get members by account ids succeeded
    },
    [](V2NIMError error) {
        // get members by account ids failed, handle error
    });
Web/uni-app/小程序
typescriptgetMemberByIds(accountIds: string[]): Promise<V2NIMChatroomMember[]>
Harmony
typescriptconst members = await this.chatroomClient.chatroomService.getMemberByIds(['accid1', 'accid2'])

根据标签分页获取聊天室成员

通过调用 getMemberListByOption 方法分页获取所有聊天室成员信息。分页查询选项请参见 V2NIMChatroomMemberQueryOption

该方法该操作从服务器同步数据,耗时可能较长。SDK 不缓存数据,您需要根据需要自行做好缓存。

  • 参数说明

V2NIMChatroomTagMemberOption 说明:

如果您的应用平台为 Android,则需要调用对应的成员函数获取对应参数。

名称 类型 是否必填 默认值 描述
tag String - 聊天室标签信息
pageToken String "" 分页偏移,首次查询传空,下一次查询传入上一次查询返回值中的 nextToken
limit int 100 单次查询最大数量。必须大于 0,否则返回参数错误。
  • 示例代码
Android
java// 通过实例 ID 获取聊天室实例
V2NIMChatroomClient v2ChatroomClient = V2NIMChatroomClient.getInstance(instanceId);
V2NIMChatroomService v2ChatroomService = v2ChatroomClient.getChatroomService();

V2NIMChatroomMemberQueryOption queryOption = new V2NIMChatroomMemberQueryOption();
// 设置需要查询的成员类型,如果列表为空,表示查询所有类型的成员
List<V2NIMChatroomMemberRole> memberRoles = getMemberRoles();
queryOption.setMemberRoles(memberRoles);
// 是否只返回黑名单成员, 默认false
queryOption.setOnlyBlocked(false);
// 是否只返回禁言用户, 默认false
queryOption.setOnlyChatBanned(false);
// 是否只返回在线成员, 默认false
queryOption.setOnlyOnline(false);
// 设置查询数量
queryOption.setLimit(100);
// 设置分页标识,首页传"",下一页传上次返回的 pageToken
queryOption.setPageToken("");

v2ChatroomService.getMemberListByOption(queryOption, new V2NIMSuccessCallback<V2NIMChatroomMemberListResult>() {
    @Override
    public void onSuccess(V2NIMChatroomMemberListResult v2NIMChatroomMemberListResult) {
        // 查询成功
        List<V2NIMChatroomMember> memberList = v2NIMChatroomMemberListResult.getMemberList();
    }
}, new V2NIMFailureCallback() {
    @Override
    public void onFailure(V2NIMError error) {
        // 查询失败
    }
});
iOS
objective-c// 通过实例 ID 获取聊天室服务
id <V2NIMChatroomService> service = [[V2NIMChatroomClient getInstance:1] getChatroomService];

V2NIMChatroomMemberQueryOption *queryOption = [[V2NIMChatroomMemberQueryOption alloc] init];
// 设置需要查询的成员类型,如果列表为空,表示查询所有类型的成员
queryOption.memberRoles = @[@(V2NIM_CHATROOM_MEMBER_ROLE_NORMAL_GUEST), @(V2NIM_CHATROOM_MEMBER_ROLE_ANONYMOUS_GUEST)];
// 是否只返回黑名单成员, 默认false
queryOption.onlyBlocked = NO;
// 是否只返回禁言用户, 默认false
queryOption.onlyChatBanned = NO;
// 是否只返回在线成员, 默认false
queryOption.onlyOnline = NO;
// 设置查询数量
queryOption.limit = 100;
// 设置分页标识,首页传"",下一页传上次返回的 pageToken
queryOption.pageToken = @"";
[service getMemberListByOption:queryOption
                       success:^(V2NIMChatroomMemberListResult *result)
                       {
                           // 查询成功
                       }
                       failure:^(V2NIMError *error)
                       {
                           // 查询失败
                       }];
macOS/Windows
cppV2NIMChatroomMemberQueryOption queryOption;
queryOption.pageToken = 0; // first page
queryOption.limit = 10;
chatroomService.getMemberListByOption(
    queryOption,
    [](V2NIMChatroomMemberListResult result) {
        // get member list succeeded
    },
    [](V2NIMError error) {
        // get member list failed, handle error
    });
Web/uni-app/小程序
typescriptawait chatroom.V2NIMChatroomService.getMemberListByOption({
    // 普通成员
    memberRoles: [V2NIMChatroomMemberRole.V2NIM_CHATROOM_MEMBER_ROLE_NORMAL],
    onlyBlocked: false,
    onlyChatBanned: false,
    onlyOnline: false,
    limit: 100
})
Harmony
typescriptawait this.chatroomClient.chatroomService.getMemberListByOption({
    // 普通成员
    memberRoles: [V2NIMChatroomMemberRole.V2NIM_CHATROOM_MEMBER_ROLE_NORMAL],
    onlyBlocked: false,
    onlyChatBanned: false,
    onlyOnline: false,
    limit: 100
})

根据标签获取聊天室成员数量

通过调用 getMemberCountByTag 方法获取指定标签下的聊天室成员人数。

Android
javaV2NIMChatroomClient v2ChatroomClient = V2NIMChatroomClient.getInstance(instanceId);
V2NIMChatroomService v2ChatroomService = v2ChatroomClient.getChatroomService();
// 查询的 tag,必传字段,传 null 或者 "",会返回参数错误
String tag = "xxx";
v2ChatroomService.getMemberCountByTag(tag, new V2NIMSuccessCallback<Long>() {
    @Override
    public void onSuccess(Long count) {
        // 查询成功
    }
}, new V2NIMFailureCallback() {
    @Override
    public void onFailure(V2NIMError error) {
        // 查询失败
    }
});
iOS
objective-c// 通过实例 ID 获取聊天室实例
id <V2NIMChatroomService> service = [[V2NIMChatroomClient getInstance:1] getChatroomService];

// 查询的 tag,必传字段,传 null 或者 "",会返回参数错误
NSString *tag = @"xxx";
[service getMemberCountByTag:tag
                    success:^(NSInteger memberCount)
                    {
                        // 获取成功
                    }
                    failure:^(V2NIMError *error)
                    {
                        // 获取失败
                    }];
macOS/Windows
cppchatroomService.getMemberCountByTag(
    "tag1",
    [](uint64_t count) {
        // get member count by tag succeeded
    },
    [](V2NIMError error) {
        // get member count by tag failed, handle error
    });
Web/uni-app/小程序
typescriptconst count = await chatroom.V2NIMChatroomService.getMemberCountByTag('tagName')
Harmony
typescriptconst count = await this.chatroomClient.chatroomService.getMemberCountByTag('tagName')

修改聊天室成员自身信息

通过调用 updateSelfMemberInfo 方法更新本人的聊天室成员信息。目前支持更新昵称、头像、服务端扩展字段及反垃圾配置项。

支持设置更新后是否通知,若设置通知,聊天室内成员会收到类型为 V2NIMChatroomMessageNotificationType.V2NIM_CHATROOM_MESSAGE_NOTIFICATION_TYPE_MEMBER_INFO_UPDATED(10) 的通知消息。

更新成功后,聊天室内成员会收到 onChatroomMemberInfoUpdated 回调。

  • 参数说明
Android
参数名称 类型 是否必填 默认值 描述
updateParams V2NIMChatroomSelfMemberUpdateParams - 本人聊天室成员信息更新参数
antispamConfig V2NIMAntispamConfig null 易盾反垃圾相关配置。使用云信安全通无需配置该参数。
success V2NIMSuccessCallback - 更新成功回调
failure V2NIMFailureCallback - 更新失败回调,返回错误码
iOS
参数名称 类型 是否必填 默认值 描述
updateParams V2NIMChatroomSelfMemberUpdateParams - 本人聊天室成员信息更新参数
antispamConfig V2NIMAntispamConfig null 易盾反垃圾相关配置。使用云信安全通无需配置该参数。
success V2NIMSuccessCallback - 更新成功回调
failure V2NIMFailureCallback - 更新失败回调,返回错误码
macOS/Windows
参数名称 类型 是否必填 默认值 描述
updateParams V2NIMChatroomSelfMemberUpdateParams - 本人聊天室成员信息更新参数
antispamConfig V2NIMAntispamConfig null 易盾反垃圾相关配置。使用云信安全通无需配置该参数。
success V2NIMSuccessCallback - 更新成功回调
failure V2NIMFailureCallback - 更新失败回调,返回错误码
Web/uni-app/小程序
参数名称 类型 是否必填 默认值 描述
updateParams V2NIMChatroomSelfMemberUpdateParams - 本人聊天室成员信息更新参数
antispamConfig V2NIMAntispamConfig null 易盾反垃圾相关配置。使用云信安全通无需配置该参数。
Harmony
参数名称 类型 是否必填 默认值 描述
updateParams V2NIMChatroomSelfMemberUpdateParams - 本人聊天室成员信息更新参数
antispamConfig V2NIMAntispamConfig null 易盾反垃圾相关配置。使用云信安全通无需配置该参数。

V2NIMChatroomSelfMemberUpdateParams 说明:

  • 以下参数必须设置其一,否则返回参数错误。
  • 如果您的应用平台为 Android,则需要调用对应的成员函数获取对应参数。
名称 类型 是否只读 默认值 描述
roomNick String - 聊天室中显示昵称。设置为空表示不更新该字段,不可设置为 "",否则返回参数错误。
roomAvatar String - 聊天室中显示头像。设置为空表示不更新该字段。
serverExtension String - 聊天室成员服务端扩展字段,多端同步。建议 JSON 格式,长度上限为 2048。
设置为空表示不更新该字段。
notificationEnabled boolean true 操作后是否需要通知
notificationExtension String - 操作后通知的扩展字段
persistence String false 更新信息是否持久化,即是否将数据保存在本地数据库中。
  • 示例代码
Android
javaV2NIMChatroomClient v2ChatroomClient = V2NIMChatroomClient.getInstance(instanceId);
V2NIMChatroomService v2ChatroomService = v2ChatroomClient.getChatroomService();

V2NIMChatroomSelfMemberUpdateParams updateParams = new V2NIMChatroomSelfMemberUpdateParams();
// 设置聊天室中显示的昵称
updateParams.setRoomNick("xxx");
// 设置头像
updateParams.setRoomAvatar("xxx");
// 设置成员扩展字段
updateParams.setServerExtension("xxx");
// 以上三个字段至少需要设置一个,否则会返回参数错误

// 设置是否需要通知
updateParams.setNotificationEnabled(true);
// 设置本次操作生成的通知中的扩展字段
updateParams.setNotificationExtension("xxx");
// 设置更新信息持久化, 只针对固定成员身份生效
updateParams.setPersistence(true);

// 反垃圾配置,可不传
V2NIMAntispamConfig antispamConfig = new V2NIMAntispamConfig();

v2ChatroomService.updateSelfMemberInfo(updateParams, antispamConfig, new V2NIMSuccessCallback<Void>() {
    @Override
    public void onSuccess(Void unused) {
        // 更新成功
    }
}, new V2NIMFailureCallback() {
    @Override
    public void onFailure(V2NIMError error) {
        // 更新失败
    }
});
iOS
objective-c// 通过实例 ID 获取聊天室实例
id <V2NIMChatroomService> service = [[V2NIMChatroomClient getInstance:1] getChatroomService];

V2NIMChatroomSelfMemberUpdateParams *updateParams = [[V2NIMChatroomSelfMemberUpdateParams alloc] init];
// 设置聊天室中显示的昵称
updateParams.roomNick = @"xxx";
// 设置头像
updateParams.roomAvatar = @"xxx";
// 设置成员扩展字段
updateParams.serverExtension = @"xxx";
// 以上三个字段至少需要设置一个,否则会返回参数错误

// 设置是否需要通知
updateParams.notificationEnabled = YES;
// 设置本次操作生成的通知中的扩展字段
updateParams.notificationExtension = @"xxx";
// 设置更新信息持久化, 只针对固定成员身份生效
updateParams.persistence = YES;

// 反垃圾配置,可不传
V2NIMAntispamConfig *antispamConfig = [[V2NIMAntispamConfig alloc] init];
[service updateSelfMemberInfo:updateParams
               antispamConfig:antispamConfig
                      success:^() 
                      {
                          // 更新成功
                      }
                      failure:^(V2NIMError *error) 
                      {
                          // 更新失败
                      }];
macOS/Windows
cppV2NIMChatroomSelfMemberUpdateParams updateParams;
updateParams.roomNick = "roomNick";
V2NIMAntispamConfig antispamConfig;
chatroomService.updateSelfMemberInfo(
    updateParams,
    antispamConfig,
    []() {
        // update self member info succeeded
    },
    [](V2NIMError error) {
        // update self member info failed, handle error
    });
Web/uni-app/小程序
typescriptawait chatroom.V2NIMChatroomService.updateSelfMemberInfo({
    roomNick: 'nick', // 聊天室昵称
    roomAvatar: 'https://www.xxx.com/1.jpg', // 头像
    serverExtension: 'extension', // 扩展字段
    notificationEnabled: true, // 是否通知
    persistence: true // 是否持久化。若为否,则信息在下线后失效
})
Harmony
typescriptawait this.chatroomClient.chatroomService.updateSelfMemberInfo({
    roomNick: 'nick', // 聊天室昵称
    roomAvatar: 'https://www.xxx.com/1.jpg', // 头像
    serverExtension: 'extension', //扩展字段
    notificationEnabled: true, //是否通知
    persistence: true //是否持久化。若为否,则信息在下线后失效
})

更新聊天室成员角色

通过调用 updateMemberRole 方法更新聊天室成员角色,包括以下场景:

  • 将普通游客、普通成员设置为管理员或反之,该操作仅聊天室创建者有权限。

  • 将普通成员设置为普通游客或反之,该操作仅聊天室管理员和创建者有权限。

  • 不允许操作虚构用户和匿名游客。

更新成功后,聊天室内所有成员收到 onChatroomMemberRoleUpdated 回调,及通类型为 V2NIMChatroomMessageNotificationType.V2NIM_CHATROOM_MESSAGE_NOTIFICATION_TYPE_ROLE_UPDATE(18) 的通知消息。

  • 参数说明
Android
参数名称 类型 是否必填 默认值 描述
accountId String - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
updateParams V2NIMChatroomMemberRoleUpdateParams - 聊天室成员更新参数。
success V2NIMSuccessCallback - 更新成功回调
failure V2NIMFailureCallback - 更新失败回调,返回错误码
iOS
参数名称 类型 是否必填 默认值 描述
accountId NSString * - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
updateParams V2NIMChatroomMemberRoleUpdateParams * - 聊天室成员更新参数。
success V2NIMSuccessCallback - 更新成功回调
failure V2NIMFailureCallback - 更新失败回调,返回错误码
macOS/Windows
参数名称 类型 是否必填 默认值 描述
accountId nstd::string - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
updateParams V2NIMChatroomMemberRoleUpdateParams - 聊天室成员更新参数。
success V2NIMSuccessCallback - 更新成功回调
failure V2NIMFailureCallback - 更新失败回调,返回错误码
Web/uni-app/小程序
参数名称 类型 是否必填 默认值 描述
accountId string - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
updateParams V2NIMChatroomMemberRoleUpdateParams - 聊天室成员更新参数。
Harmony
参数名称 类型 是否必填 默认值 描述
accountId string - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
updateParams V2NIMChatroomMemberRoleUpdateParams - 聊天室成员更新参数。

V2NIMChatroomMemberRoleUpdateParams 说明:

名称 类型 是否必填 默认值 描述
memberRole V2NIMChatroomMemberRole - 聊天室成员角色类型:
  • 仅聊天室创建者有操作权限:将普通游客、普通成员设置为管理员或反之。
  • 聊天室管理员和创建者均有操作权限:将普通成员设置为普通游客或反之。
  • 不允许操作虚构用户和匿名游客,否则产生报错。
  • memberLevel int 0,表示未设置 聊天室成员等级,大于或等于 0 的整数。
    notificationExtension String null 聊天室成员角色变更通知的扩展字段
    • 示例代码
    Android
    java// 通过实例 ID 获取聊天室实例
    V2NIMChatroomClient v2ChatroomClient = V2NIMChatroomClient.getInstance(instanceId);
    V2NIMChatroomService v2ChatroomService = v2ChatroomClient.getChatroomService();
    // 被操作的账号 ID
    String accountId = "test";
    V2NIMChatroomMemberRoleUpdateParams updateParams = new V2NIMChatroomMemberRoleUpdateParams();
    // 设置成员角色,必传字段,如果不传,会返回参数错误
    // 不支持设置为
    // V2NIMChatroomMemberRole.V2NIM_CHATROOM_MEMBER_ROLE_CREATOR
    // V2NIMChatroomMemberRole.V2NIM_CHATROOM_MEMBER_ROLE_ANONYMOUS_GUEST
    // V2NIMChatroomMemberRole.V2NIM_CHATROOM_MEMBER_ROLE_VIRTUAL
    updateParams.setMemberRole(V2NIMChatroomMemberRole.V2NIM_CHATROOM_MEMBER_ROLE_MANAGER);
    // 设置成员等级,可不传
    updateParams.setMemberLevel(1);
    // 设置通知扩展字段,可不传
    updateParams.setNotificationExtension("xxx");
    
    v2ChatroomService.updateMemberRole(accountId, updateParams, new V2NIMSuccessCallback<Void>() {
        @Override
        public void onSuccess(Void unused) {
            //更新成功
        }
    }, new V2NIMFailureCallback() {
        @Override
        public void onFailure(V2NIMError error) {
            //更新失败
        }
    });
    
    iOS
    objective-c// 通过实例 ID 获取聊天室实例
    id <V2NIMChatroomService> service = [[V2NIMChatroomClient getInstance:instanceId] getChatroomService];
    // 被操作的账号 ID
    NSString *accountId = @"test";
    V2NIMChatroomMemberRoleUpdateParams *updateParams = [[V2NIMChatroomMemberRoleUpdateParams alloc] init];
    // 设置成员角色,必传字段,如果不传,会返回参数错误
    // 不支持设置为
    // V2NIMChatroomMemberRole.V2NIM_CHATROOM_MEMBER_ROLE_CREATOR
    // V2NIMChatroomMemberRole.V2NIM_CHATROOM_MEMBER_ROLE_ANONYMOUS_GUEST
    // V2NIMChatroomMemberRole.V2NIM_CHATROOM_MEMBER_ROLE_VIRTUAL
    updateParams.memberRole = V2NIM_CHATROOM_MEMBER_ROLE_MANAGER;
    // 设置成员等级,可不传
    updateParams.memberLevel = 1;
    // 设置通知扩展字段,可不传
    updateParams.notificationExtension = @"xxx";
    [service updateMemberRole:accountId
                 updateParams:updateParams
                     success:^()
                     {
                         // 更新成功
                     }
                     failure:^(V2NIMError *error)
                     {
                         // 更新失败
                     }];
    
    macOS/Windows
    cppV2NIMChatroomMemberRoleUpdateParams updateParams;
    updateParams.memberRole = V2NIM_CHATROOM_MEMBER_ROLE_MANAGER;
    chatroomService.updateMemberRole(
        "accountId",
        updateParams,
        []() {
            // update member role succeeded
        },
        [](V2NIMError error) {
            // update member role failed, handle error
        });
    
    Web/uni-app/小程序
    typescriptawait chatroom.V2NIMChatroomService.updateMemberRole('accid', {
        // 设置为管理员
        memberRole: V2NIMChatroomMemberRole.V2NIM_CHATROOM_MEMBER_ROLE_MANAGER,
        // 用户登记
        memberLevel: 10,
        // 通知的扩展字段
        notificationExtension: 'ps'
    })
    
    Harmony
    typescriptawait this.chatroomClient.chatroomService.updateMemberRole('accid', {
        // 设置为管理员
        memberRole: V2NIMChatroomMemberRole.V2NIM_CHATROOM_MEMBER_ROLE_MANAGER,
        // 用户登记
        memberLevel: 10,
        // 通知的扩展字段
        notificationExtension: 'ps'
    })
    

    设置聊天室成员黑名单状态

    通过调用 setMemberBlockedStatus 方法来设置聊天室成员黑名单状态,支持将成员加入黑名单或从黑名单中移除。

    加入黑名单后:

    • 聊天室所有成员收到成员信息变更回调 onChatroomMemberInfoUpdated 和类型为 V2NIMChatroomMessageNotificationType.V2NIM_CHATROOM_MESSAGE_NOTIFICATION_TYPE_MEMBER_BLOCK_ADDED(2) 的通知消息。
    • 聊天室黑名单用户收到被踢出聊天室回调 onChatroomKicked,被踢原因为拉黑,同时与聊天室服务器断开连接,无法收发聊天室消息。

    移除黑名单后:

    • 聊天室所有成员收到成员信息变更回调 onChatroomMemberInfoUpdated 和类型为 V2NIMChatroomMessageNotificationType.V2NIM_CHATROOM_MESSAGE_NOTIFICATION_TYPE_MEMBER_BLOCK_REMOVED(3) 的通知消息。
    • 从聊天室普通成员身份变为普通游客身份。
    • 该操作仅聊天室创建者和管理员有权限。
    • 如果被操作方为管理员,则仅聊天室创建者有权限。
    • 不允许操作虚构用户和匿名游客。
    • 参数说明
    Android
    参数名称 类型 是否必填 默认值 描述
    accountId String - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    blocked boolean - 是否加入黑名单:
  • true:加入黑名单
  • false:从黑名单移除
  • notificationExtension String null 本次操作生成的通知中的扩展字段
    success V2NIMSuccessCallback - 设置成功回调
    failure V2NIMFailureCallback - 设置失败回调,返回错误码
    iOS
    参数名称 类型 是否必填 默认值 描述
    accountId NSString * - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    blocked BOOL - 是否加入黑名单:
  • true:加入黑名单
  • false:从黑名单移除
  • notificationExtension nullable NSString * null 本次操作生成的通知中的扩展字段
    success V2NIMSuccessCallback - 设置成功回调
    failure V2NIMFailureCallback - 设置失败回调,返回错误码
    macOS/Windows
    参数名称 类型 是否必填 默认值 描述
    accountId nstd::string - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    blocked bool - 是否加入黑名单:
  • true:加入黑名单
  • false:从黑名单移除
  • notificationExtension nstd::string null 本次操作生成的通知中的扩展字段
    success V2NIMSuccessCallback - 设置成功回调
    failure V2NIMFailureCallback - 设置失败回调,返回错误码
    Web/uni-app/小程序
    参数名称 类型 是否必填 默认值 描述
    accountId string - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    blocked boolean - 是否加入黑名单:
  • true:加入黑名单
  • false:从黑名单移除
  • notificationExtension string null 本次操作生成的通知中的扩展字段
    Harmony
    参数名称 类型 是否必填 默认值 描述
    accountId string - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    blocked boolean - 是否加入黑名单:
  • true:加入黑名单
  • false:从黑名单移除
  • notificationExtension string null 本次操作生成的通知中的扩展字段
    • 示例代码
    Android
    java// 通过实例 ID 获取聊天室实例
    V2NIMChatroomClient v2ChatroomClient = V2NIMChatroomClient.getInstance(instanceId);
    V2NIMChatroomService v2ChatroomService = v2ChatroomClient.getChatroomService();
    
    // 被操作的账号 ID
    String accountId = "test";
    // 设置黑名单状态
    boolean blocked = true;
    // 设置通知扩展字段,可不传
    String notificationExtension = "xxx";
    
    v2ChatroomService.setMemberBlockedStatus(accountId, blocked, notificationExtension, new V2NIMSuccessCallback<Void>() {
        @Override
        public void onSuccess(Void unused) {
            // 设置成功
        }
    }, new V2NIMFailureCallback() {
        @Override
        public void onFailure(V2NIMError error) {
            // 设置失败
        }
    });
    
    iOS
    objective-c// 通过实例 ID 获取聊天室实例
    id <V2NIMChatroomService> service = [[V2NIMChatroomClient getInstance:1] getChatroomService];
    // 被操作的账号 ID
    NSString *accountId = @"test";
    // 设置黑名单状态
    BOOL blocked = YES;
    // 设置通知扩展字段,可不传
    NSString *notificationExtension = @"xxx";
    [service setMemberBlockedStatus:accountId
                            blocked:blocked
              notificationExtension:notificationExtension
                            success:^()
                            {
                                // 设置成功
                            }
                            failure:^(V2NIMError *error)
                            {
                                // 设置失败
                            }];
    
    macOS/Windows
    cppchatroomService.setMemberBlockedStatus(
        "accountId",
        true,
        "notificationExtension",
        []() {
            // set member blocked status succeeded
        },
        [](V2NIMError error) {
            // set member blocked status failed, handle error
        });
    
    Web/uni-app/小程序
    typescriptawait chatroom.V2NIMChatroomService.setMemberBlockedStatus('accountId', true, 'extension')
    
    Harmony
    typescriptawait this.chatroomClient.chatroomService.setMemberBlockedStatus('accid', true, 'extension')
    

    设置聊天室成员禁言状态

    通过调用 setMemberChatBannedStatus 方法来设置聊天室成员禁言状态,支持将成员永久禁言或解除永久禁言。

    被永久禁言后:

    • 聊天室所有成员收到成员信息变更回调 onChatroomMemberInfoUpdated 和类型为 V2NIMChatroomMessageNotificationType.V2NIM_CHATROOM_MESSAGE_NOTIFICATION_TYPE_MEMBER_CHAT_BANNED_ADDED(4) 的通知消息。
    • 聊天室禁言用户收到禁言状态变更回调 onSelfChatBannedUpdated,无法在聊天室内发送消息,但可以接收消息。

    解除永久禁言后:

    • 聊天室所有成员收到成员信息变更回调 onChatroomMemberInfoUpdated 和类型为 V2NIMChatroomMessageNotificationType.V2NIM_CHATROOM_MESSAGE_NOTIFICATION_TYPE_MEMBER_CHAT_BANNED_REMOVED(5) 的通知消息。
    • 聊天室禁言用户收到禁言状态变更回调 onSelfChatBannedUpdated,恢复在聊天室内发送消息权限。
    • 该操作仅聊天室创建者和管理员有权限。
    • 如果被操作方为管理员,则仅聊天室创建者有权限。
    • 不允许操作虚构用户和匿名游客。
    • 参数说明
    Android
    参数名称 类型 是否必填 默认值 描述
    accountId String - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    chatBanned boolean - 是否为禁言状态
    notificationExtension String null 本次操作生成的通知中的扩展字段
    success V2NIMSuccessCallback - 设置成功回调
    failure V2NIMFailureCallback - 设置失败回调,返回错误码
    iOS
    参数名称 类型 是否必填 默认值 描述
    accountId NSString * - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    chatBanned BOOL - 是否为禁言状态
    notificationExtension nullable NSString * null 本次操作生成的通知中的扩展字段
    success V2NIMSuccessCallback - 设置成功回调
    failure V2NIMFailureCallback - 设置失败回调,返回错误码
    macOS/Windows
    参数名称 类型 是否必填 默认值 描述
    accountId nstd::string - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    chatBanned bool - 是否为禁言状态
    notificationExtension nstd::string null 本次操作生成的通知中的扩展字段
    success V2NIMSuccessCallback - 设置成功回调
    failure V2NIMFailureCallback - 设置失败回调,返回错误码
    Web/uni-app/小程序
    参数名称 类型 是否必填 默认值 描述
    accountId string - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    chatBanned boolean - 是否为禁言状态
    notificationExtension string null 本次操作生成的通知中的扩展字段
    Harmony
    参数名称 类型 是否必填 默认值 描述
    accountId string - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    chatBanned boolean - 是否为禁言状态
    notificationExtension string null 本次操作生成的通知中的扩展字段
    • 示例代码
    Android
    javaV2NIMChatroomClient v2ChatroomClient = V2NIMChatroomClient.getInstance(instanceId);
    V2NIMChatroomService v2ChatroomService = v2ChatroomClient.getChatroomService();
    
    // 被操作的账号ID
    String accountId = "test";
    // 设置禁言状态
    boolean chatBanned = true;
    // 设置通知扩展字段,可不传
    String notificationExtension = "xxx";
    
    v2ChatroomService.setMemberChatBannedStatus(accountId, chatBanned, notificationExtension, new V2NIMSuccessCallback<Void>() {
        @Override
        public void onSuccess(Void unused) {
            // 设置成功
        }
    }, new V2NIMFailureCallback() {
        @Override
        public void onFailure(V2NIMError error) {
            // 设置失败
        }
    });
    
    iOS
    objective-c// 通过实例 ID 获取聊天室实例
    id <V2NIMChatroomService> service = [[V2NIMChatroomClient getInstance:1] getChatroomService];
    // 被操作的账号 ID
    NSString *accountId = @"test";
    //设置禁言状态
    BOOL chatBanned = YES;
    // 设置通知扩展字段,可不传
    NSString *notificationExtension = @"xxx";
    [service setMemberChatBannedStatus:accountId
                            chatBanned:chatBanned
              notificationExtension:notificationExtension
                            success:^()
                            {
                                // 设置成功
                            }
                            failure:^(V2NIMError *error)
                            {
                                // 设置失败
                            }];
    
    macOS/Windows
    cppchatroomService.setMemberChatBannedStatus(
        "accountId",
        true,
        "notificationExtension",
        []() {
            // set member chat banned status succeeded
        },
        [](V2NIMError error) {
            // set member chat banned status failed, handle error
        });
    
    Web/uni-app/小程序
    typescriptawait chatroom.V2NIMChatroomService.setMemberChatBannedStatus('accid', true, 'extension')
    
    Harmony
    typescriptawait this.chatroomClient.chatroomService.setMemberChatBannedStatus('accid', true, 'extension')
    

    设置聊天室成员临时禁言状态

    通过调用 setMemberTempChatBanned 方法来设置聊天室成员临时禁言状态,支持将成员临时禁言或解除临时禁言。

    被临时禁言后(临时禁言时长不为 0):

    • 聊天室所有成员收到成员信息变更回调 onChatroomMemberInfoUpdated 和类型为 V2NIMChatroomMessageNotificationType.V2NIM_CHATROOM_MESSAGE_NOTIFICATION_TYPE_MEMBER_TEMP_CHAT_BANNED_ADDED(8) 的通知消息。
    • 聊天室临时禁言用户收到临时禁言状态变更回调 onSelfTempChatBannedUpdated,临时禁言期间内无法在聊天室内发送消息,但可以接收消息。临时禁言结束后,恢复发送消息权限。

    解除永久禁言后(临时禁言时长为 0):

    • 聊天室所有成员收到成员信息变更回调 onChatroomMemberInfoUpdated 和类型为 V2NIMChatroomMessageNotificationType.V2NIM_CHATROOM_MESSAGE_NOTIFICATION_TYPE_MEMBER_TEMP_CHAT_BANNED_REMOVED(9) 的通知消息。
    • 聊天室临时禁言用户收到禁言状态变更回调 onSelfTempChatBannedUpdated,恢复在聊天室内发送消息权限。
    • 该操作仅聊天室创建者和管理员有权限。
    • 如果被操作方为管理员,则仅聊天室创建者有权限。
    • 不允许操作虚构用户和匿名游客。
    • 参数说明
    Android
    参数名称 类型 是否必填 默认值 描述
    accountId String - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    tempChatBannedDuration long - 临时禁言时长(秒)。不可超过 30 天。
    设置为 0 表示解除临时禁言
    notificationEnabled boolean - 操作后是否需要通知
    notificationExtension String null 本次操作生成的通知中的扩展字段
    success V2NIMSuccessCallback - 设置成功回调
    failure V2NIMFailureCallback - 设置失败回调,返回错误码
    iOS
    参数名称 类型 是否必填 默认值 描述
    accountId NSString * - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    tempChatBannedDuration NSInteger - 临时禁言时长(秒)。不可超过 30 天。
    设置为 0 表示解除临时禁言
    notificationEnabled BOOL - 操作后是否需要通知
    notificationExtension nullable NSString * null 本次操作生成的通知中的扩展字段
    success V2NIMSuccessCallback - 设置成功回调
    failure V2NIMFailureCallback - 设置失败回调,返回错误码
    macOS/Windows
    参数名称 类型 是否必填 默认值 描述
    accountId nstd::string - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    tempChatBannedDuration long - 临时禁言时长(秒)。不可超过 30 天。
    设置为 0 表示解除临时禁言
    notificationEnabled bool - 操作后是否需要通知
    notificationExtension nstd::string null 本次操作生成的通知中的扩展字段
    success V2NIMSuccessCallback - 设置成功回调
    failure V2NIMFailureCallback - 设置失败回调,返回错误码
    Web/uni-app/小程序
    参数名称 类型 是否必填 默认值 描述
    accountId string - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    tempChatBannedDuration number - 临时禁言时长(秒)。不可超过 30 天。
    设置为 0 表示解除临时禁言
    notificationEnabled boolean - 操作后是否需要通知
    notificationExtension string null 本次操作生成的通知中的扩展字段
    Harmony
    参数名称 类型 是否必填 默认值 描述
    accountId string - 聊天室用户账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    不允许传入虚构用户和匿名游客的用户账号。
    tempChatBannedDuration number - 临时禁言时长(秒)。不可超过 30 天。
    设置为 0 表示解除临时禁言
    notificationEnabled boolean - 操作后是否需要通知
    notificationExtension string null 本次操作生成的通知中的扩展字段
    • 示例代码
    Android
    java// 通过实例 ID 获取聊天室实例
    V2NIMChatroomClient v2ChatroomClient = V2NIMChatroomClient.getInstance(instanceId);
    V2NIMChatroomService v2ChatroomService = v2ChatroomClient.getChatroomService();
    
    // 被操作的账号 ID
    String accountId = "test";
    // 设置临时禁言时长,单位:秒,单次最大:30天,取消则设置为:0
    long tempChatBannedDuration = 1000L;
    // 是否需要发送广播通知,true:通知,false:不通知
    boolean notificationEnabled = true;
    // 设置通知扩展字段,可不传
    String notificationExtension = "xxx";
    
    v2ChatroomService.setMemberTempChatBanned(accountId, tempChatBannedDuration, notificationEnabled, notificationExtension, new V2NIMSuccessCallback<Void>() {
        @Override
        public void onSuccess(Void unused) {
            // 设置成功
        }
    }, new V2NIMFailureCallback() {
        @Override
        public void onFailure(V2NIMError error) {
            // 设置失败
        }
    });
    
    iOS
    objective-c// 通过实例 ID 获取聊天室实例
    id <V2NIMChatroomService> service = [[V2NIMChatroomClient getInstance:1] getChatroomService];
    // 被操作的账号 ID
    NSString *accountId = @"test";
    // 设置临时禁言时长,单位:秒,单次最大:30天,取消则设置为:0
    long tempChatBannedDuration = 1000L;
    // 是否需要发送广播通知,true:通知,false:不通知
    BOOL notificationEnabled = YES;
    // 设置通知扩展字段,可不传
    NSString *notificationExtension = @"xxx";
    [service setMemberTempChatBanned:accountId
              tempChatBannedDuration:tempChatBannedDuration
                 notificationEnabled:notificationEnabled
               notificationExtension:notificationExtension
                             success:^() 
                             {
                                 // 设置成功
                             }
                             failure:^(V2NIMError *error) 
                             {
                                 // 设置失败
                             }];
    
    macOS/Windows
    cppchatroomService.setMemberTempChatBanned(
        "accountId",
        60,
        true,
        "notificationExtension",
        []() {
            // set member temp chat banned succeeded
        },
        [](V2NIMError error) {
            // set member temp chat banned failed, handle error
        });
    
    Web/uni-app/小程序
    typescriptawait chatroom.V2NIMChatroomService.setMemberTempChatBanned('accid', 60 * 1000, true, 'extension')
    
    Harmony
    typescriptawait this.chatroomClient.chatroomService.setMemberTempChatBanned('accid', 60 * 1000, true, 'extension')
    

    踢出聊天室成员

    通过调用 kickMember 方法将指定成员踢出聊天室。踢出的同时退出聊天室。

    踢出成功后:

    • 被踢用户收到被踢出聊天室回调 onChatroomKicked,以及退出聊天室回调 onChatroomExited
    • 聊天室内所有成员收到成员退出聊天室 onChatroomMemberExit 回调,及类型为 V2NIMChatroomMessageNotificationType.V2NIM_CHATROOM_MESSAGE_NOTIFICATION_TYPE_MEMBER_KICKED(7) 的通知消息。
    • 该操作仅聊天室创建者和管理员有权限。
    • 如果被操作方为管理员,则仅聊天室创建者有权限。
    • 不允许操作虚构用户和匿名游客。
    • 参数说明
    Android
    参数名称 类型 是否必填 默认值 描述
    accountId String - 踢出聊天室的成员账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    notificationExtension String null 本次操作生成的通知中的扩展字段
    success V2NIMSuccessCallback - 踢出成功回调
    failure V2NIMFailureCallback - 踢出失败回调,返回错误码
    iOS
    参数名称 类型 是否必填 默认值 描述
    accountId NSString * - 踢出聊天室的成员账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    notificationExtension nullable NSString * null 本次操作生成的通知中的扩展字段
    success V2NIMSuccessCallback - 踢出成功回调
    failure V2NIMFailureCallback - 踢出失败回调,返回错误码
    macOS/Windows
    参数名称 类型 是否必填 默认值 描述
    accountId nstd::string - 踢出聊天室的成员账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    notificationExtension nstd::string null 本次操作生成的通知中的扩展字段
    success V2NIMSuccessCallback - 踢出成功回调
    failure V2NIMFailureCallback - 踢出失败回调,返回错误码
    Web/uni-app/小程序
    参数名称 类型 是否必填 默认值 描述
    accountId string - 踢出聊天室的成员账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    notificationExtension string null 本次操作生成的通知中的扩展字段
    Harmony
    参数名称 类型 是否必填 默认值 描述
    accountId string - 踢出聊天室的成员账号,如果为空、不合法、不存在,则返回 191004 参数错误。
    notificationExtension string null 本次操作生成的通知中的扩展字段
    • 示例代码
    Android
    javaV2NIMChatroomClient v2ChatroomClient = V2NIMChatroomClient.getInstance(instanceId);
    V2NIMChatroomService v2ChatroomService = v2ChatroomClient.getChatroomService();
    
    // 被踢的成员ID
    String accountId = "test";
    // 设置通知扩展字段,可不传
    String notificationExtension = "xxx";
    
    v2ChatroomService.kickMember(accountId, notificationExtension, new V2NIMSuccessCallback<Void>() {
        @Override
        public void onSuccess(Void unused) {
            // 踢出成功
        }
    }, new V2NIMFailureCallback() {
        @Override
        public void onFailure(V2NIMError error) {
            // 踢出失败
        }
    });
    
    iOS
    objective-c// 通过实例 ID 获取聊天室实例
    id <V2NIMChatroomService> service = [[V2NIMChatroomClient getInstance:1] getChatroomService];
    
    // 被踢的成员 ID
    NSString *accountId = @"accountId";
    // 设置通知扩展字段,可不传
    NSString *notificationExtension = @"xxx";
    [service kickMember:accountId
    notificationExtension:notificationExtension
                success:^() {
                    // 踢出成功
                }
                failure:^(V2NIMError *error) {
                    // 踢出失败
                }];
    
    macOS/Windows
    cppchatroomService.kickMember(
        "accountId",
        "notificationExtension",
        []() {
            // kick member succeeded
        },
        [](V2NIMError error) {
            // kick member failed, handle error
        });
    
    Web/uni-app/小程序
    typescriptawait chatroom.V2NIMChatroomService.kickMember('account', 'notificationExtension')
    
    Harmony
    typescriptawait this.chatroomClient.chatroomService.kickMember('account', 'notificationExtension')
    

    相关信息

    此文档是否对你有帮助?
    有帮助
    去反馈
    • 技术原理
    • 前提条件
    • 聊天室相关事件监听
    • 获取聊天室成员
    • 分页获取聊天室成员
    • 批量获取指定聊天室成员
    • 根据标签分页获取聊天室成员
    • 根据标签获取聊天室成员数量
    • 修改聊天室成员自身信息
    • 更新聊天室成员角色
    • 设置聊天室成员黑名单状态
    • 设置聊天室成员禁言状态
    • 设置聊天室成员临时禁言状态
    • 踢出聊天室成员
    • 相关信息