管理聊天室成员

更新时间:2022-02-28

环信即时通讯 IM SDK 提供 EMChatRoomManager 类 和 EMChatRoom 类,支持对聊天室成员的管理,包括添加和移除聊天室成员等,主要方法如下:

  • fetchChatRoomMembers 获取聊天室成员列表;
  • fetchChatRoomBlackList 获取聊天室黑名单列表;
  • fetchChatRoomWhiteList 获取聊天室白名单列表;
  • checkIfInChatRoomWhiteList 查看自己是否在聊天室白名单中;
  • addToChatRoomWhiteList 添加成员至白名单;
  • removeFromChatRoomWhiteList 将成员移除白名单;
  • removeChatRoomMembers 将成员移出聊天室;
  • blockChatroomMembers 添加聊天室黑名单;
  • unblockChatRoomMembers 从聊天室黑名单中移除;
  • fetchChatRoomMuteList 获取聊天室的禁言列表;
  • muteChatRoomMembers 将一组成员禁言;
  • unMuteChatRoomMembers 解除禁言;
  • muteAllMembers 设置全员禁言;
  • unmuteAllMembers 解除全员禁言;
  • changeOwner 变更聊天室所有者;
  • addChatRoomAdmin 添加聊天室管理员;
  • removeChatRoomAdmin 移除聊天室管理员。

开始前,请确保满足以下条件:

管理聊天室成员

获取聊天室成员列表

所有聊天室成员都可以调用该接口获取当前聊天室成员列表。

注意

聊天室所有者、管理员、普通成员都可以调用该接口。

示例代码如下:

// Asynchronous processing is required.
EMCursorResult<String> members = EMClient.getInstance().chatroomManager().fetchChatRoomMembers(chatRoomId, cursor, pageSize);

获取聊天室黑名单列表

管理员可以调用该接口获取当前聊天室黑名单成员列表。

注意

仅聊天室所有者和管理员可调用该方法。

示例代码如下:

// Asynchronous processing is required.
EMChatRoom chatroom = EMClient.getInstance().chatroomManager().blockChatroomMembers(chatRoomId, members);

获取聊天室白名单列表

管理员可以调用该接口获取当前聊天室白名单成员列表。

注意

仅聊天室所有者和管理员可调用该方法。

示例代码如下:

EMClient.getInstance().chatroomManager().fetchChatRoomWhiteList(chatRoomId, new EMValueCallBack<List<String>>() {
    @Override
    public void onSuccess(List<String> value) {
    }
    @Override
    public void onError(int error, String errorMsg) { 
    }
});

查看自己是否在聊天室白名单中

用户可调用如下 API 检查自己是否在群白名单中。

示例代码如下:

EMClient.getInstance().chatroomManager().checkIfInChatRoomWhiteList(chatRoomId, new EMValueCallBack<Boolean>() {
    @Override
    public void onSuccess(Boolean value) {       
    }
    @Override
    public void onError(int error, String errorMsg) {  
    }
});

添加白名单

管理员可调用该接口可以将成员加入到聊天室白名单。

注意

仅聊天室所有者和管理员可调用该方法。

示例代码如下:

EMClient.getInstance().chatroomManager().addToChatRoomWhiteList(chatRoomId, members, new EMValueCallBack<EMChatRoom>() {
    @Override
    public void onSuccess(EMChatRoom value) {
    }   
    @Override
    public void onError(int error, String errorMsg) { 
    }
});

移除白名单

管理员调用该接口可以将成员从聊天室白名单移除。

注意

仅聊天室所有者和管理员可调用该方法。

示例代码如下:

EMClient.getInstance().chatroomManager().removeFromChatRoomWhiteList(chatRoomId, members, new EMValueCallBack<EMChatRoom>() {
    @Override
    public void onSuccess(EMChatRoom value) {    
    } 
    @Override
    public void onError(int error, String errorMsg) {
    
    }
});

将成员移出聊天室

管理员调用该接口可以将成员移出聊天室。

注意

  • 仅聊天室所有者和管理员可调用该方法;
  • 聊天室成员会收到 onRemovedFromChatRoom 通知;
  • 移出原因:EMAChatRoomManagerListener#BE_KICKED
  • 成员被移出后可重新进入聊天室。

示例代码如下:

// Asynchronous processing is required.
EMClient.getInstance().chatroomManager().removeChatRoomMembers(chatRoomId, members);

添加用户至聊天室黑名单

管理员可以调用该接口将成员加入聊天室黑名单。

