功能描述

群组管理功能指的是创建群组、加入群组、获取已加入的群组、退出群组和解散群组等,相关方法在核心类 TencentImSDKPlugin.v2TIMManager.getGroupManager()中。

群事件监听

下文描述的群组管理功能中,有些会触发群事件通知回调,例如有人进群、有人退群等,这些事件都是由 IM 服务器自动触发的。

您可以调用 addGroupListener 添加群事件监听器。

当不想再接收群事件时,可调用 removeGroupListener 移除群事件监听器。

警告:

只有预先设置好群事件监听器,才能正常接收到下文中的各种群事件通知。

示例代码如下:

TencentImSDKPlugin.v2TIMManager.setGroupListener(listener: V2TimGroupListener());

创建群组

如果您想在创建群组的同时初始化群的信息,例如群简介、群头像、以及最初的几个群成员等,可以调用高级接口 createGroup 实现。创建成功的回调中会抛出 groupID

示例代码如下:

// 创建public群,并指定相关群属性
groupManager.createGroup(
    groupType: "Publich",
    groupName: "groupName",
    notification: "",
    introduction: "",
    faceUrl: "",
    isAllMuted: false,
    isSupportTopic: false,
    addOpt: GroupAddOptTypeEnum.V2TIM_GROUP_ADD_AUTH,
    memberList: [],
);

加入群组

不同类型的群组,加群的方法不同:

类型 加群方法
好友工作群(Work) 必须由其他群成员邀请
陌生人社交群(Public) 用户申请,群主或管理员审批
临时会议群(Meeting) 用户可随意加入
社群(Community) 用户可随意加入
直播群(AVChatRoom) 用户可随意加入

下面将根据加群流程从简单到复杂进行逐一介绍。

警告:

接收以下群事件需要您按照 群事件监听 中所述,提前调用 addGroupListener 添加群事件监听器。

自由加群

临时会议群(Meeting)、直播群(AVChatRoom)和社群(Community)主要用于满足成员随意进出的交互场景,例如在线会议,秀场直播等。因此这几种类型群的入群流程最为简单:

  1. 加群者调用 joinGroup 加入群组。
  2. 加群者加群成功后,全体群成员(包括加群者本人)都会收到 onMemberEnter 回调。

示例代码如下:

// 加入群组
TencentImSDKPlugin.v2TIMManager.joinGroup(groupID: "groupID",message: "hello",groupType: "Public");

// 监听加入群组事件
 TencentImSDKPlugin.v2TIMManager.addGroupListener(listener: V2TimGroupListener(onMemberEnter: ((groupID, memberList) {
    // 获取加入群的人员信息
})));

邀请加群

好友工作群(Work)类似微信群和企业微信群,适用于工作交流,在交互设计上限制用户主动加入,只能由现有的群成员邀请才能加群。 加群步骤为:

  1. 现有的群成员调用 inviteUserToGroup 邀请另一个用户入群。
  2. 全体群成员(包括邀请者自己)会收到 onMemberInvited 回调。您可以在这个回调中做一些 UI 上的提示。

示例代码如下:

// 邀请 userA 用户进入群组 groupA 中
groupManager.inviteUserToGroup(groupID: "groupID",userList:[]);

// 监听群组邀请事件
TencentImSDKPlugin.v2TIMManager.addGroupListener(listener: V2TimGroupListener(onMemberInvited: ((groupID, opUser, memberList) {
    // 获取邀请者、被邀请成员信息
  })));

邀请且审批加群

陌生人社交群(Public)类似 QQ 中的各种兴趣群和部落群,任何人都可以申请入群,但需要经过群主或管理员审批才能真正入群。

邀请且审批加群的流程如下:

流程说明:

  1. 申请者调用 joinGroup 申请加群。

  2. 群主或管理员收到加群申请通知 onReceiveJoinApplication ,在其中调用 getGroupApplicationList获取加群申请列表。

  3. 群主或管理员遍历加群申请列表,逐一调用 acceptGroupApplication 同意加群,或调用 refuseGroupApplication 拒绝加群请求。

  4. 请求加群被同意或者拒绝后,申请者会收到 onApplicationProcessed 回调。其中 isAgreeJointrue 表示同意加群,反之被拒绝。

  5. 同意加群后,全员(包括请求者)收到 onMemberEnter 回调,通知群组成员有人进群。

示例代码如下:

