有奖捉虫:云通信与企业服务文档专题,速来> HOT

功能描述

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

社群管理

创建社群

创建支持话题的社群分两步:
1. 创建 V2TIMGroupInfo (点击查看详情) 对象,其中 groupType 设置为 CommunityisSupportTopic 设置为 true/YES
2. 调用 createGroup (点击查看详情) 接口创建群组。
示例代码如下:
// 创建只会社群的话题
groupManager.createGroup(groupType: "Community", groupName: "社群",isSupportTopic: true);

获取加入的社群列表

调用 getJoinedCommunityList(点击查看详情) 获取已经加入的支持话题的社群列表。
示例代码如下:
// 获取加入的社群列表
const groupList = await groupManager.getJoinedCommunityList();

其他管理接口

其他功能跟普通群组使用方法一样,涉及的接口有:
分类
功能
接口
社群管理
joinGroup(TS
quitGroup(TS
dismissGroup(TS
getGroupsInfo(TS
setGroupInfo(TS
社群成员管理
getGroupMemberList(TS
getGroupMembersInfo(TS
setGroupMemberInfo(TS
kickGroupMember (TS

话题管理

同一社群下可创建多个话题,多个话题共享一套社群成员关系,但不同话题内独立收发消息、互不干扰。
说明
需在 控制台 > 功能配置 > 群组配置 > 群功能配置 > 社群 页面,完成开通社群后,再打开开通话题开关,方可使用。

创建话题

创建话题分两步:
1. 创建 V2TIMTopicInfo (点击查看详情) 对象。
2. 调用 createTopicInCommunity (点击查看详情) 接口创建话题。
示例代码如下:
// 创建话题
groupManager.createTopicInCommunity("groupID", {
topicName: "topic",
});

删除话题

调用 deleteTopicFromCommunity(点击查看详情) 接口删除话题。
示例代码如下:
// 删除话题
groupManager.deleteTopicFromCommunity("groupID", ["topicID"]);

修改话题信息

修改话题信息分两步:
1. 创建 V2TIMTopicInfo (点击查看详情) 对象,并设置需要修改的字段
2. 调用 setTopicInfo (点击查看详情) 接口修改话题信息
示例代码如下:
// 修改话题信息
groupManager.setTopicInfo({
topicName: "topicName",
});

获取话题列表

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

话题分组

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

实现原理为,社群的 customInfo 中,保存该社群的话题分组列表;每个话题所属的分组,存储于其 customString 字段中。
加载社群时,根据社群(群组)的 customInfo 的话题分组列表字段,展示分组。该字段建议用 string[] 形式存储。
具体每个分组中有什么话题 Topic,则要遍历 Topic 列表,通过 V2TimTopicInfocustomString 获得每个话题所属分组。
说明
社群(群组)中 customInfo 的话题分组列表字段名,key 值,可由您自行定义。 以下示例代码中,将其命名为 categoryList

获取社群的分组列表

调用 getCommunityCategoryList(String groupID) 方法,示例代码如下:
const getCommunityCategoryList = async (groupID) => {
const customInfo = await getCommunityCustomInfo(groupID);
if (customInfo != null) {
const categoryListString = customInfo["categoryList"];
if (categoryListString != null && categoryListString !== "") {
return JSON.parse(categoryListString);
}
}
};

const getCommunityCustomInfo = async (groupID) => {
const groupIDList = [groupID];
const res = await TencentImSDKPlugin.v2TIMManager
.getGroupManager()
.getGroupsInfo(groupIDList);
if (res.code != 0) {
const groupInfo = res.data[0];
if (groupInfo != null) {
const customInfo = groupInfo.groupInfo?.customInfo;
return customInfo;
}
}
return null;
};

配置社群的分组列表

此处直接修改群组 groupInfocustomInfo 即可。此处为一个 Map,key 值您定义的话题分组列表字段名。
getCommunityCustomInfo 方法已在上一段实现,示例代码如下:
const setCommunityCategoryList = async (
groupID,
groupType,
newCategoryList
) => {
const customInfo = await getCommunityCustomInfo(groupID);
customInfo["categoryList"] = JSON.parse(newCategoryList);
TencentImSDKPlugin.v2TIMManager.getGroupManager().setGroupInfo({
customInfo: customInfo,
groupID: groupID,
groupType: groupType,
// ...其他资料
});
};

为话题添加分组

示例代码如下:
const addCategoryForTopic = (groupID, categoryName) => {
TencentImSDKPlugin.v2TIMManager.getGroupManager().setTopicInfo({
customString: categoryName,
});
};

获取话题所在分组

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

监听话题回调

V2TIMGroupListener (点击查看详情) 中增加了话题相关的回调方法,onTopicCreatedonTopicDeletedonTopicInfoChanged,用来监听话题事件。
示例代码如下:
const v2TIMGroupListener = {
onTopicCreated: (groupID, topicID) => {
// 监听话题创建通知
},
onTopicDeleted: (groupID, topicIDList) => {
// 监听话题删除通知
},
onTopicInfoChanged: (groupID, topicInfo) => {
// 监听话题信息更新通知
},
};
V2TIMManager.getInstance().addGroupListener(v2TIMGroupListener);

话题消息

话题消息相关功能跟普通消息使用方法一样,涉及的接口有:
功能
接口
说明
发送消息
sendMessage (TS)
参数 groupID 填为话题 topicID
接收消息
V2TIMAdvancedMsgListener (TS) 中的 onRecvNewMessage 方法
消息中的 groupID 即为话题 topicID
标记消息已读
markGroupMessageAsRead( TS
参数 groupID 填为话题 topicID
获取历史消息
getGroupHistoryMessageList (TS
参数 groupID 填为话题 topicID
撤回消息
revokeMessage(TS
参数 groupID 填为话题 topicID

交流与反馈

点此进入IM社群,享有专业工程师的支持,解决您的难题