• UIKit
  • SDK
  • 服务端 API
Chat/
SDK/
Unity(Game Solution)/
群组/
SDK
  • 跑通Demo
  • SDK 集成
  • 初始化
  • 登录和注销
  • 消息
    • 消息概述
    • 发送消息
    • 接收消息
    • 历史消息
    • 转发消息
    • 修改消息
    • 删除消息
    • 清空消息
    • 撤回消息
    • 在线消息
    • 已读回执
    • 查询消息
    • 群 @ 消息
    • 定向群消息
    • 通知免打扰
    • 消息扩展
  • 会话
    • 会话概述
    • 会话列表
    • 获取会话
    • 未读会话数
    • 置顶会话
    • 删除会话
    • 会话草稿
    • 会话标记
    • 会话组
  • 群组
    • 群组概述
    • 群组管理
    • 群资料
    • 群成员管理
    • 群成员资料
    • 自定义群属性
    • 群计数器
  • 用户
    • 用户资料
    • 用户状态
    • 好友管理
    • 好友列表
    • 黑名单
  • Changelog
  • 开发指引
  • 控制台指南
    • 创建和升级应用
    • 基本配置
    • 功能配置
    • 账号管理
    • 群组管理
    • 回调配置
  • 产品介绍
    • 消息管理
      • 单聊消息
      • 消息存储
      • 离线推送
      • 群消息
      • 消息格式
    • 账号系统
      • 登陆验证
      • 在线状态管理
    • 群相关
      • 群组系统
      • 群组管理
    • 用户资料和关系链
      • 资料管理
      • 关系链管理
  • 购买指南
    • 计费概述
    • 价格中心
  • 错误码

群成员管理

功能描述

群成员管理指的是对成员进行列表拉取、禁言、踢人、授权、转让群主等操作。


获取群成员列表

您可以调用 GroupGetMemberInfoList (Details) 获取指定群的群成员列表。该列表中包含了各个群成员的资料信息,例如用户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 (Details) 接口时,您可以指定拉取特定角色的信息列表。
过滤器
过滤类型
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 (Details) 禁言某一个群成员并设置禁言时间。禁言时间单位为秒,禁言信息存储于群成员的 group_member_info_shutup_time 属性字段中。
群成员被禁言后,全员(包括被禁言的群成员)都会收到 GroupTipsEventCallback (Details) 事件回调。

禁言整个群

群主或管理员也可以通过 GroupModifyGroupInfo (Details) 接口对整个群进行禁言,将 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 (Details) 接口可以将指定的普通群成员踢出群组。
普通群成员被踢后,全员(包括被踢人)会收到 GroupTipsEventCallback (Details) 回调。
由于直播群(AVChatRoom)对进群没有限制,因此直播群(AVChatRoom)没有支持踢人的接口,您可以使用 GroupModifyMemberInfo (Details) 禁言指定成员达到类似的成员管控的目的。
说明:
只有群主能将管理员踢出群组。
示例代码如下:
GroupDeleteMemberParam param = new GroupDeleteMemberParam
{
group_delete_member_param_group_id = "group_id",
group_delete_member_param_identifier_array = new List<string>
{
"user_id"
}
};
TIMResult res = TencentIMSDK.GroupDeleteMember(param, (int code, string desc, List<GroupDeleteMemberResult> result, string user_data)=>{
// 处理异步逻辑
});

设置管理员

群主调用 GroupModifyMemberInfo (Details) 可以对陌生人社交群(Public)或临时会议群(Meeting)中的群成员进行管理员授权。
普通成员被授权后,拥有跟管理员同样的权限,例如支持以下操作:
修改群组基本资料
将普通群成员踢出群
将普通群成员禁言(即禁止其在一段时间内发言)
审批其他用户的入群申请
更多详情可参考 群成员角色介绍
普通成员被授权/被取消为管理员后,全员(包括被设置的成员)会收到 GroupTipsEventCallback (Details) 回调。
示例代码如下:
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 (Details) 把群主转让给其他群成员。
示例代码如下:
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 (Details) 可以获取群在线人数。
说明:
1. 目前仅直播群(AVChatRoom)支持获取群在线人数。
2. SDK 调用频率限制为 60 秒 1 次。
代码示例如下:
TIMResult res = TencentIMSDK.GroupGetOnlineMemberCount("group_id", (int code, string desc, GroupGetOnlineMemberCountResult result, string user_data)=>{
// 处理异步逻辑
});