// ******群主端******//
// 1、群主端修改加群选项为需要审核
groupManager.setGroupInfo(info: V2TimGroupInfo.fromJson({
    "groupAddOpt":GroupAddOptTypeEnum.V2TIM_GROUP_ADD_AUTH
}));

// 2、群主端监听加群请求并处理
TencentImSDKPlugin.v2TIMManager.addGroupListener(listener: V2TimGroupListener(onReceiveJoinApplication: (groupID, member, opReason) async {
    // 获取所有申请
    V2TimValueCallback<V2TimGroupApplicationResult> appls  = await groupManager.getGroupApplicationList();
    appls.data.groupApplicationList.forEach((application) {
        // 同意
        groupManager.acceptGroupApplication(groupID: application.groupID, fromUser: application.fromUser, toUser: application.toUser,type: GroupApplicationTypeEnum.values[application.type]);
        // 拒绝
        groupManager.refuseGroupApplication(groupID: application.groupID, fromUser: application.fromUser, toUser: application.toUser, addTime: application.addTime, type: GroupApplicationTypeEnum.values[application.type]);
    });
  },));
// ******用户端******//
// 1、用户端申请加群
 TencentImSDKPlugin.v2TIMManager.joinGroup(groupID: "groupID",message: "hello",groupType: "Public");

// 2、用户端监听加群审批结果
 TencentImSDKPlugin.v2TIMManager.addGroupListener(listener: V2TimGroupListener(
    onApplicationProcessed: ((groupID, opUser, isAgreeJoin, opReason) {
      // 加群申请被处理
    }),
    onMemberEnter:(groupID,memberlist){
      // 用户进群
    }
  ));

群主或管理员也可以通过 setGroupInfo 接口调整加群选项(V2TIMGroupAddOpt),可以设置为更严格的 “禁止任何人加群”,也可以设置为更宽松的 “放开审批流程”。

V2TIMGroupAddOpt 的可选项有:

加群选项 含义
GroupAddOptTypeEnum.V2TIM_GROUP_ADD_FORBID 禁止任何人加群
GroupAddOptTypeEnum.V2TIM_GROUP_ADD_AUTH 需要群主或管理员审批才能加入(默认值)
GroupAddOptTypeEnum.V2TIM_GROUP_ADD_ANY 取消审批流程,任何用户都可以加入

获取已加入的群组

您可以调用 getJoinedGroupList 获取已加入的好友工作群(Work)、陌生人社交群(Public)、临时会议群(Meeting)、社群(Community,不支持话题功能)列表。但直播群(AVChatRoom)和 社群(Community,支持话题的社群)不包含在此列表中。

代码示例如下:

// 获取已经加入的群组
V2TimValueCallback<List<V2TimGroupInfo>> groupRes  =await groupManager.getJoinedGroupList();

退出群组

您可以调用 quitGroup 退出群组。 退群者会收到 onQuitFromGroup 回调。 群组内其他成员会收到 onMemberLeave 回调。

警告:

对于陌生人社交群(Public)、临时会议群(Meeting)、社群(Community)和直播群(AVChatRoom),群主不可以退群,只能 解散群组

示例代码如下:

// 退出群组
TencentImSDKPlugin.v2TIMManager.quitGroup(groupID: "groupID");

 TencentImSDKPlugin.v2TIMManager.addGroupListener(listener: V2TimGroupListener(onMemberLeave: (groupID, member) {
    // 离开群成员信息
  },));

解散群组

您可以调用 dismissGroup 解散群组,全员会收到 onGroupDismissed 回调。

如果您在服务器端设置了允许自动解散不活跃的群,当群被服务器端自动解散后,SDK 会收到 onGroupRecycled 回调。

示例代码如下:

// 解散群组
TencentImSDKPlugin.v2TIMManager.dismissGroup(groupID: "groupID");
// 事件监听
TencentImSDKPlugin.v2TIMManager.addGroupListener(listener: V2TimGroupListener(onGroupDismissed: (groupID, opUser) {
    // 群被解散
  },onGroupRecycled: (groupID, opUser){
    // 群被回收
  }));

接收群组自定义系统通知

如果您在自己的服务器端调用 REST API 向群组中发送自定义系统通知,那么 SDK 会回调 onReceiveRESTCustomData

交流与反馈

欢迎加入 QQ 群进行技术交流和反馈问题,QQ 群:788910197

results matching ""

    No results matching ""