通過 RongIMClient.getInstance().searchMessages 方法可以查詢關鍵字歷史消息
參數類型:
這裏是引用
conversationType //聊天類型
targetId // 聊天的ID
keyWords //搜索關鍵字
10 //搜索的最大條數
0 //開始時間 我不太清楚 傳的0 new
RongIMClient.ResultCallback<List>() //查詢的接口回調 具體的代碼是
具體實例:
RongIMClient.getInstance().searchMessages(conversationType, targetId, keyWords, 10, 0, new RongIMClient.ResultCallback<List<Message>>() {
@Override
public void onSuccess(List<Message> messages) {
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
}
});
返回的是一個List<Message>
我們需要循環解析,然後放入我們自己的Bean類中 最常用的就是添加content聊天內容 ,然後通過Message類裏的senderUserId
請求我們的後臺接口重新賦值頭像名字等信息 ,就可以展示了。 (數據需要我們自己維護 比如頭像 姓名 融雲只返回了聊天內容和ID)
然後。。。。。。
點擊當前展示的Item消息,跳轉到聊天頁面展示出當前的歷史消息,可以直接通過Intent跳轉,接受通過getIntent.getParcelableExtra()
接受當前的Message,最後通過
RongIM.getInstance().getHistoryMessages
獲取歷史記錄消息 (這個方法文檔上標註的很明確)搜索出來得到的也是個List<Message>
。
最後通過
//注:此次的fragment對象是ConversationFragment
fragement.getMessageAdapter().clear(); //清除當前頁面的歷史記錄
for(int i=0;i<messages.size();i++){
//重新賦值新的搜索出來的聊天記錄
fragement.getMessageAdapter().add(UIMessage.obtain(messages.get(i)));
}
//應爲搜索出來的不包括我們自己點擊的呢條信息 所以最後還是要添加上我們點擊的呢個Message
fragement.getMessageAdapter().add(UIMessage.obtain(message));
fragement.getMessageAdapter().notifyDataSetChanged();
問題是沒有微信呢麼連貫,只能顯示當前消息的前幾條數據,後幾條數據是不顯示的,哎,,,,
總之不是很完美,公司有時間還是自己搞吧。