跳到主要内容

删除消息

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

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

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

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

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

String targetId = "会话 Id";
String timestamp = 0;

ChannelClient.getInstance().deleteUltraGroupMessagesForAllChannel(targetId, timestamp,
new IRongCoreCallback.ResultCallback<Boolean>() {
/**
* 成功回调
*/
@Override
public void onSuccess(Boolean bool) {

}
/**
* 失败回调
* @param errorCode 错误码
*/
@Override
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {

}
});

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

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

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

String targetId = "超级群 ID";
String channelId = "频道 ID";
String recordTime = 0;

ChannelClient.getInstance().deleteUltraGroupMessages(targetId, channelId, timestamp,
new IRongCoreCallback.ResultCallback<Boolean>() {
/**
* 获取成功回调
*/
@Override
public void onSuccess(Boolean bool) {

}
/**
* 失败回调
* @param errorCode 错误码
*/
@Override
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {

}
});

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

App 用户从本地删除消息后,如果再从服务端获取历史消息,可能会获取到在本地已删除的消息。如果希望删除服务端历史消息记录,可以使用以下接口,从服务端历史消息记录中删除指定单个频道删除早于某个时间点(timestamp)的消息的历史消息。

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

提示

启用超级群服务后,默认自动启用超级群历史消息存储,免费存储 7 天内的超级群消息。

String targetId = "超级群 ID";
String channelId = "频道 ID";
String timestamp = 0;

ChannelClient.getInstance().deleteRemoteUltraGroupMessages(targetId, channelId, timestamp,
new IRongCoreCallback.ResultCallback<Boolean>() {
/**
* 获取成功回调
*/
@Override
public void onSuccess(Boolean bool) {

}
/**
* 失败回调
* @param errorCode 错误码
*/
@Override
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {

}
});

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

提示

启用超级群服务后,默认自动启用超级群历史消息存储,免费存储 7 天内的超级群消息。

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

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

ConversationType conversationType = ConversationType.ULTRA_GROUP;
String targetId = "会话 Id";
Message[] messages = {message1, message2};

RongCoreClient.getInstance().deleteRemoteMessages(conversationType, targetId, messages, new IRongCoreCallback.OperationCallback() {
/**
* 删除消息成功回调
*/
@Override
public void onSuccess() {

}
/**
* 删除消息失败回调
* @param errorCode 错误码
*/
@Override
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {

}
});