极光IM 之ConversationRefreshEvent

Android2013IT
2019-08-30 08:12 488 0

异常提示:Could not dispatch event: class cn.jpush.im.android.api.event.ConversationRefreshEvent

/**
 * 接收消息漫游事件
 * 如果在JMessageClient.init时启用了消息漫游功能,则每当一个会话的漫游消息同步完成时
 * sdk会发送此事件通知上层。
 **/
public void onEvent(ConversationRefreshEvent event) {

    //获取事件发生的会话对象

    //获取事件发生的原因,对于漫游完成触发的事件,此处的reason应该是
    //MSG_ROAMING_COMPLETE
    ConversationRefreshEvent.Reason reason = event.getReason();
    switch (reason){
        case MSG_ROAMING_COMPLETE:
            Conversation conv = event.getConversation();
            Logger.d("ConversationRefreshEvent:"+conv.toJson());
            if (conv.getType().equals(ConversationType.single)) {
                UserInfo userInfo = (UserInfo) conv.getTargetInfo();
                String targetId = userInfo.getUserName();
                String appKey = userInfo.getAppKey();
                if (mIsSingle && targetId.equals(mTargetId) && appKey.equals(mTargetAppKey)) {
                    List<Message> refreshMsgList = conv.getMessagesFromNewest(0, ChattingListAdapter.PAGE_MESSAGE_COUNT);
                    Logger.d("获取漫游历史会话:"+ refreshMsgList.size());
                    if (refreshMsgList != null && refreshMsgList.size() > 0) {
                        mChatView.setToBottom();
                        Collections.reverse(refreshMsgList);//历史消息倒序
                        mChatAdapter.addMsgListToList(refreshMsgList);

                    }
                }
            } else {
                long groupId = ((GroupInfo) conv.getTargetInfo()).getGroupID();
                if (groupId == mGroupId) {
                    List<Message> refreshMsgList = conv.getMessagesFromNewest(0, ChattingListAdapter.PAGE_MESSAGE_COUNT);
                    if (refreshMsgList != null && refreshMsgList.size() > 0) {
                        mChatView.setToBottom();
                        Collections.reverse(refreshMsgList);//历史消息倒序
                        mChatAdapter.addMsgListToList(refreshMsgList);
                    }
                }
            }
            break;
        default:
            break;
    }
    Logger.d(String.format(Locale.SIMPLIFIED_CHINESE, "收到ConversationRefreshEvent事件"));
}

1个回答

热门排序