群组管理功能指的是创建群组、加入群组、获取已加入的群组、退出群组和解散群组等,相关方法在核心类 TencentImSDKPlugin.v2TIMManager.getGroupManager()
中。
下文描述的群组管理功能中,有些会触发群事件通知回调,例如有人进群、有人退群等,这些事件都是由 IM 服务器自动触发的。
您可以调用 addGroupListener
(Details) 添加群事件监听器。
当不想再接收群事件时,可调用 removeGroupListener
(Details) 移除群事件监听器。
注意:只有预先设置好群事件监听器,才能正常接收到下文中的各种群事件通知。
示例代码如下:
TencentImSDKPlugin.v2TIMManager.addGroupListener();
如果您想在创建群组的同时初始化群的信息,例如群简介、群头像、以及最初的几个群成员等,可以调用高级接口 createGroup
(Details) 实现。创建成功的回调中会抛出 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)主要用于满足成员随意进出的交互场景,例如在线会议,秀场直播等。因此这几种类型群的入群流程最为简单:
示例代码如下:
// 加入群组
TencentImSDKPlugin.v2TIMManager.joinGroup("groupID", "hello");
// 监听加入群组事件
TencentImSDKPlugin.v2TIMManager.addGroupListener({
onMemberEnter: (groupID, memberList) => {
// 获取加入群的人员信息
},
});
好友工作群(Work)适用于工作交流,在交互设计上限制用户主动加入,只能由现有的群成员邀请才能加群。
加群步骤为:
inviteUserToGroup
(Details) 邀请另一个用户入群。onMemberInvited
(Details) 回调。您可以在这个回调中做一些 UI 上的提示。示例代码如下:
// 邀请 userA 用户进入群组 groupA 中
groupManager.inviteUserToGroup("groupID", []);
// 监听群组邀请事件
TencentImSDKPlugin.v2TIMManager.addGroupListener({
onMemberInvited: (groupID, opUser, memberList) => {
// 获取邀请者、被邀请成员信息
},
});
陌生人社交群(Public)类似 QQ 中的各种兴趣群和部落群,任何人都可以申请入群,但需要经过群主或管理员审批才能真正入群。
邀请且审批加群的流程如下:
流程说明:
申请者调用 joinGroup
(Details) 申请加群。
群主或管理员收到加群申请通知 onReceiveJoinApplication
(Details) ,在其中调用 getGroupApplicationList
(Details)获取加群申请列表。
群主或管理员遍历加群申请列表,逐一调用 acceptGroupApplication
(Details) 同意加群,或调用 refuseGroupApplication
(Details) 拒绝加群请求。
请求加群被同意或者拒绝后,申请者会收到 onApplicationProcessed
(Details) 回调。其中 isAgreeJoin
为 true
表示同意加群,反之被拒绝。
同意加群后,全员(包括请求者)收到 onMemberEnter
(Details) 回调,通知群组成员有人进群。
示例代码如下:
// ******群主端******//
// 1、群主端修改加群选项为需要审核
groupManager.setGroupInfo({
groupAddOpt: GroupAddOptTypeEnum.V2TIM_GROUP_ADD_AUTH,
});
// 2、群主端监听加群请求并处理
TencentImSDKPlugin.v2TIMManager.addGroupListener({
onReceiveJoinApplication: async (groupID, member, opReason) => {
// 获取所有申请
const appls = await groupManager.getGroupApplicationList();
appls.data.groupApplicationList.forEach((application) => {
// 同意
groupManager.acceptGroupApplication(
application.groupID,
application.fromUser,
application.toUser,
GroupApplicationTypeEnum.values[application.type]
);
// 拒绝
groupManager.refuseGroupApplication(
application.groupID,
application.fromUser,
application.toUser,
application.addTime,
GroupApplicationTypeEnum.values[application.type]
);
});
},
});
// ******用户端******//
// 1、用户端申请加群
TencentImSDKPlugin.v2TIMManager.joinGroup("groupID", "hello");
// 2、用户端监听加群审批结果
TencentImSDKPlugin.v2TIMManager.addGroupListener({
onApplicationProcessed: (groupID, opUser, isAgreeJoin, opReason) => {
// 加群申请被处理
},
onMemberEnter: (groupID, memberlist) => {
// 用户进群
},
});
群主或管理员也可以通过 setGroupInfo
(Details) 接口调整加群选项(V2TIMGroupAddOpt
),可以设置为更严格的 “禁止任何人加群”,也可以设置为更宽松的 “放开审批流程”。
V2TIMGroupAddOpt
的可选项有:
加群选项 | 含义 |
---|---|
GroupAddOptTypeEnum.V2TIM_GROUP_ADD_FORBID | 禁止任何人加群 |
GroupAddOptTypeEnum.V2TIM_GROUP_ADD_AUTH | 需要群主或管理员审批才能加入(默认值) |
GroupAddOptTypeEnum.V2TIM_GROUP_ADD_ANY | 取消审批流程,任何用户都可以加入 |
您可以调用 getJoinedGroupList
(Details) 获取已加入的好友工作群(Work)、陌生人社交群(Public)、临时会议群(Meeting)、社群(Community,不支持话题功能)列表。但直播群(AVChatRoom)和 社群(Community,支持话题的社群)不包含在此列表中。
代码示例如下:
// 获取已经加入的群组
const groupRes = await groupManager.getJoinedGroupList();
您可以调用 quitGroup
(Details) 退出群组。
退群者会收到 onQuitFromGroup
(Details) 回调。
群组内其他成员会收到 onMemberLeave
(Details) 回调。
注意:对于陌生人社交群(Public)、临时会议群(Meeting)、社群(Community)和直播群(AVChatRoom),群主不可以退群,只能 解散群组。
示例代码如下:
// 退出群组
TencentImSDKPlugin.v2TIMManager.quitGroup("groupID");
TencentImSDKPlugin.v2TIMManager.addGroupListener({
onMemberLeave: (groupID, member) => {
// 离开群成员信息
},
});
您可以调用 dismissGroup
(Details) 解散群组,全员会收到 onGroupDismissed
(Details) 回调。
如果您在服务器端设置了允许自动解散不活跃的群,当群被服务器端自动解散后,SDK 会收到 onGroupRecycled
(Details) 回调。
示例代码如下:
// 解散群组
TencentImSDKPlugin.v2TIMManager.dismissGroup("groupID");
// 事件监听
TencentImSDKPlugin.v2TIMManager.addGroupListener({
onGroupDismissed: (groupID, opUser) => {
// 群被解散
},
onGroupRecycled: (groupID, opUser) => {
// 群被回收
},
});
如果您在自己的服务器端调用 REST API 向群组中发送自定义系统通知,那么 SDK 会回调 onReceiveRESTCustomData
。
本页内容是否解决了您的问题?