删除消息
针对单聊会话、群聊会话、系统会话,融云支持 App 用户通过客户端 SDK 删除自己的历史消息,支持仅从本地数据库删除消息、仅从融云服务端删除自己的历史消息、或从两处同时删除。
SDK 的删除消息操作(下表中的 API)均指从当前登录用户的历史消息记录中删除一条或一组消息,不影响会话中其他用户的历史消息记录。
功能 | 本地/服务端 | API |
---|---|---|
仅从本地删除指定消息(消息 ID) | 仅从本地删除 | deleteMessages |
仅从本地删除会话全部历史消息 | 仅从本地删除 | deleteMessages |
删除会话内指定消息(消息对象) | 同时从本地和服务端删除消息 | deleteRemoteMessage |
删除会话历史消息(时间戳) | 可选仅本地删除、或者同时从本地和服务端删除消息 | clearHistoryMessages |
仅从服务端删除会话历史消息(时间戳) | 仅从服务端删除 | clearRemoteHistoryMessages |
提示
- App 用户的单聊会话、群聊会话、系统会话的消息默认仅存储在本地数据库中,仅支持从本地删除。如果 App(App Key/环境)已开通单群聊消息云端存储,该用户的消息还会保存在融云服务端(默认 6 个月),可从远端历史消息记录中删除消息。
- 针对单聊会话、群聊会话,如果通过任何接口以传入时间戳的方式删除远端消息,服务端默认不会删除对应的离线消息补偿(该机制仅会在打开多设备消息同步开关后生效)。此时如果换设备登录或卸载重装,仍会因 为消息补偿机制获取到已被删除的历史消息。如需彻底删除消息补偿,请提交工单,申请开通删除服务端历史消息时同时删除多端补偿的离线消息。如果以传入消息对象的方式删除远端消息,则服务端一定会删除消息补偿中的对应消息。
- 针对单聊会话、群聊会话,如果 App 的管理员或者某普通用户希望在所有会话参与者的历史记录中彻底删除一条消息,应使用撤回消息功能。消息成功撤回后,原始消息内容会在所有用户的本地与服务端历史消息记录中删除。
- 客户端 SDK 不提供删除聊天室消息的接口。当前用户的聊天室本地消息在退出聊天室时会被自动删除。开通聊天室消息云端存储服务后,如需清除全部用户的聊天室历史消息,可使用服务端 API 清除消息。
- 客户端 SDK 提供删除超级群会话的消息的 API,详见「超级群管理」下的删除消息。
仅从本地删除指定消息(消息 ID)
App 用户可以按消息 ID 删除存储在本地数据库内的消息。待删除消息可以属于不同会话。
如果 App 已经开通单群聊历史消息云存储服务,服务端保存的该用户的历史消息记录不受影响。如果该用户从服务端获取历史消息,可能会获取到在本地已删除的消息。
[[RCCoreClient sharedCoreClient] deleteMessages:@[@(message.messageId)] completion:^(BOOL ret) {
if (ret) {
// 删除成功
} eles {
// 删除失败
}
}];
删除时需要提供待删除消息 ID 数组。