社群是一个由于共同主题而让大家聚集在一起的超大群组,可以在社群下根据不同兴趣创建多个话题。
社群用来管理群成员。社群下的所有话题不仅可以共享社群成员,还可以独立收发消息而不相互干扰。
社群模式详细介绍
TencentImSDKPlugin.v2TIMManager.getGroupManager()
中。 TencentImSDKPlugin.v2TIMManager.getMessageManager()
中。说明:Flutter sdk 4.0.0以上版本支持,需 购买旗舰版 并在 控制台 > 功能配置 > 群组配置 > 群功能配置 > 社群 打开开关后方可使用。
创建支持话题的社群分两步:
V2TIMGroupInfo
(Details) 对象,其中 groupType
设置为 Community
,isSupportTopic
设置为 true
/YES
。createGroup
(Details) 接口创建群组。示例代码如下:
// 创建只会社群的话题
groupManager.createGroup(groupType: "Community", groupName: "社群",isSupportTopic: true);
调用 getJoinedCommunityList
(Details) 获取已经加入的支持话题的社群列表。
示例代码如下:
// 获取加入的社群列表
V2TimValueCallback<List<V2TimGroupInfo>> groupList = await groupManager.getJoinedCommunityList();
其他功能跟普通群组使用方法一样,涉及的接口有:
分类 | 功能 | 接口 |
---|---|---|
社群管理 | 加入社群 | joinGroup (dart) |
退出社群 | quitGroup (dart) | |
解散社群 | dismissGroup (dart) | |
获取社群资料 | getGroupsInfo (dart) | |
修改社群资料 | setGroupInfo (dart) | |
社群成员管理 | 获取社群成员列表 | getGroupMemberList (dart) |
获取社群成员资料 | getGroupMembersInfo (dart) | |
修改社群成员资料 | setGroupMemberInfo (dart) | |
踢出社群成员 | kickGroupMember (dart) |
同一社群下可创建多个话题,多个话题共享一套社群成员关系,但不同话题内独立收发消息、互不干扰。
说明:需在 控制台 > 功能配置 > 群组配置 > 群功能配置 > 社群 页面,完成开通社群后,再打开开通话题开关,方可使用。
创建话题分两步:
示例代码如下:
// 创建话题
groupManager.createTopicInCommunity(groupID: "groupID", topicInfo: V2TimTopicInfo.fromJson({
"topicName":"topic"
}));
调用 deleteTopicFromCommunity
(Details) 接口删除话题。
示例代码如下:
// 删除话题
groupManager.deleteTopicFromCommunity(groupID: "",topicIDList:["topicID"]);
修改话题信息分两步:
示例代码如下:
// 修改话题信息
groupManager.setTopicInfo(topicInfo:V2TimTopicInfo.fromJson({
"topicName":"topicName"
}));
调用 getTopicInfoList
(Details) 接口获取话题列表。
示例代码如下:
// 获取话题列表
groupManager.getTopicInfoList(groupID: "",topicIDList: ['topicID']);
社群模式(娱乐协作新利器),支持社群-分组-话题三级结构,将消息相互区隔。
实现原理为,社群的 customInfo
中,保存该社群的话题分组列表;每个话题所属的分组,存储于其 customString
字段中。
customInfo
的话题分组列表字段,展示分组。该字段建议用 List<string>
形式存储。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.getGroupManager().setTopicInfo(
topicInfo: V2TimTopicInfo(
customString: categoryName
),
groupID: groupID, // 话题所在的群组id
);
}
直接从 获取话题列表 中,取出 customString
即可。
在 V2TIMGroupListener
(Details) 中增加了话题相关的回调方法,onTopicCreated
,onTopicDeleted
,onTopicInfoChanged
,用来监听话题事件。
示例代码如下:
V2TIMGroupListener v2TIMGroupListener = new V2TIMGroupListener() {
onTopicCreated(String groupID, String topicID) {
// 监听话题创建通知
}
onTopicDeleted(String groupID, List<String> topicIDList) {
// 监听话题删除通知
}
onTopicInfoChanged(String groupID, V2TIMTopicInfo topicInfo) {
// 监听话题信息更新通知
}
};
V2TIMManager.getInstance().addGroupListener(v2TIMGroupListener);
话题消息相关功能跟普通消息使用方法一样,涉及的接口有:
功能 | 接口 | 说明 |
---|---|---|
发送消息 | sendMessage (dart) | 参数 groupID 填为话题 topicID |
接收消息 | V2TIMAdvancedMsgListener (dart) 中的 onRecvNewMessage 方法 | 消息中的 groupID 即为话题 topicID |
标记消息已读 | markGroupMessageAsRead (dart | 参数 groupID 填为话题 topicID |
获取历史消息 | getGroupHistoryMessageList (dart | 参数 groupID 填为话题 topicID |
撤回消息 | revokeMessage (dart) | 参数 groupID 填为话题 topicID |
本页内容是否解决了您的问题?