tencent cloud

即时通信 IM

动态与公告
产品动态
公告
产品简介
产品概述
基本概念
应用场景
功能介绍
账号系统
用户资料与关系链
消息管理
群组相关
公众号系统
音视频通话 Call
使用限制
购买指南
计费概述
价格说明
购买指引
续费指引
停服说明
退费说明
开发指引
Demo 专区
开通服务
体验 Demo
快速跑通
下载中心
SDK & Demo 源码
更新日志
聊天互动(含 UI)
TUIKit 组件介绍
快速开始
全功能接入
单功能接入
AI 集成
构建基础界面
更多特性
定义外观
国际化界面语言
推送服务(Push)
服务概述
名词解释
开通服务
快速跑通
厂商通道
数据统计
排查工具
客户端 API
服务端 API
推送回调
高级功能
更新日志
错误码
常见问题
智能客服
功能概述
快速入门
集成指引
管理员操作手册
客服操作手册
更多实践
直播间搭建
AI 聊天机器人方案
超大娱乐协作社群
Discord 实现指南
游戏内集成 Chat 指南
类 WhatsApp Channel 搭建方案
发送红包
Chat 应对防火墙限制相关
无 UI 集成
快速开始
集成 SDK
初始化
登录登出
消息相关
会话相关
群组相关
社群话题
用户管理
离线推送
云端搜索
本地搜索
公众号
客户端 API
JavaScript
Android
iOS & macOS
Swift
Flutter
Electron
Unity
React Native
C 接口
C++
服务端 API
生成 UserSig
REST API
第三方回调
控制台指南
新版控制台介绍
创建并升级应用
基本配置
功能配置
账号管理
群组管理
公众号管理
回调配置
用量统计
资源包查看指南
实时监控
开发辅助工具
访问管理
高级功能
常见问题
uni-app 常见问题
购买相关问题
SDK 相关问题
账号鉴权相关问题
用户资料与关系链相关问题
消息相关问题
群组相关问题
直播群相关问题
昵称头像相关问题
协议与认证
服务等级协议
安全合规认证
IM 政策
隐私政策
数据隐私和安全协议
平滑迁移方案
平滑迁移完整版
平滑迁移简化版
错误码
联系我们

Flutter

PDF
聚焦模式
字号
最后更新时间: 2025-04-16 15:00:22

功能描述

社群是一个由于共同主题而让大家聚集在一起的超大群组,可以在社群下根据不同兴趣创建多个话题。 社群用来管理群成员。社群下的所有话题不仅可以共享社群成员,还可以独立收发消息而不相互干扰。 社群模式详细介绍
社群和话题的管理接口在核心类 TencentImSDKPlugin.v2TIMManager.getGroupManager() 中。
话题中的消息相关接口在核心类 TencentImSDKPlugin.v2TIMManager.getMessageManager() 中。
说明:
Flutter sdk 4.0.0以上版本支持,需 购买旗舰版 并在 控制台 > 功能配置 > 群组配置 > 群功能配置 > 社群 打开开关后方可使用。

社群管理

创建社群

调用 createCommunity (Details) 接口创建群组。
注意:
自定义的社群 ID 前缀必须是@TGS#_。
示例代码如下:
// 创建支持话题的社群
final info = V2TimGroupInfo(
groupID: "",
groupType: GroupType.Community,
isSupportTopic: true,
groupName: "testGroup",
);

await TencentImSDKPlugin.v2TIMManager.getCommunityManager().createCommunity(
info: info,
memberList: memberList,
);

获取加入的社群列表

调用 getJoinedCommunityList(Details) 获取已经加入的支持话题的社群列表。
示例代码如下:
// 获取加入的社群列表
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 (Details) 对象。
2. 调用 createTopicInCommunity (Details) 接口创建话题。
示例代码如下:
// 创建话题
communityManager.createTopicInCommunity(groupID: "groupID", topicInfo: V2TimTopicInfo.fromJson({
"topicName":"topic"
}));

删除话题

调用 deleteTopicFromCommunity(Details) 接口删除话题。
示例代码如下:
// 删除话题
communityManager.deleteTopicFromCommunity(groupID: "",topicIDList:["topicID"]);

修改话题信息

修改话题信息分两步:
1. 创建 V2TIMTopicInfo (Details) 对象,并设置需要修改的字段。
2. 调用 setTopicInfo (Details) 接口修改话题信息。
示例代码如下:
// 修改话题信息
communityManager.setTopicInfo(topicInfo:V2TimTopicInfo.fromJson({
"topicName":"topicName"
}));

获取话题列表

调用 getTopicInfoList (Details) 接口获取话题列表。
当 topicIDList 列表为空数组时,为获取该社群下的所有话题列表。
当 topicIDList 填入指定的话题 ID 时,为获取填入的话题列表。
示例代码如下:
// 获取话题列表
groupManager.getTopicInfoList(groupID: "",topicIDList: ['topicID']);

话题分组

社群模式(娱乐协作新利器),支持社群-分组-话题三级结构,将消息相互区隔。



实现原理为,社群的 customInfo 中,保存该社群的话题分组列表;每个话题所属的分组,存储于其 customString 字段中。
加载社群时,根据社群(群组)的 customInfo 的话题分组列表字段,展示分组。该字段建议用 List<String> 形式存储。
具体每个分组中有什么话题Topic,则要遍历Topic列表,通过 V2TimTopicInfocustomString 获得每个话题所属分组。
说明:
社群(群组)中 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;
}

配置社群的分组列表

此处直接修改群组 groupInfocustomInfo 即可。此处为一个 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.getGroupManager().setTopicInfo(
topicInfo: V2TimTopicInfo(
customString: categoryName
),
groupID: groupID, // 话题所在的群组id
);
}

获取话题所在分组

直接从 获取话题列表 中,取出 customString 即可。

监听话题回调

V2TIMCommunityListener (Details) 中增加了话题相关的回调方法,onCreateTopiconDeleteTopiconChangeTopicInfo,用来监听话题事件。
示例代码如下:
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)
参数 groupID 填为话题 topicID
获取历史消息
getGroupHistoryMessageList (dart)
参数 groupID 填为话题 topicID
撤回消息
revokeMessage (dart)
参数 groupID 填为话题 topicID


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