一、功能描述
·社群和话题的管理接口在核心类 TencentImSDKPlugin.v2TIMManager.getGroupManager() 中。
·话题中的消息相关接口在核心类 TencentImSDKPlugin.v2TIMManager.getMessageManager() 中。
注意:说明:
注意:Flutter SDK 4.0.0以上版本支持,需 购买旗舰版或企业版套餐包 并在 控制台 > 功能配置 > 群组配置 > 群功能配置 > 社群 打开开关后方可使用。
二、创建社群。
调用 createCommunity (点击查看详情) 创建支持话题的社群。
注意:自定义的社群 ID 前缀必须是@TGS#_。
示例代码如下:
// 创建支持话题的社群final info = V2TimGroupInfo( groupID: "", groupType: GroupType.Community, isSupportTopic: true, groupName: "testGroup",);await TencentImSDKPlugin.v2TIMManager.getCommunityManager().createCommunity( info: info, memberList: memberList,);
三、获取加入的社群列表
调用 getJoinedCommunityList(点击查看详情) 获取已经加入的支持话题的社群列表。
示例代码如下:
// 获取加入的社群列表V2TimValueCallback<List<V2TimGroupInfo>> groupList = await TencentImSDKPlugin.v2TIMManager.getCommunityManager().getJoinedCommunityList();
四、其他管理接口
其他功能跟普通群组使用方法一样,涉及的接口有:
| 分类 | 功能 | 接口 |
| 社群管理 | 加入社群 | joinGroup(dart) |
| | 退出社群 | quitGroup(dart) |
| | 解散社群 | dismissGroup(dart) |
| | 获取社群资料 | getGroupsInfo( dart) |
| | 修改社群资料 | setGroupInfo (dart) |
| 社群成员管理 | 获取社群成员列表 | getGroupMemberList (dart) |
| | 获取社群成员资料 | getGroupMembersInfo(dart) |
| | 修改社群成员资料 | setGroupMemberInfo(dart) |
| | 踢出社群成员 | kickGroupMember(dart) |
五、话题管理
同一社群下可创建多个话题,多个话题共享一套社群成员关系,但不同话题内独立收发消息、互不干扰。
注意:说明:
注意:需在 控制台 > 功能配置 > 群组配置 > 群功能配置 > 社群 页面,完成开通社群后,再打开开通话题开关,方可使用。
六、创建话题
创建话题分两步:
1. 创建 V2TIMTopicInfo (点击查看详情) 对象。
2. 调用 createTopicInCommunity (点击查看详情) 接口创建话题。
示例代码如下:
// 创建话题communityManager.createTopicInCommunity(groupID: "groupID", topicInfo: V2TimTopicInfo.fromJson({ "topicName":"topic"}));
七、删除话题
调用 deleteTopicFromCommunity(点击查看详情) 接口删除话题。
示例代码如下:
// 删除话题communityManager.deleteTopicFromCommunity(groupID: "",topicIDList:["topicID"]);
八、修改话题信息
修改话题信息分两步:
1. 创建 V2TIMTopicInfo (点击查看详情) 对象,并设置需要修改的字段。
2. 调用 setTopicInfo (点击查看详情) 接口修改话题信息。
示例代码如下:
// 修改话题信息communityManager.setTopicInfo(topicInfo:V2TimTopicInfo.fromJson({ "topicName":"topicName"}));
九、获取话题列表
调用 getTopicInfoList (点击查看详情) 接口获取话题列表。
·当 topicIDList 列表为空数组时,为获取该社群下的所有话题列表。
·当 topicIDList 填入指定的话题 ID 时,为获取填入的话题列表。
示例代码如下:
// 获取话题列表communityManager.getTopicInfoList(groupID: "",topicIDList: ['topicID']);
十、话题分组
社群模式(娱乐协作新利器),支持社群-分组-话题三级结构,将消息相互区隔。
实现原理为,社群的 customInfo 中,保存该社群的话题分组列表;每个话题所属的分组,存储于其 customString 字段中。
·加载社群时,根据社群(群组)的 customInfo 的话题分组列表字段,展示分组。该字段建议用 List<String> 形式存储。
·具体每个分组中有什么话题Topic,则要遍历Topic列表,通过 V2TimTopicInfo 的 customString 获得每个话题所属分组。
注意:说明:
注意:社群(群组)中 customInfo 的话题分组列表字段名,key值,可由你自行定义。
以下示例代码中,将其命名为 topic_category 。
十一、获取社群的分组列表
调用 getCommunityCategoryList(String groupID) 方法,示例代码如下:
getCommunityCategoryList(String groupID) async { final Map<String, String>? customInfo = await getCommunityCustomInfo(groupID); if(customInfo != null){ final String? categoryListString = customInfo["topic_category"]; if(categoryListString != null && categoryListString.isNotEmpty){ return jsonDecode(categoryListString); } } } Future<Map<String, String>?> getCommunityCustomInfo(String groupID) async { V2TimValueCallback<List<V2TimGroupInfoResult>> res = await TencentImSDKPlugin.v2TIMManager .getGroupManager().getGroupsInfo(groupIDList: [groupID]); if(res.code != 0){ final V2TimGroupInfoResult? groupInfo = res.data?[0]; if(groupInfo != null){ Map<String, String>? customInfo = groupInfo.groupInfo?.customInfo; return customInfo; } } return null; }
十二、配置社群的分组列表
此处直接修改群组 groupInfo 的 customInfo 即可。此处为一个 Map,key 值你定义的话题分组列表字段名。
getCommunityCustomInfo 方法已在上一段实现,示例代码如下:
setCommunityCategoryList(String groupID, String groupType, List<String> newCategoryList) async { final Map<String, String>? customInfo = await getCommunityCustomInfo(groupID); customInfo?["topic_category"] = jsonEncode(newCategoryList); TencentImSDKPlugin.v2TIMManager .getGroupManager() .setGroupInfo(info: V2TimGroupInfo( customInfo: customInfo, groupID: groupID, groupType: groupType, // …其他资料 )); }
十三、为话题添加分组
传入V2TimTopicInfo customString的字符串,建议使用JSON格式。
即,下方代码内 categoryName 建议使用格式:{"category":"分组1"}。
示例代码如下:
addCategoryForTopic(String groupID, String categoryName) { TencentImSDKPlugin.v2TIMManager.getCommunityManager().setTopicInfo( topicInfo: V2TimTopicInfo( customString: categoryName ), groupID: groupID, // 话题所在的群组id ); }
十四、获取话题所在分组
直接从 获取话题列表 中,取出 customString 即可。
十五、监听话题回调
在 V2TIMCommunityListener (点击查看详情) 中增加了话题相关的回调方法,onCreateTopic,onDeleteTopic,onChangeTopicInfo,用来监听话题事件。
示例代码如下:
V2TIMCommunityListener v2TIMCommunityListener = new V2TIMCommunityListener() { onCreateTopic(String groupID, String topicID) { // 监听话题创建通知 } onDeleteTopic(String groupID, List<String> topicIDList) { // 监听话题删除通知 } onChangeTopicInfo(String groupID, V2TIMTopicInfo topicInfo) { // 监听话题信息更新通知 }};TencentImSDKPlugin.v2TIMManager.getCommunityManager().addCommunityListener(listener: v2TIMCommunityListener);
十六、话题消息
话题消息相关功能跟普通消息使用方法一样,涉及的接口有:
| 功能 | 接口 | 说明 |
| 发送消息 | sendMessage (dart) | 参数 groupID 填为话题 topicID |
| 接收消息 | V2TIMAdvancedMsgListener (dart) 中的 onRecvNewMessage 方法 | 消息中的 groupID 即为话题 topicID |
| 标记消息已读 | cleanConversationUnreadMessageCount (dart) | 参数 conversationID 组成为 group_+话题 ID,即 group_topicID。 |
| 获取历史消息 | getGroupHistoryMessageList (dart) | 参数 groupID 填为话题 topicID |
| 撤回消息 | revokeMessage (dart) | 参数 groupID 填为话题 topicID |