融云清空历史消息 Android 端

  1. 先调用获取历史消息。

/**

  • 根据会话类型的目标 Id,回调方式获取N条历史消息记录。

*

  • @param conversationType 会话类型。不支持传入 ConversationType.CHATROOM。
  • @param targetId         目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id。
  • @param oldestMessageId 最后一条消息的 Id,获取此消息之前的 count 条消息,没有消息第一次调用应设置为:-1。
  • @param count           要获取的消息数量。
  • @param callback         获取历史消息记录的回调,按照时间顺序从新到旧排列。

*/
public void getHistoryMessages(Conversation.ConversationType conversationType, String targetId, int oldestMessageId, int count, RongIMClient.ResultCallback<List<Message>> callback) {
RongIMClient.getInstance().getHistoryMessages(conversationType, targetId, oldestMessageId, count, callback);
}

  1. 再调用删除的接口。

/**

  • 删除指定的一条或者一组消息,回调方式获取是否删除成功。

*

  • @param messageIds 要删除的消息 Id 数组。
  • @param callback   是否删除成功的回调。

*/
public void deleteMessages(final int[] messageIds, final RongIMClient.ResultCallback<Boolean> callback) {
RongIMClient.getInstance().deleteMessages(messageIds, new RongIMClient.ResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean bool) {
if (bool)
RongContext.getInstance().getEventBus().post(new Event.MessageDeleteEvent(messageIds));

if (callback != null)
callback.onSuccess(bool);
}

@Override
public void onError(RongIMClient.ErrorCode e) {
if (callback != null)
callback.onError(e);
}
});
}

清除远端消息调接口

  1. cleanRemote 传 true ,时间戳传入当前的时间戳。

/**

  • 删除指定时间戳之前的消息,可选择是否同时删除服务器端消息
  • 此方法从服务器端清除历史消息,但是必须先开通历史消息云存储功能。
  • 根据会话类型和 TargetId 清除某一会话指定时间戳之前的本地数据库消息(服务端历史消息),
  • 清除成功后只能从本地数据库(服务端)获取到该时间戳之后的历史消息。


*

  • @param conversationType 会话类型。

  • @param targetId         会话目标ID。

  • @param recordTime       清除消息截止时间戳,【0 ~ 当前时间的 Unix 时间戳】。

  • @param cleanRemote     是否删除服务器端消息

  • @param callback         清除消息的回调。


*/

public void cleanHistoryMessages

  1. 如果界面没有刷新,重新进入看下是否全部删除了。

您好,

您先试下是否可以删除,如果可以删除,但是界面没有刷新刷新的话,您可以调用 ConversationFragment 的

getMessageAdapter 方法,然后

mListAdapter.removeAll();

mListAdapter.notifyDataSetChanged(); 试下。


融云RongCloud
82 声望1.2k 粉丝

因为专注,所以专业