功能描述
消息已读回执指的是,发送端往会话中发送消息,如果他想知道哪些人读过/还没读过这条消息,那么他就需要开启消息已读回执功能。 开启后,发送端发送消息时可以设置消息是否需要已读回执。如果设置为“需要”,接收端查看消息后才会发送自己已读给发送端。
单聊和群聊均支持消息已读回执功能,操作步骤一致。
说明:
- 该功能需要购买旗舰版套餐包,购买 旗舰版套餐包 后可使用。
- 群已读回执仅Flutter3.8.0版本支持。
消息已读回执
设置支持已读回执的群类型
如果是群消息已读回执,需要先在 即时通信 IM 控制台 >功能配置>登录与消息>群已读消息回执配置 中设置支持已读回执消息的群类型。
发送端设置消息需要已读回执
发送端创建消息后,先通过消息对象 V2TIMMessage
的 needReadReceipt
字段设置消息需要已读回执,再发送消息到会话中。
示例代码如下:
V2TimValueCallback<V2TimMsgCreateInfoResult> createCustomMessageRes =
await TencentImSDKPlugin.v2TIMManager
.getMessageManager()
.createCustomMessage(
data: '正在输入中',
);
// 发送消息时,需要把needReadReceipt设置为true
TencentImSDKPlugin.v2TIMManager.getMessageManager().sendMessage(id: createCustomMessageRes.data.id, receiver: "", groupID: "groupID",onlineUserOnly: true,needReadReceipt: true);
接收端发送消息已读回执
接收端收到消息后,可以通过消息对象 V2TIMMessage
的 needReadReceipt
字段判断消息是否需要已读回执,如果需要已读回执,当用户查看消息后,调用 sendMessageReadReceipts
接口发送消息已读回执。
示例代码如下:
V2TimCallback sendMessageReadReceipts = await TencentImSDKPlugin.v2TIMManager.getMessageManager().sendMessageReadReceipts(messageIDList: ['msgids']);
if(sendMessageReadReceipts.code == 0){
// 成功
}else{
// 失败
}
发送端监听消息已读回执通知
接收端发送消息已读回执后,发送端可以通过 V2TimAdvancedMsgListener
的 onRecvMessageReadReceipts
回调监听消息已读回执通知,在通知中更新 UI,例如更新为 “2 人已读”。
示例代码如下:
onRecvMessageReadReceipts: (List<V2TimMessageReceipt> receiptList) {
receiptList.forEach((element) {
element.groupID; // 群id
element.msgID; // 已读回执消息 ID
element.readCount;// 群消息最新已读数
element.unreadCount;// 群消息最新未读数
element.userID; // C2C 消息对方 ID
});
},
发送端主动拉取消息已读回执信息
发送端从其他界面进入消息列表后,先拉取历史消息,再调用 getMessageReadReceipts
接口拉取消息已读回执信息。
其中已读回执信息 V2TimessageReceipt
字段含义如下:
属性 | 含义 | 说明 |
---|---|---|
msgID | 消息 ID | 消息唯一 ID |
userID | 对端用户 ID | 如果是单聊,该字段表示对端用户 ID |
timestamp | 对端用户标记会话已读时间 | 该字段在消息已读场景无效,如果是单聊,当对端用户调用 markC2CMessageAsRead 接口标记会话已读时,自己会收到的 onRecvC2CReadReceipt 回调,回调里会携带 timestamp 信息 |
groupID | 群组 ID | 如果是群聊,该字段为群组 ID |
readCount | 群消息已读人数 | 如果是群聊,该字段为群消息已读人数 |
unreadCount | 群消息未读人数 | 如果是群聊,该字段为群消息未读人数 |
示例代码如下:
V2TimValueCallback<List<V2TimMessageReceipt>> getMessageReadReceipts = await TencentImSDKPlugin.v2TIMManager.getMessageManager().getMessageReadReceipts(messageIDList: []);
if(getMessageReadReceipts.code == 0){
getMessageReadReceipts.data.forEach((element) {
// 解析群消息已读回执
element.groupID;
element.msgID;
element.readCount;
element.timestamp;
element.unreadCount;
element.userID;
});
}
发送端主动拉取群消息已读或未读成员列表
发送端在需要查看群消息已读或未读成员列表时,可以调用 getGroupMessageReadMemberList
接口分页拉取消息已读或未读群成员列表。
V2TimValueCallback<V2TimGroupMessageReadMemberList> getGroupMessageReadMemberList = await TencentImSDKPlugin.v2TIMManager.getMessageManager().getGroupMessageReadMemberList(messageID: "", filter: GetGroupMessageReadMemberListFilter.V2TIM_GROUP_MESSAGE_READ_MEMBERS_FILTER_READ,);
if(getGroupMessageReadMemberList.code == 0){
// 获取群消息已读未读群成员列表
getGroupMessageReadMemberList.data.isFinished;
getGroupMessageReadMemberList.data.memberInfoList;
getGroupMessageReadMemberList.data.nextSeq;
}
交流与反馈
欢迎加入 QQ 群进行技术交流和反馈问题,QQ 群:788910197。