腾讯云即时通信IMUnity_AI解决方案_同尘科技
功能描述
群成员管理指的是对成员进行列表拉取、禁言、踢人、授权、转让群主等操作。
获取群成员列表
您可以调用 GroupGetMemberInfoList
(点击查看详情) 获取指定群的群成员列表。该列表中包含了各个群成员的资料信息,例如用户ID(group_member_info_identifier
)、群名片(group_member_info_name_card
)、头像(group_member_info_face_url
)、昵称(group_member_info_nick_name
)、进群时间(group_member_info_join_time
)等信息。一个群中的成员人数可能很多(例如 5000+),群成员列表的拉取接口支持过滤器(group_get_members_info_list_param_option
)和分页拉取(group_get_members_info_list_param_next_seq
)两个高级特性。
过滤器(filter)
在调用 GroupGetMemberInfoList
(点击查看详情) 接口时,您可以指定拉取特定角色的信息列表。
过滤器 | 过滤类型 |
TIMGroupMemberRoleFlag.kTIMGroupMemberRoleFlag_All | 拉取所有群成员的信息列表 |
TIMGroupMemberRoleFlag.kTIMGroupMemberRoleFlag_Owner | 仅拉取群主的信息列表 |
TIMGroupMemberRoleFlag.kTIMGroupMemberRoleFlag_Admin | 仅拉取群管理员的信息列表 |
TIMGroupMemberRoleFlag.kTIMGroupMemberRoleFlag_Member | 仅拉取普通群成员的信息列表 |
示例代码如下:
// 通过 filter 参数指定只拉取群主的资料GroupGetMemberInfoListParam param = new GroupGetMemberInfoListParam{ group_get_members_info_list_param_group_id = "group_id", group_get_members_info_list_param_option = new GroupMemberGetInfoOption { group_member_get_info_option_role_flag = TIMGroupMemberRoleFlag.kTIMGroupMemberRoleFlag_Owner }};TIMResult res = TencentIMSDK.GroupGetMemberInfoList(param, (int code, string desc, GroupGetMemberInfoListResult result, string user_data)=>{ // 处理异步逻辑});
分页拉取(nextSeq)
很多情况下,用户界面上并不需要展示全部的群成员信息,只需展示群成员列表的第一页即可。等用户单击“下一页”或在列表页上拉刷新时,才需要拉取更多的群成员。针对此类场景,您可以使用分页拉取。分页拉取的步骤为:1. 首次调用 GroupGetMemberInfoList
时,指定参数 nextSeq
为 0(表示从头开始拉取会话列表),一次最多拉取 50 个群成员对象。2. 首次拉取群成员列表成功后,GroupGetMemberInfoList
的回调结果 GroupGetMemberInfoListResult
中会包含 group_get_memeber_info_list_result_next_seq
(下次分页拉取的字段):如果 nextSeq
等于 0,表示已经拉取了全部的群成员。如果 nextSeq
大于 0,表示还有更多的群成员可以拉取。此时并不意味着要立刻开始拉取 “下一页” 的成员列表。在常见的通信软件中,分页拉取通常由用户的滑动操作触发的,用户通过上拉触发一次分页拉取。3. 当用户继续上拉群成员列表时,如果还有更多的群成员可以拉取,可以继续调用 GroupGetMemberInfoList
接口,并传入新一轮的 nextSeq
参数(nextSeq
数值来自上一次拉取返回的 GroupGetMemberInfoListResult
对象)。4. 重复执行 步骤 3 直至 nextSeq
等于 0,拉取结束。示例代码如下:
// 通过 filter 参数指定只拉取群主的资料GroupGetMemberInfoListParam param = new GroupGetMemberInfoListParam{ group_get_members_info_list_param_group_id = "group_id", group_get_members_info_list_param_option = new GroupMemberGetInfoOption { group_member_get_info_option_role_flag = TIMGroupMemberRoleFlag.kTIMGroupMemberRoleFlag_Owner }, group_get_members_info_list_param_next_seq = 0};TIMResult res = TencentIMSDK.GroupGetMemberInfoList(param, (int code, string desc, GroupGetMemberInfoListResult result, string user_data)=>{ // 处理异步逻辑});
禁言
禁言指定群成员
群主或管理员可以通过 GroupModifyMemberInfo
(点击查看详情) 禁言某一个群成员并设置禁言时间。禁言时间单位为秒,禁言信息存储于群成员的 group_member_info_shutup_time
属性字段中。群成员被禁言后,全员(包括被禁言的群成员)都会收到 GroupTipsEventCallback
(点击查看详情) 事件回调。
禁言整个群
群主或管理员也可以通过 GroupModifyGroupInfo
(点击查看详情) 接口对整个群进行禁言,将 group_modify_info_param_is_shutup_all
属性字段设置为 true
即可。全群禁言没有时间限制,需通过将群资料 group_modify_info_param_is_shutup_all
修改为 false
解除禁言。说明 只有群主能将管理员禁言。示例代码如下:
// 禁言群成员 userB 10分钟GroupModifyMemberInfoParam param = new GroupModifyMemberInfoParam{ group_modify_member_info_group_id = "group_id", group_modify_member_info_identifier = "userB", group_modify_member_info_modify_flag = TIMGroupMemberModifyInfoFlag.kTIMGroupMemberModifyFlag_ShutupTime, group_modify_member_info_shutup_time = 600};TIMResult res = TencentIMSDK.GroupModifyMemberInfo(param, (int code, string desc, string user_data)=>{ // 处理异步逻辑});
// 全员禁言GroupModifyInfoParam param = new GroupModifyInfoParam{ group_modify_info_param_group_id = "group_id", group_modify_info_param_modify_flag = TIMGroupModifyInfoFlag.kTIMGroupModifyInfoFlag_ShutupAll, group_modify_info_param_is_shutup_all = true};TIMResult res = TencentIMSDK.GroupModifyGroupInfo(param, (int code, string desc, string user_data)=>{ // 处理异步逻辑});
踢人
群主或管理员调用 GroupDeleteMember
(点击查看详情) 接口可以将指定的普通群成员踢出群组。普通群成员被踢后,全员(包括被踢人)会收到 GroupTipsEventCallback
(点击查看详情) 回调。由于直播群(AVChatRoom)对进群没有限制,因此直播群(AVChatRoom)没有支持踢人的接口,您可以使用 GroupModifyMemberInfo
(点击查看详情) 禁言指定成员达到类似的成员管控的目的。说明 只有群主能将管理员踢出群组。示例代码如下:
GroupDeleteMemberParam param = new GroupDeleteMemberParam{ group_delete_member_param_group_id = "group_id", group_delete_member_param_identifier_array = new List { "user_id" }};TIMResult res = TencentIMSDK.GroupDeleteMember(param, (int code, string desc, List result, string user_data)=>{ // 处理异步逻辑});
设置管理员
群主调用 GroupModifyMemberInfo
(点击查看详情) 可以对陌生人社交群(Public)或临时会议群(Meeting)中的群成员进行管理员授权。普通成员被授权后,拥有跟管理员同样的权限,例如支持以下操作:修改群组基本资料将普通群成员踢出群将普通群成员禁言(即禁止其在一段时间内发言)审批其他用户的入群申请更多详情可参考 群成员角色介绍。普通成员被授权/被取消为管理员后,全员(包括被设置的成员)会收到 GroupTipsEventCallback
(点击查看详情) 回调。示例代码如下:
GroupModifyMemberInfoParam param = new GroupModifyMemberInfoParam{ group_modify_member_info_group_id = "group_id", group_modify_member_info_identifier = "user_id", group_modify_member_info_modify_flag = TIMGroupMemberModifyInfoFlag.kTIMGroupMemberModifyFlag_MemberRole, group_modify_member_info_member_role = TIMGroupMemberRole.kTIMMemberRole_Admin};TIMResult res = TencentIMSDK.GroupModifyMemberInfo(param, (int code, string desc, string user_data)=>{ // 处理异步逻辑});
转让群主
群主可以调用 GroupModifyMemberInfo
(点击查看详情) 把群主转让给其他群成员。示例代码如下:
GroupModifyMemberInfoParam param = new GroupModifyMemberInfoParam{ group_modify_member_info_group_id = "group_id", group_modify_member_info_identifier = "user_id", group_modify_member_info_modify_flag = TIMGroupMemberModifyInfoFlag.kTIMGroupMemberModifyFlag_MemberRole, group_modify_member_info_member_role = TIMGroupMemberRole.kTIMMemberRole_Owner};TIMResult res = TencentIMSDK.GroupModifyMemberInfo(param, (int code, string desc, string user_data)=>{ // 处理异步逻辑});
获取群在线人数
调用 GroupGetOnlineMemberCount
(点击查看详情) 可以获取群在线人数。说明1. 目前仅直播群(AVChatRoom)支持获取群在线人数。2. SDK 调用频率限制为 60 秒 1 次。代码示例如下:
TIMResult res = TencentIMSDK.GroupGetOnlineMemberCount("group_id", (int code, string desc, GroupGetOnlineMemberCountResult result, string user_data)=>{ // 处理异步逻辑});
交流与反馈
点此进入IM社群,享有专业工程师的支持,解决您的难题
对即时通讯IM解决方案有疑惑?想了解解决方案收费? 联系解决方案专家
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
暂无评论,你要说点什么吗?