逐条消息已读功能
重要提示
- 需要开通单群聊消息云存储服务后,才能使用此功能。
- 逐条消息已读功能自 SDK 5.32.1 版本起支持。
- 自 2026.02.11 起,新建的 AppKey 且 SDK 版本 >= 5.32.1 时,默认开启逐条消息已读功能,原有的单聊已读回执与群聊已读回执功能将失效。
- 如果您希望继续使用原有的单聊/群聊已读回执功能,请提交工单申请切换。
- 逐条消息已读功能依赖历史消息云存储能力,使用前请确认当前 App Key 已开通单群聊消息云端存储服务。您可以在控制台 IM 服务的服务购买页面为当前使用的 App Key 开启服务。如果使用生产环境的 App Key,请注意仅 IM 旗舰版或 IM 尊享版可开通该服务。
- 群成员超过 3000 人时,不支持群聊逐条消息已读功能。
逐条消息已读功能支持对每条消息分别处理已读状态,并提供消息级别的已读明细查询能力。
发送消息时开启逐条消息已读功能
如需支持逐条消息已读功能,发送前需将消息对象的 needReceipt 设置为 true。
示例代码
提示
以下示例中,engine 是已初始化的 RCIMIWEngine 实例。关于如何初始化 SDK,请参考初始化文档。
Dart
final RCIMIWTextMessage? message = await engine.createTextMessage(
RCIMIWConversationType.private,
"targetId",
null,
"hello",
);
message?.needReceipt = true;
await engine.sendMessage(
message!,
callback: RCIMIWSendMessageCallback(
onMessageSaved: (msg) {},
onMessageSent: (code, msg) {},
),
);
消息对象新增属性
| 参数 | 类型 | 说明 |
|---|---|---|
needReceipt | bool | 是否支持发送已读回执(发送前配置) |
sentReceipt | bool | 是否已发送已读回执(SDK 内部维护) |
发送已读回执
消息接收方在阅读消息后,可调用 sendReadReceiptResponseV5 通知发送方已读。
方法
Dart
Future<int> sendReadReceiptResponseV5(
RCIMIWConversationType type,
String targetId,
String? channelId,
List<String> messageUIds, {
IRCIMIWSendReadReceiptResponseV5Callback? callback,
});
参数说明
| 参数名 | 参数类型 | 描述 |
|---|---|---|
type | RCIMIWConversationType | 会话类型,仅支持单聊和群聊 |
targetId | String | 会话目标 ID |
channelId | String? | 频道 ID,非超级群场景可传 null |
messageUIds | List<String> | 消息 UID 列表,最多 100 条 |
callback | IRCIMIWSendReadReceiptResponseV5Callback | 结果回调(onSuccess / onError) |
代码示例
Dart
await engine.sendReadReceiptResponseV5(
RCIMIWConversationType.group,
"groupId",
null,
["messageUId1"],
callback: IRCIMIWSendReadReceiptResponseV5Callback(
onSuccess: () {},
onError: (code) {},
),
);
接收已读回执回调
消息发送方可通过监听 onMessageReadReceiptV5Received 接收已读回执响应。