群组管理


收发消息

收发消息及聊天记录相关等见消息

新建群组

/**
 * 创建群组
 * @param groupName 群组名称
 * @param desc 群组简介
 * @param allMembers 群组初始成员,如果只有自己传空数组即可
 * @param reason 邀请成员加入的reason
 * @param option 群组类型选项,可以设置群组最大用户数(默认200)及群组类型@see {@link EMGroupStyle}
 * @return 创建好的group
 * @throws HyphenateException
 */
EMGroupOptions option = new EMGroupOptions();
option.maxUsers = 200;
option.style = EMGroupStyle.EMGroupStylePrivateMemberCanInvite;

EMClient.getInstance().groupManager().createGroup(groupName, desc, allMembers, reason, option);

option里的GroupStyle分别为:

  • EMGroupStylePrivateOnlyOwnerInvite——私有群,只有群主可以邀请人;
  • EMGroupStylePrivateMemberCanInvite——私有群,群成员也能邀请人进群;
  • EMGroupStylePublicJoinNeedApproval——公开群,加入此群除了群主邀请,只能通过申请加入此群;
  • EMGroupStylePublicOpenJoin ——公开群,任何人都能加入此群。

群组加人

//群主加人调用此方法
EMClient.getInstance().groupManager().addUsersToGroup(groupId, newmembers);//需异步处理
//私有群里,如果开放了群成员邀请,群成员邀请调用下面方法
EMClient.getInstance().groupManager().inviteUser(groupId, newmembers, null);//需异步处理

群组踢人

//把username从群组里删除
EMClient.getInstance().groupManager().removeUserFromGroup(groupId, username);//需异步处理

加入某个群组

只能用于加入公开群。

//如果群开群是自由加入的,即group.isMembersOnly()为false,直接join
EMClient.getInstance().groupManager().joinGroup(groupid);//需异步处理
//需要申请和验证才能加入的,即group.isMembersOnly()为true,调用下面方法
EMClient.getInstance().groupManager().applyJoinToGroup(groupid, "求加入");//需异步处理

退出群组

EMClient.getInstance().groupManager().leaveGroup(groupId);//需异步处理

解散群组

EMClient.getInstance().groupManager().destroyGroup(groupId);//需异步处理

获取群组列表

//从服务器获取自己加入的和创建的群组列表,此api获取的群组sdk会自动保存到内存和db。
List<EMGroup> grouplist = EMClient.getInstance().groupManager().getJoinedGroupsFromServer();//需异步处理

//从本地加载群组列表
List<EMGroup> grouplist = EMClient.getInstance().groupManager().getAllGroups();

//获取公开群列表
//pageSize为要取到的群组的数量,cursor用于告诉服务器从哪里开始取
EMCursorResult<EMGroupInfo> result = EMClient.getInstance().groupManager().getPublicGroupsFromServer(pageSize, cursor);//需异步处理
List<EMGroupInfo> groupsList = List<EMGroupInfo> returnGroups = result.getData();
String cursor = result.getCursor();

修改群组名称

//groupId 需要改变名称的群组的id
//changedGroupName 改变后的群组名称
EMClient.getInstance().groupManager().changeGroupName(groupId,changedGroupName);//需异步处理

群组信息

获取单个群组信息。

//根据群组ID从本地获取群组基本信息
EMGroup group = EMClient.getInstance().groupManager().getGroup(groupId);
//根据群组ID从服务器获取群组基本信息
EMGroup group = EMClient.getInstance().groupManager().getGroupFromServer(groupId);

group.getMembers();//获取群成员
group.getOwner();//获取群主
...

其它方法详见环信接口文档

屏蔽群消息

不允许 Owner 权限的调用。

/**
* 屏蔽群消息后,就不能接收到此群的消息(还是群里面的成员,但不再接收消息)
* @param groupId, 群ID
* @throws EasemobException
*/
EMClient.getInstance().groupManager().blockGroupMessage(groupId);//需异步处理

解除屏蔽群

/**
* 取消屏蔽群消息,就可以正常收到群的所有消息
* @param groupId
* @throws EaseMobException
*/
EMClient.getInstance().groupManager().unblockGroupMessage(groupId);//需异步处理

群组黑名单

将群成员拉入群组的黑名单

/**
* 将用户加到群组的黑名单,被加入黑名单的用户无法加入群,无法收发此群的消息
* (只有群主才能设置群的黑名单)
* @param groupId, 群组的ID
* @param username, 待屏蔽的用户名
* @exception EaseMobException 出错会抛出
*/
EMClient.getInstance().groupManager().blockUser(groupId, username);//需异步处理

将用户移除出群黑名单

/**
* 将用户从群组的黑名单移除(只有群主才能调用此函数)
* @param groupId, 群组的ID
* @param username, 待解除屏蔽的用户名
*/
EMClient.getInstance().groupManager().unblockUser(groupId, username);//需异步处理

获取群组的黑名单用户列表

/**
* 获取群组的黑名单用户列表
* (只有群主才能调用此函数)
* @return List<String> 
* @throws EaseMobException 获取失败
*/
EMClient.getInstance().groupManager().getBlockedUsers(groupId);//需异步处理

群组事件监听

EMClient.getInstance().groupManager().addGroupChangeListener(new EMGroupChangeListener() {
	@Override
	public void onUserRemoved(String groupId, String groupName) {
		//当前用户被管理员移除出群组
	}
	@Override
	public void onInvitationReceived(String groupId, String groupName, String inviter, String reason) {
		//收到加入群组的邀请
	}
	@Override
	public void onInvitationDeclined(String groupId, String invitee, String reason) {
		//群组邀请被拒绝
	}
	@Override
	public void onInvitationAccpted(String groupId, String inviter, String reason) {
		//群组邀请被接受
	}
	@Override
	public void onGroupDestroy(String groupId, String groupName) {
		//群组被创建者解散
	}
	@Override
	public void onApplicationReceived(String groupId, String groupName, String applyer, String reason) {
		//收到加群申请
	}
	@Override
	public void onApplicationAccept(String groupId, String groupName, String accepter) {
		//加群申请被同意
	}
	@Override
	public void onApplicationDeclined(String groupId, String groupName, String decliner, String reason) {
	    // 加群申请被拒绝
	}
});

Demo及SDK下载

下载Demo及SDK

详细文档请参考 Java Doc


上一页:好友管理

下一页:聊天室管理