注意

  • 仅聊天室所有者和管理员可调用该方法;
  • 聊天室成员会收到 onRemovedFromChatRoom 通知,触发其他成员的 onMemberExited 回调方法;
  • 移除原因:EMAChatRoomManagerListener#BE_KICKED
  • 黑名单中的成员需要聊天室所有者主动从黑名单移除后才能再次加入聊天室。

示例代码如下:

// Asynchronous processing is required.
EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().blockChatroomMembers(chatRoomId, members);

将成员移出聊天室黑名单

管理员可调用该接口将成员移出聊天室黑名单。

注意

仅聊天室所有者和管理员可调用该接口。

示例代码如下:

// Asynchronous processing is required.
EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().unblockChatRoomMembers(chatRoomId, members);

管理禁言

获取聊天室禁言列表

管理员可调用该接口获取聊天室禁言列表。

注意

  • 仅聊天室所有者和管理员可调用该接口;
  • 权限高者可禁言权限低者,反之不允许。

示例代码如下:

// Asynchronous processing is required.
Map<String, Long> memberMap =  EMClient.getInstance().chatroomManager().fetchChatRoomMuteList(chatRoomId, pageNum, pageSize);

将成员禁言

管理员可调用该接口将成员禁言。

注意

  • 仅聊天室所有者和管理员可调用该接口;
  • 权限高者可禁言权限低者,反之不允许;
  • 被禁言的聊天室成员和其他管理员会收到 onMuteListAdded 回调方法。

示例代码如下:

// Asynchronous processing is required.
EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().muteChatRoomMembers(chatRoomId, members, duration);

解除禁言

管理员可调用该接口将一组成员解除禁言。

注意

  • 仅聊天室所有者和管理员可调用该接口;
  • 权限高者可禁言权限低者,反之不允许;
  • 被禁言的聊天室成员及其他管理员会收到 onMuteListRemoved 回调方法。

示例代码如下:

// Asynchronous processing is required.
EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().unMuteChatRoomMembers(chatRoomId, members);

设置全员禁言

管理员可调用该接口设置全员禁言。

注意

  • 仅聊天室所有者和管理员可调用该接口;
  • 设置全员禁言后,仅白名单中的成员可以发言;
  • 聊天室成员会收到 onAllMemberMuteStateChanged 回调方法。

示例代码如下:

EMClient.getInstance().chatroomManager().muteAllMembers(chatRoomId, new EMValueCallBack<EMChatRoom>() {
    @Override
    public void onSuccess(EMChatRoom value) {    
    }
    @Override
    public void onError(int error, String errorMsg) {  
    }
});

解除全员禁言

管理员可调用该接口设置解除全员禁言。

注意

  • 仅聊天室所有者和管理员可调用该接口;
  • 解除全员禁言后,仅黑名单中的成员不可以发言;
  • 聊天室成员会收到 onAllMemberMuteStateChanged 回调方法。

示例代码如下:

EMClient.getInstance().chatroomManager().unmuteAllMembers(chatRoomId, new EMValueCallBack<EMChatRoom>() {
    @Override
    public void onSuccess(EMChatRoom value) {       
    } 
    @Override
    public void onError(int error, String errorMsg) {    
    }
});

管理管理员

变更聊天室所有者

聊天室所有者可调用该接口变更聊天室所有者。

注意

  • 聊天室的所有者仅有一人;
  • 仅聊天室所有者可调用该接口;
  • 被操作成员及其他管理员会触发 onOwnerChanged 回调方法。

示例代码如下:

// Asynchronous processing is required.
EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().changeOwner(chatRoomId, newOwner);

添加聊天室管理员

聊天室所有者可调用该接口添加聊天室管理员。

注意

  • 聊天室的所有者仅有一人;
  • 仅聊天室所有者可调用该接口;
  • 添加的管理员及其他管理员会触发 onAdminAdded 回调方法。

示例代码如下:

// Asynchronous processing is required.
EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().addChatRoomAdmin(chatRoomId, admin);

移除聊天室管理员

聊天室所有者可调用该接口移除聊天室管理员。

注意

  • 聊天室的所有者仅有一人;
  • 仅聊天室所有者可调用该接口;
  • 被移除的管理员及其他管理员会触发 onAdminRemoved 回调方法。

示例代码如下:

// Asynchronous processing is required.
EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().removeChatRoomAdmin(chatRoomId, admin);

聊天室相关回调

跳转到聊天室监听方法