tencent cloud

文档反馈

最后更新时间:2024-02-06 17:58:41

    功能描述

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

    社群管理

    创建社群

    创建支持话题的社群分两步:
    1. 创建 V2TIMGroupInfo (Details) 对象,其中 groupType 设置为 CommunityisSupportTopic 设置为 true/YES
    2. 调用 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
    

    话题管理

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

    创建话题

    创建话题分两步:
    1. 创建 V2TIMTopicInfo (Details) 对象。
    2. 调用 createTopicInCommunity (Details) 接口创建话题。
    示例代码如下:
    // 创建话题
    groupManager.createTopicInCommunity(groupID: "groupID", topicInfo: V2TimTopicInfo.fromJson({
    "topicName":"topic"
    }));

    删除话题

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

    修改话题信息

    修改话题信息分两步:
    1. 创建 V2TIMTopicInfo (Details) 对象,并设置需要修改的字段。
    2. 调用 setTopicInfo (Details) 接口修改话题信息。
    示例代码如下:
    // 修改话题信息
    groupManager.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 即可。

    监听话题回调

    V2TIMGroupListener (Details) 中增加了话题相关的回调方法,onTopicCreatedonTopicDeletedonTopicInfoChanged,用来监听话题事件。
    示例代码如下:
    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
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持