会话组
功能描述
在某些场景下,您可能需要对会话进行分组,例如分为 "产品体验"、"需求研发" 等,您可以调用以下接口实现。
会话分组
新建会话分组
说明:
会话分组最大支持 20 个,超过后创建新的分组会报
51010
错误,不再使用的分组请及时删除。属性 | 含义 | 说明 |
groupName | 会话分组名 | 长度要大于 0,最大支持 32 bytes,超过后会报 51011 错误 |
conversationIDList | 会话 ID 列表 | 不能为空 |
示例代码如下:
//创建会话分组V2TimValueCallback<List<V2TimConversationOperationResult>>createConversationGroupRes = await TencentImSDKPlugin.v2TIMManager.getConversationManager().createConversationGroup(groupName: "groupName",// 创建的会话分组的名称conversationIDList: []);// 需要放入创建的会话分组的会话id列表if (createConversationGroupRes.code == 0) {// 创建设置成功createConversationGroupRes.data?.forEach((element) {element.conversationID; // 被添加的会话idelement.resultCode; // 此条会话的操作结果错误码element.resultInfo; // 此条会话的操作结果描述});}
删除会话分组
说明:
如果会话分组不存在,删除对应分组会报
51009
错误。示例代码如下:
//删除会话分组V2TimCallback deleteConversationGroupRes = await TencentImSDKPlugin.v2TIMManager.getConversationManager().deleteConversationGroup(groupName: "groupName");//需要删除的会话分组的名称if (deleteConversationGroupRes.code == 0) {// 删除成功}
重命名会话分组
示例代码如下:
//重命名会话分组V2TimCallback renameConversationGroupRes = await TencentImSDKPlugin.v2TIMManager.getConversationManager().renameConversationGroup(oldName: "oldName",//需要重命名的会话分组的名称newName: "newName");//回话分组的新名称if (renameConversationGroupRes.code == 0) {// 重命名成功}
获取会话分组列表
示例代码如下:
//获取会话分组列表V2TimValueCallback<List<String>> getConversationGroupListDataRes =await TencentImSDKPlugin.v2TIMManager.getConversationManager().getConversationGroupList();if (getConversationGroupListDataRes.code == 0) {// 查询成功getConversationGroupListDataRes.data?.forEach((element) {element;//此条会话分组的名称});}
示例代码如下:
//获取会话列表V2TimConversationListFilter filter = V2TimConversationListFilter(conversationType: 0,//会话类型nextSeq: 0,//拉取游标count: 10,//拉取数量markType: 0,//会话标记类型groupName: "groupName");//拉取的群组名//获取会话列表的高级接口V2TimValueCallback<V2TimConversationResult> getConversationListByFilterRes =await TencentImSDKPlugin.v2TIMManager.getConversationManager().getConversationListByFilter(filter: filter);//会话列表过滤器if (getConversationListByFilterRes.code == 0) {//拉取成功bool? isFinished =getConversationListByFilterRes.data?.isFinished; //是否拉取完String? nextSeq =getConversationListByFilterRes.data?.nextSeq; //后续分页拉取的游标List<V2TimConversation?>? conversationList =getConversationListByFilterRes.data?.conversationList; //此次拉取到的消息列表//如果没有拉取完,使用返回的nextSeq继续拉取直到isFinished为trueif (!isFinished!) {V2TimConversationListFilter nextFilter = V2TimConversationListFilter(conversationType: 0,nextSeq: int.parse(nextSeq!),//使用返回的nextSeq继续拉取直到isFinished为truecount: 10,markType: 0,groupName: "groupName");V2TimValueCallback<V2TimConversationResult> nextConversationListRes =await TencentImSDKPlugin.v2TIMManager.getConversationManager().getConversationListByFilter(filter: nextFilter);}getConversationListByFilterRes.data?.conversationList?.forEach((element) {element?.conversationID; //会话唯一 ID,如果是单聊,组成方式为 c2c_userID;如果是群聊,组成方式为 group_groupID。element?.draftText; //草稿信息element?.draftTimestamp; //草稿编辑时间,草稿设置的时候自动生成。element?.faceUrl; //会话展示头像,群聊头像:群头像;单聊头像:对方头像。element?.groupAtInfoList; //群会话 @ 信息列表,通常用于展示 “有人@我” 或 “@所有人” 这两种提醒状态。element?.groupID; //当前群聊 ID,如果会话类型为群聊,groupID 会存储当前群的群 ID,否则为 null。element?.groupType; //当前群聊类型,如果会话类型为群聊,groupType 为当前群类型,否则为 null。element?.isPinned; //会话是否置顶element?.lastMessage; //会话最后一条消息element?.orderkey; //会话排序字段element?.recvOpt; //消息接收选项element?.showName; //会话展示名称,群聊会话名称优先级:群名称 > 群 ID;单聊会话名称优先级:对方好友备注 > 对方昵称 > 对方的 userID。element?.type; //会话类型,分为 C2C(单聊)和 Group(群聊)。element?.unreadCount; //会话未读消息数,直播群(AVChatRoom)不支持未读计数,默认为 0。element?.userID; //对方用户 ID,如果会话类型为单聊,userID 会存储对方的用户 ID,否则为 null。});}
添加会话到一个分组
示例代码如下:
//添加会话到一个会话分组V2TimValueCallback<List<V2TimConversationOperationResult>>addConversationsToGroupRes = await TencentImSDKPlugin.v2TIMManager.getConversationManager().addConversationsToGroup(groupName: "groupName",//需要被添加会话的会话分组的名称conversationIDList: []);//被添加的会话id列表if (addConversationsToGroupRes.code == 0) {// 添加成功addConversationsToGroupRes.data?.forEach((element) {element.conversationID; // 被添加的会话idelement.resultCode; // 此条会话的操作结果错误码element.resultInfo; // 此条会话的操作结果描述});}
从分组中删除某会话
示例代码如下:
//从一个会话分组中删除会话V2TimValueCallback<List<V2TimConversationOperationResult>>deleteConversationsFromGroupRes = await TencentImSDKPlugin.v2TIMManager.getConversationManager().deleteConversationsFromGroup(groupName: "groupName",conversationIDList: []);if (deleteConversationsFromGroupRes.code == 0) {// 删除成功deleteConversationsFromGroupRes.data?.forEach((element) {element.conversationID; // 被删除的会话idelement.resultCode; // 此条会话的操作结果错误码element.resultInfo; // 此条会话的操作结果描述});}
监听会话分组变更通知
示例代码如下:
//设置群组监听器V2TimConversationListener listener = V2TimConversationListener(onConversationGroupCreated:(String groupName, List<V2TimConversation> conversationList) => {//会话分组被创建//groupName 创建的会话分组名//conversationList 创建的会话分组中的初始化会话列表},onConversationGroupDeleted: (String groupName) => {//会话分组被删除//groupName 删除的会话分组名},onConversationGroupNameChanged: (String oldName, String newName) => {//会话分组名变更//oldName 被修改的会话分组名//newName 新的会话分组名},onConversationsAddedToGroup:(String groupName, List<V2TimConversation> conversationList) => {//会话分组新增会话//groupName 被新增的会话的分组名//conversationList 新增的会话列表},onConversationsDeletedFromGroup:(String groupName, List<V2TimConversation> conversationList) => {//会话分组删除会话//groupName 被删除的会话的分组名//conversationList 删除的会话列表},);//添加群组监听器TencentImSDKPlugin.v2TIMManager.getConversationManager().addConversationListener(listener: listener);