聊天室管理


环信聊天室模型支持最大成员数为5000,和群组不同,聊天室内成员离线后,服务器当监听到此成员不在线后不再会给此成员再发推送。

  • 支持最大成员5000;
  • 环信的聊天室内仅有 owner 和游客;
  • 不支持客户端建立聊天室;
  • 不支持客户端邀请;
  • 不支持 REST 邀请。

服务器端

创建聊天室

curl -X POST “http://a1.easemob.com/easemob-demo/chatdemoui/chatrooms” -H “Authorization: Bearer ${token}” -d ‘{“owner”:”u1”,”members”:[“u1”,”u2”],”maxusers”:5000,”groupname”:”chatroom title”,”desc”:”chatroom description”}”

查询所有 APP 聊天室

curl -X GET “http://a1.easemob.com/easemob-demo/chatdemoui/chatrooms” -H “Authorization: Bearer ${token}”

查询聊天室详情

curl -X GET “http://a1.easemob.com/easemob-demo/chatdemoui/chatrooms/1430798028680235” -H “Authorization: Bearer ${token}”

聊天室踢人

curl -X DELETE ‘https://a1.easemob.com/easemob-demo/chatdemoui/chatrooms/1430798028680235/users/u2’ -H “Authorization: Bearer ${token}”

删除聊天室

curl -X DELETE ‘https://a1.easemob.com/easemob-demo/chatdemoui/chatrooms/143228117786605’ -H “Authorization: Bearer ${token}”

更多服务器端 REST 操作请参考聊天室管理

客户端

  • 支持查询所有 APP 聊天室;
  • 支持查询聊天室详情;
  • 加入聊天室;
  • 退出聊天室;
  • 客户端的 API 都是通过EMChatroomManager(EMClient.getInstance().chatroomManager())操作。

加入聊天室

//roomId为聊天室ID
EMClient.getInstance().chatroomManager().joinChatRoom(roomId, new EMValueCallBack<EMChatRoom>() {

		@Override
		public void onSuccess(EMChatRoom value) {   
			//加入聊天室成功
		}

		@Override
		public void onError(final int error, String errorMsg) {
			//加入聊天室失败
		}
	});

注意:对于聊天室模型,请一定要等到 Join 回调成功后再去初始化 conversation。

离开聊天室

EMClient.getInstance().chatroomManager().leaveChatRoom(toChatUsername);

此方法是异步方法,不会阻塞当前线程。此方法没有回调,原因是在任何场景下退出聊天室,SDK 保证退出成功,无论有网出错,还是无网退出。对于聊天室模型,一般退出会话页面,就会调用此 leave 方法。

获取聊天室列表

EMCursorResult<EMChatRoom> result = EMClient.getInstance().chatroomManager().fetchPublicChatRoomsFromServer(pageSize, cursor) 

参数:

  • pageSize: 此次获取的条目
  • cursor: 后台需要的cursor ID,根据此ID再次获取pageSize的条目,首次传null即可

返回值:

EMCursorResult<EMChatRoom> 内部包含返回的cursor和List<EMChatRoom>

代码

获取聊天室详情

EMClient.getInstance().chatroomManager().fetchChatRoomFromServer(roomId)
room.getName();//聊天室名称
room.getId();//聊天室id
room.getDescription();//聊天室描述
room.getOwner();//聊天室创建者
.
.
.

参考API文档

roomId 聊天室id

fetchMembers 是否要获取聊天室成员

EMClient.getInstance().chatroomManager().fetchChatRoomFromServer(roomId, fetchMembers)

注册聊天室监听

在会话页面注册监听,来监听成员被踢和聊天室被删除。

EMClient.getInstance().chatroomManager().addChatRoomChangeListener(new EMChatRoomChangeListener(){

	@Override
	public void onChatRoomDestroyed(String roomId, String roomName) {
		if(roomId.equals(toChatUsername)){
			finish();
		}
	}

	@Override
	public void onMemberJoined(String roomId, String participant) {                
	}

	@Override
	public void onMemberExited(String roomId, String roomName,
			String participant) {
		
	}

	@Override
	public void onMemberKicked(String roomId, String roomName,
			String participant) {
		if(roomId.equals(toChatUsername)){
			finish();
		}
	}
	
});

移除聊天室监听

EMClient.getInstance().chatroomManager().removeChatRoomChangeListener(chatroomListener)

上一页:群组管理

下一页:实时通话