融云清空历史消息 Android 端
融云清空历史消息 Android 端
先调用获取历史消息。
/** * 根据会话类型的目标 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); }
再调用删除的接口。
/** * 删除指定的一条或者一组消息,回调方式获取是否删除成功。 * * @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); } }); }
清除远端消息调接口
cleanRemote 传 true ,时间戳传入当前的时间戳。
/**
删除指定时间戳之前的消息,可选择是否同时删除服务器端消息
此方法从服务器端清除历史消息,但是必须先开通历史消息云存储功能。
根据会话类型和 TargetId 清除某一会话指定时间戳之前的本地数据库消息(服务端历史消息),
清除成功后只能从本地数据库(服务端)获取到该时间戳之后的历史消息。
* * @param conversationType 会话类型。 * @param targetId 会话目标ID。 * @param recordTime 清除消息截止时间戳,【0 ~ 当前时间的 Unix 时间戳】。 * @param cleanRemote 是否删除服务器端消息 * @param callback 清除消息的回调。 */ public void cleanHistoryMessages
如果界面没有刷新,重新进入看下是否全部删除了。
您先试下是否可以删除,如果可以删除,但是界面没有刷新刷新的话,您可以调用 ConversationFragment 的
getMessageAdapter
方法,然后
mListAdapter.removeAll();
mListAdapter.notifyDataSetChanged();
试下。