跳到主要内容

删除消息

超级群会话消息存储在服务端(免费存储 7 天)和用户设备本地数据库。App 用户通过客户端 SDK 删除自己的历史消息,支持仅从本地数据库删除消息、或仅从融云服务端删除消息。

提示
  • 客户端的删除消息的操作均指从当前登录用户的历史消息记录中删除消息,不影响会话中其他用户的历史消息记录。
  • 如果 App 的管理员或者某普通用户希望在该 App 中彻底删除一条消息,例如在所有超级群成员的聊天记录中删除一条消息,应使用客户端或服务端的撤回消息功能。消息成功撤回后,原始消息内容会在所有用户的本地与服务端历史消息记录中删除。
功能本地/服务端API
从本地删除全部频道的消息(时间戳)仅从本地删除deleteUltraGroupMessagesForAllChannel
从本地删除指定频道的消息(时间戳)仅从本地删除deleteUltraGroupMessages
从服务端删除指定频道的消息(时间戳)仅从服务端删除deleteRemoteUltraGroupMessages
从本地和远端删除消息(消息对象)同时从本地和服务端删除deleteRemoteMessages

从本地删除全部频道的消息(时间戳)

提示

从 5.3.0 版本 RCChannelClient 开始,建议使用下方异步返回结果的接口,原同步接口同时废弃。

删除本地数据库删除所有频道指定时间戳之前的历史消息。需提供 Unix 时间戳,精确到毫秒。单次操作仅针对单个超级群,不支持一次删除多个超级群中的消息。

如果 App 用户希望从超级群在当前设备上存储的所有历史记录中删除一段时间的记录,可以使用 deleteUltraGroupMessagesForAllChannel 删除所有频道中早于某个时间点(timestamp)的消息。时间戳为 0 表示使用当前时间戳,会从本地清除全部消息。服务端保存的该用户的历史消息记录不受影响。如果该用户从服务端获取历史消息,可能会获取到在本地已删除的消息。

[[RCChannelClient sharedChannelManager]
deleteUltraGroupMessagesForAllChannel:@"targetId"
timestamp:timestamp
completion:^(BOOL){
//异步回调,是否成功
}];

从本地删除指定频道的消息(时间戳)

提示

从 5.3.0 版本 RCChannelClient 开始,建议使用下方异步返回结果的接口,原同步接口同时废弃。

删除本地数据库删除指定单个频道指定时间戳之前的历史消息。需提供 Unix 时间戳,精确到毫秒。单次操作仅针对单个超级群,不支持一次删除多个超级群中的消息。

如果 App 用户希望从超级群在当前设备上存储的频道消息历史记录中删除一段时间的记录,可以使用 deleteUltraGroupMessages 删除早于某个时间点(timestamp)的消息。时间戳为 0 表示使用当前时间戳,会从本地清除指定频道中的全部消息。服务端保存的该用户的历史消息记录不受影响。如果该用户从服务端获取历史消息,可能会获取到在本地已删除的消息。

[[RCChannelClient sharedChannelManager]
deleteUltraGroupMessages:@"targetId"
channelId:@"channelId"
timestamp:timestamp
completion:^(BOOL){
//异步回调,是否成功
}];

从服务端指定频道的消息(时间戳)

从服务端历史消息记录中删除指定单个频道指定时间戳之前的历史消息。需提供 Unix 时间戳,精确到毫秒。单次操作仅针对单个超级群,不支持一次删除多个超级群中的消息。该接口仅清除当前用户在服务端历史消息,本地保存的用户历史消息记录不受影响。

提示

在融云控制台为 App 启用超级群服务后,融云会自动启用历史消息存储(免费存储 7 天)。

App 用户从本地删除消息后,如果再从服务端获取历史消息,可能会获取到在本地已删除的消息。如果希望删除服务端历史消息记录,可以使用 deleteRemoteUltraGroupMessages 删除早于某个时间点(timestamp)的消息。时间戳为 0 表示使用当前时间戳,会清除指定频道中的全部消息。

- (void)deleteRemoteUltraGroupMessages:(NSString *)targetId
channelId:(NSString *)channelId
timestamp:(long long)timestamp
success:(void (^)(void))successBlock
error:(void (^)(RCErrorCode status))errorBlock

从本地和远端删除指定频道的消息(消息对象)

如果 App 用户希望从自己的超级群会话的历史记录中彻底删除一组消息,可以使用以下方法,传入需要被删除的消息对象 RCMessage 列表。请确保所提供的消息均属于同一超级群频道(RCMessage#channelId)。一次最多删除 100 条消息。

删除成功后,该用户无法从本地数据库获取消息。如果从服务端获取历史消息,也无法获取到已删除的消息。

[[RCCoreClient sharedCoreClient]
deleteRemoteMessage:ConversationType_ULTRAGROUP
targetId:@"targetId"
messages:messages
success:^{}
error:^(RCErrorCode status) {}];