腾讯云即时通信IMFlutter_AI解决方案_同尘科技

即时通信 IM 2年前 (2023-06-13) 浏览 75

功能描述

在某些场景下,您可能需要对会话进行标记,例如 “会话标星”、”会话折叠”、”会话隐藏”、“会话标记未读”等,您可以调用以下接口实现。说明该功能仅对旗舰版客户开放,购买 旗舰版套餐包 后可使用。该功能仅4.0.8 及以上版本支持。

会话标记

标记会话

您可以调用 markConversation (点击查看详情) 接口标记或者取消标记会话。注意 当用户标记了会话,SDK 只是简单记录了会话的标记值,并不会改变会话的底层逻辑,比如标记会话为 V2TIM_CONVERSATION_MARK_TYPE_UNREAD,会话的底层的未读数并不会发生改变。标记会话接口入参详解如下:

属性 含义 说明
conversationIDList 会话 ID 列表 一次标记最大支持 100 个会话
markType 标记类型 会话标星、会话标记未读、会话折叠、会话隐藏等
enableMark 标记/取消标记 标记或取消标记

说明 SDK 提供了四个默认标记(”会话标星”、”会话折叠”、”会话隐藏”、“会话标记未读”),如果已有标记不能满足您的需求,您可以自定义扩展标记,扩展标记需要满足以下两个条件:
1. 扩展标记值不能和已有的标记值冲突。
2. 扩展标记值必须是 0x1LL << n 的位移值(32 <= n < 64,即 n 必须大于等于 32 并且小于 64),比如扩展标记值 0x1LL << 32 表示 "iPhone 在线"。示例代码如下:

    //标记会话    V2TimValueCallback<List>        markConversationRes = await TencentImSDKPlugin.v2TIMManager            .getConversationManager()            .markConversation(                markType: 0,//标记类型                enableMark: true,//是否支持标记功能                conversationIDList: []);//需要标记的会话id列表    if (markConversationRes.code == 0) {      // 标记成功      markConversationRes.data?.forEach((element) {        element.conversationID; // 被标记的会话id        element.resultCode; // 此条会话的操作结果错误码        element.resultInfo; // 此条会话的操作结果描述      });    }

监听会话标记变更通知

会话被标记或者取消标记后,会话 V2TimConversationmarkList (点击查看详情) 字段会发生变更,您可以调用 addConversationListener (点击查看详情) 接口监听会话变更通知。示例代码如下:

    //设置会话监听器    V2TimConversationListener listener = V2TimConversationListener(      onConversationChanged: (List conversationList) => {        //某些会话的关键信息发生变化未读计数发生变化、最后一条消息被更新等等),可以根据会话的 lastMessage -> timestamp 重新对会话列表做排序        //conversationList 改变的会话列表      }    );    //添加会话监听器    TencentImSDKPlugin.v2TIMManager        .getConversationManager()        .addConversationListener(listener: listener); //需要新增的会话监听器

拉取指定标记会话

您可以调用 getConversationListByFilter (点击查看详情) 接口拉取指定标记会话。示例代码如下:

    //获取会话列表    V2TimConversationListFilter filter = V2TimConversationListFilter(        conversationType: 0,//会话类型        nextSeq: 0,//拉取游标        count: 10,//拉取数量        markType: 0,//会话标记类型        groupName: "groupName");//拉取的群组名    //获取会话列表的高级接口    V2TimValueCallback getConversationListByFilterRes =        await TencentImSDKPlugin.v2TIMManager            .getConversationManager()            .getConversationListByFilter(filter: filter);//会话列表过滤器    if (getConversationListByFilterRes.code == 0) {      //拉取成功      bool? isFinished =getConversationListByFilterRes.data?.isFinished; //是否拉取完      String? nextSeq =getConversationListByFilterRes.data?.nextSeq; //后续分页拉取的游标      List? conversationList =getConversationListByFilterRes.data?.conversationList; //此次拉取到的消息列表      //如果没有拉取完,使用返回的nextSeq继续拉取直到isFinished为true      if (!isFinished!) {        V2TimConversationListFilter nextFilter = V2TimConversationListFilter(            conversationType: 0,            nextSeq: int.parse(nextSeq!),//使用返回的nextSeq继续拉取直到isFinished为true            count: 10,            markType: 0,            groupName: "groupName");        V2TimValueCallback 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。 }); }

交流与反馈

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

对即时通讯IM解决方案有疑惑?想了解解决方案收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案

- 0人点赞 -

发表点评 (0条)

not found

暂无评论,你要说点什么吗?