外观
已读、撤回与删除
消息操作分别管理阅读状态、内容可见性和重要消息入口。按钮文案、确认提示与 SDK 调用保持一致,让用户清楚了解操作范围。
操作与范围
| 操作 | 意图 | 使用说明 |
|---|---|---|
| 标为已读 | 更新当前用户阅读水位 | 回执发送与自身水位更新可区分 |
| 撤回 | 将消息转为撤回状态 | 发送者、权限和时效由服务端判断 |
| 仅自己删除 | 从当前用户可见记录中删除 | 保留其他用户的消息记录 |
| 清空会话记录 | 清理当前会话记录与相应同步范围 | 后续按清空后的历史范围同步 |
| 置顶消息 | 为会话提供重要消息入口 | 与会话列表置顶是不同能力 |
仅自己删除
dart
await sdk.deleteMessagesForCurrentUser(
conversationId,
selectedClientMessageIds,
);三个变量分别是已连接实例、当前会话标识和用户选中的消息 ID 列表。用户主动删除使用此公开入口,统一更新本地消息、搜索索引和摘要,并持久化同步操作;离线操作在连接恢复后继续同步。
撤回
dart
await chat.revoke(message);chat 是当前聊天控制器,message 为该会话中待操作的消息。撤回权限和时效取决于服务端规则,界面隐藏按钮只是辅助,最终应处理服务端拒绝。
撤回作为状态变化参与同步。自定义 UI 使用 SDK 的最终消息状态渲染撤回提示,保持在线接收与历史恢复后的展示一致。
置顶与定位
sdk.pinnedMessages.list(conversationId) 用于获取置顶消息。展示后可按消息序列调用上下文定位;若消息已不可见,则显示说明而不是一直加载。
多设备一致性
界面订阅 SDK 状态变化,统一更新消息列表、会话摘要、搜索结果和引用定位。接入时检查在线、重连和应用重启后的操作结果。