tencent cloud

文档反馈

React Native

最后更新时间:2022-11-21 17:12:59

    功能描述

    群成员管理指的是对成员进行列表拉取、禁言、踢人、授权、转让群主等操作。相关方法在核心类 TencentImSDKPlugin.v2TIMManager.getGroupManager() 中。

    获取群成员列表

    您可以调用 getGroupMemberList (Details) 获取指定群的群成员列表。该列表中包含了各个群成员的资料信息,例如用户 ID(userID)、群名片(nameCard)、头像(faceUrl)、昵称(nickName)、进群时间(joinTime)等信息。

    一个群中的成员人数可能很多(例如 5000+),群成员列表的拉取接口支持过滤器(filter)和分页拉取(nextSeq)两个高级特性。

    过滤器(filter)

    在调用 getGroupMemberList (Details) 接口时,您可以指定 filter 确定是否仅拉取特定角色的信息列表。

    过滤器 过滤类型
    GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_ALL 拉取所有群成员的信息列表
    GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_OWNER 仅拉取群主的信息列表
    GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_ADMIN 仅拉取群管理员的信息列表
    GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_COMMON 仅拉取普通群成员的信息列表

    示例代码如下:

    // 通过 filter 参数指定只拉取群主的资料
    const groupID = "groupID";
    const count = 10;
    const filter = GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_ADMIN;
    const offset = 0;
    const nextSeq = "0";
    groupManager.getGroupMemberList(groupID, filter, nextSeq, count, offset);
    

    分页拉取(nextSeq)

    很多情况下,用户界面上并不需要展示全部的群成员信息,只需展示群成员列表的第一页即可。等用户单击“下一页”或在列表页上拉刷新时,才需要拉取更多的群成员。针对此类场景,您可以使用分页拉取。

    分页拉取的步骤为:

    1. 首次调用 getGroupMemberList 时,指定参数 nextSeq 为 0(表示从头开始拉取会话列表),一次最多拉取 50 个群成员对象。

    2. 首次拉取群成员列表成功后,getGroupMemberList 的回调结果 V2TIMGroupMemberInfoResult 中会包含 nextSeq(下次分页拉取的字段):

      • 如果 nextSeq 等于 0,表示已经拉取了全部的群成员。
      • 如果 nextSeq 大于 0,表示还有更多的群成员可以拉取。此时并不意味着要立刻开始拉取 “下一页” 的成员列表。在常见的通信软件中,分页拉取通常由用户的滑动操作触发的,用户通过上拉触发一次分页拉取。
    3. 当用户继续上拉群成员列表时,如果还有更多的群成员可以拉取,可以继续调用 getGroupMemberList 接口,并传入新一轮的 nextSeq参数(nextSeq 数值来自上一次拉取返回的 V2TIMGroupMemberInfoResult 对象)。

    4. 重复执行【步骤 3】直至 nextSeq 等于 0,拉取结束。

    示例代码如下:

    // 通过 filter 参数指定只拉取群主的资料
    const groupID = "groupID";
    const count = 10;
    const filter = GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_ADMIN;
    const offset = 0;
    const nextSeq = "0";
    groupManager.getGroupMemberList(groupID, filter, nextSeq, count, offset);
    

    禁言

    禁言指定群成员

    群主或管理员可以通过 muteGroupMember (Details) 禁言某一个群成员并设置禁言时间。禁言时间单位为秒,禁言信息存储于群成员的 muteUtil 属性字段中。

    群成员被禁言后,全员(包括被禁言的群成员)都会收到 onMemberInfoChanged (Details) 事件回调。

    禁言整个群

    群主或管理员也可以通过 setGroupInfo (Details) 接口对整个群进行禁言,将 allMuted属性字段设置为 true 即可。全群禁言没有时间限制,需通过将群资料 setAllMuted(false) 解除禁言。

    说明:

    全员禁言后触发 onGroupInfoChanged (Details) 事件回调,该功能默认是关闭的,可在控制台内自行开通。
    方式: 进入即时通信 IM 控制台群组配置模块,选择群系统通知配置,为各种类型群,单击操作中编辑,修改“群禁言变更通知”,即可。
    只有群主能将管理员禁言。

    示例代码如下:

    // 禁言群成员 userB 10分钟
    const groupID = "groupID";
    const userID = "userID";
    const seconds = 10;
    groupManager.muteGroupMember(groupID, userID, seconds);
    // 全员禁言
    groupManager.setGroupInfo({
    isAllMuted: true,
    groupID: "",
    groupType: "Public",
    });
    TencentImSDKPlugin.v2TIMManager.addGroupListener({
    onMemberInfoChanged: (groupID, v2TIMGroupMemberChangeInfoList) => {
      //群成员信息更改
    },
    onGroupInfoChanged: (groupID, info) => {
      // 群信息修改
    },
    });
    

    踢人

    群主或管理员调用 kickGroupMember (Details) 接口可以将指定的普通群成员踢出群组。

    普通群成员被踢后,全员(包括被踢人)会收到 onMemberKicked (Details) 回调。

    由于直播群(AVChatRoom)对进群没有限制,因此直播群(AVChatRoom)没有支持踢人的接口,您可以使用 muteGroupMember (Details) 禁言指定成员达到类似的成员管控的目的。禁言操作参见 禁言

    说明:

    只有群主能将管理员踢出群组。

    示例代码如下:

    groupManager.kickGroupMember("groupID", []);
    

    设置管理员

    群主调用 setGroupMemberRole (Details) 可以对陌生人社交群(Public)或临时会议群(Meeting)中的群成员进行管理员授权。

    普通成员被授权后,拥有跟管理员同样的权限,例如支持以下操作:

    • 修改群组基本资料
    • 将普通群成员踢出群
    • 将普通群成员禁言(即禁止其在一段时间内发言)
    • 审批其他用户的入群申请

    更多详情可参见 群成员角色介绍

    普通成员被授权为管理员后,全员(包括被设置的成员)会收到 onGrantAdministrator (Details) 回调。

    普通成员被取消管理员授权后,全员(包括被设置的成员)会收到 onRevokeAdministrator (Details) 回调。

    示例代码如下:

    groupManager.setGroupMemberRole(
    "groupID",
    "userID",
    GroupMemberRoleTypeEnum.V2TIM_GROUP_MEMBER_ROLE_ADMIN
    );
    // 监听角色更改
    TencentImSDKPlugin.v2TIMManager.addGroupListener({
    onMemberInfoChanged: (groupID, v2TIMGroupMemberChangeInfoList) => {},
    onGroupInfoChanged: (groupID, info) => {},
    onGrantAdministrator: (groupID, info, infolist) => {},
    onRevokeAdministrator: (groupID, info, infolist) => {},
    });
    

    转让群主

    群主可以调用 transferGroupOwner 把群主转让给其他群成员。

    群主转让后,全员会收到 onGroupInfoChanged 回调,其中 V2TIMGroupChangeInfo 的 type 为 V2TIMGroupChangeInfo.V2TIM_GROUP_INFO_CHANGE_TYPE_OWNER,value 值为新群主的 UserID。

    示例代码如下:

    groupManager.transferGroupOwner("groupID", "userID");
    

    获取群在线人数

    调用 getGroupOnlineMemberCount (Details) 可以获取群在线人数。

    说明:

    1. 目前仅直播群(AVChatRoom)支持获取群在线人数。
    2. SDK 调用频率限制为 60 秒 1 次。

    代码示例如下:

    groupManager.getGroupOnlineMemberCount("groupID");
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持