差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
im:android:basics:group [2018/11/02 10:29] huanxinfudh |
im:android:basics:group [2022/06/28 07:16] (当前版本) jennifer.zeng [屏蔽群消息] |
||
---|---|---|---|
行 1: | 行 1: | ||
====== 群组管理 ====== | ====== 群组管理 ====== | ||
+ | |||
+ | 更新时间:2021-12-31 | ||
+ | |||
+ | 新版文档见:[[ccim:android:group1|群组]]。 | ||
+ | |||
+ | ---- | ||
+ | |||
许多群组操作前需要鉴别权限,包括当前用户是否在群里面,是否拥有管理员或者所有者权限。 | 许多群组操作前需要鉴别权限,包括当前用户是否在群里面,是否拥有管理员或者所有者权限。 | ||
- | 建议用户登录成功后,调用EMClient.getInstance().groupManager().getJoinedGroupsFromServer(); | + | 建议用户登录成功后,调用 EMClient.getInstance().groupManager().getJoinedGroupsFromServer(); |
刷新本地群组列表,确保鉴别权限正常工作。 | 刷新本地群组列表,确保鉴别权限正常工作。 | ||
- | SDK3.3.0 release新增许多群组操作的API,请查看链接[[im:200androidclientintegration:3.3.0apichange|3.3.0api修改]] | + | SDK 3.3.0 release 新增许多群组操作的 API,请查看链接 [[im:200androidclientintegration:3.3.0apichange|3.3.0 api 修改]] |
+ | |||
+ | **注意**:''1、群主+管理员 一起一共不超过 100 个,也就是不超过 99 个管理员。2、群组成员最大数(包括群主)取决于所选择的版本,不同版本最大数不同。'' | ||
---- | ---- | ||
===== 收发消息 ===== | ===== 收发消息 ===== | ||
- | 收发消息及聊天记录相关等见[[im:android:basics:message|消息]]。 | + | 收发消息及聊天记录相关内容等详见 [[im:android:basics:message|消息]]。 |
===== 新建群组 ===== | ===== 新建群组 ===== | ||
行 17: | 行 26: | ||
* @param groupName 群组名称 | * @param groupName 群组名称 | ||
* @param desc 群组简介 | * @param desc 群组简介 | ||
- | * @param allMembers 群组初始成员,如果只有自己传空数组即可 | + | * @param allMembers 群组初始成员,如果只有自己传空数组即可(最多可以传100个成员) |
* @param reason 邀请成员加入的reason | * @param reason 邀请成员加入的reason | ||
- | * @param option 群组类型选项,可以设置群组最大用户数(默认200)及群组类型@see {@link EMGroupStyle} | + | * @param option 群组类型选项,可以设置群组最大用户数(取决于所选择的版本,不同版本最大数不同)及群组类型@see {@link EMGroupStyle} |
- | * option.inviteNeedConfirm表示邀请对方进群是否需要对方同意,默认是需要用户同意才能加群的。 | + | * option.inviteNeedConfirm表示邀请对方进群是否需要对方同意,默认是被邀请方自动进群。 |
* option.extField创建群时可以为群组设定扩展字段,方便个性化订制。 | * option.extField创建群时可以为群组设定扩展字段,方便个性化订制。 | ||
* @return 创建好的group | * @return 创建好的group | ||
行 31: | 行 40: | ||
EMClient.getInstance().groupManager().createGroup(groupName, desc, allMembers, reason, option); | EMClient.getInstance().groupManager().createGroup(groupName, desc, allMembers, reason, option); | ||
</code> | </code> | ||
+ | 注:如果option.inviteNeedConfirm设置为false,即直接加被邀请人进群。在此情况下,被邀请人设置非自动进群是不起作用的。 | ||
+ | |||
option里的GroupStyle分别为: | option里的GroupStyle分别为: | ||
行 169: | 行 180: | ||
List<String> members = group.getMembers();//获取内存中的群成员 | List<String> members = group.getMembers();//获取内存中的群成员 | ||
List<String> adminList = group.getAdminList();//获取管理员列表 | List<String> adminList = group.getAdminList();//获取管理员列表 | ||
+ | boolean isMsgBlocked = group.isMsgBlocked();//获取是否已屏蔽群组消息 | ||
... | ... | ||
</code> | </code> | ||
行 175: | 行 187: | ||
===== 屏蔽群消息 ===== | ===== 屏蔽群消息 ===== | ||
- | 不允许 Owner 权限的调用。 | + | |
<code java> | <code java> | ||
/** | /** | ||
行 247: | 行 259: | ||
*/ | */ | ||
EMClient.getInstance().groupManager().muteGroupMembers(String groupId, List<String> muteMembers, long duration);//需异步处理 | EMClient.getInstance().groupManager().muteGroupMembers(String groupId, List<String> muteMembers, long duration);//需异步处理 | ||
- | 目前duration参数不起作用,暂时只支持永久禁言和解除禁言两种操作, duration建议输入12*30*24*60*60*1000 | ||
</code> | </code> | ||
行 262: | 行 273: | ||
EMClient.getInstance().groupManager().unMuteGroupMembers(String groupId, List<String> members);//需异步处理 | EMClient.getInstance().groupManager().unMuteGroupMembers(String groupId, List<String> members);//需异步处理 | ||
</code> | </code> | ||
+ | |||
+ | |||
==== 获取群成员禁言列表 ==== | ==== 获取群成员禁言列表 ==== | ||
行 274: | 行 287: | ||
*/ | */ | ||
EMClient.getInstance().groupManager().fetchGroupMuteList(String groupId, int pageNum, int pageSize) | EMClient.getInstance().groupManager().fetchGroupMuteList(String groupId, int pageNum, int pageSize) | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== 开启和关闭全员禁言 ==== | ||
+ | owner和管理员可以开启和关闭全员禁言。 | ||
+ | <code java> | ||
+ | /** | ||
+ | * \~chinese | ||
+ | * 禁言所有成员 | ||
+ | * @param groupId 群组id | ||
+ | */ | ||
+ | public void muteAllMembers(final String groupId, final EMValueCallBack<EMGroup> callBack) | ||
+ | | ||
+ | /** | ||
+ | * \~chinese | ||
+ | * 解除所有成员禁言 | ||
+ | * @param groupId 群组id | ||
+ | */ | ||
+ | public void unmuteAllMembers(final String groupId, final EMValueCallBack<EMGroup> callBack) | ||
+ | </code> | ||
+ | ==== 白名单管理 ==== | ||
+ | 可以将用户添加到白名单中,用户白名单在管理员开启了全员禁言时生效,可以运行白名单用户发出消息。 | ||
+ | 另外可以将用户移出白名单,检查自己是否在白名单中以及获取白名单列表。 | ||
+ | <code java> | ||
+ | /** | ||
+ | * \~chinese | ||
+ | * 添加用户到白名单 | ||
+ | * @param groupId 群组id | ||
+ | * @param members 成员id列表 | ||
+ | */ | ||
+ | public void addToGroupWhiteList(final String groupId, final List<String> members, final EMCallBack callBack) | ||
+ | |||
+ | /** | ||
+ | * \~chinese | ||
+ | * 将用户从白名单移除 | ||
+ | * @param groupId 群组id | ||
+ | * @param members 成员id列表 | ||
+ | */ | ||
+ | public void removeFromGroupWhiteList(final String groupId, final List<String> members, final EMCallBack callBack) | ||
+ | |||
+ | /** | ||
+ | * \~chinese | ||
+ | * 检查自己是否在白名单中 | ||
+ | * @param groupId 群组id | ||
+ | */ | ||
+ | public void checkIfInGroupWhiteList(final String groupId, EMValueCallBack<Boolean> callBack) | ||
+ | |||
+ | /** | ||
+ | * \~chinese | ||
+ | * 从服务器获取白名单成员列表 | ||
+ | * @param groupId 群组id | ||
+ | */ | ||
+ | public void fetchGroupWhiteList(final String groupId, final EMValueCallBack<List<String>> callBack) | ||
</code> | </code> | ||
行 408: | 行 474: | ||
public void onMuteListRemoved(String groupId, final List<String> mutes) { | public void onMuteListRemoved(String groupId, final List<String> mutes) { | ||
//成员从禁言列表里移除通知 | //成员从禁言列表里移除通知 | ||
+ | } | ||
+ | | ||
+ | @Override | ||
+ | public void onWhiteListAdded(String groupId, List<String> whitelist) { | ||
+ | //成员被加到白名单中 | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public void onWhiteListRemoved(String groupId, List<String> whitelist) { | ||
+ | //成员从白名单中被移除 | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public void onAllMemberMuteStateChanged(String groupId, boolean isMuted) { | ||
+ | //全员禁言是否开启 | ||
} | } | ||