腾讯IM自定义消息梳理
这是新手小白的一次记录
第一次集成IM没有想到这么坑,文档写的都不清楚,连自定义消息返回的参数都没有文档展示,为了找布局和数据的关系,看了一天代码,太难了。
IM有Demo可以参考https://gitee.com/cloudtencent/TIMSDK/tree/master
我的项目需求是群聊自定义IM(截图是在IMDemo)
首先我们到了聊天页面会先初始化ChatLayout(聊天室布局),setChatInfo方法是用于给界面赋值
setChatInfo方法里会判断消息类型是群聊还是单聊,群聊中loadChatMessages方法是加载消息
这里获取历史消息
TIMMessages2MessageInfos处理数据
把SDK的消息bean列表转化为TUIKit的消息bean列表
主要是通过TIMMessage2MessageInfo来处理数据
返回createMessageInfo,来看看createMessageInfo方法。通过type来判断消息类型
自定义消息类型是V2TIM_ELEM_TYPE_CUSTOM,之后他调用createCustomMessageInfo(timMessage, context),customElem是我们的自定义消息内容,下面是判断数据类型是否是是我们所用的
createCustomMessageInfo方法结束后又回到createMessageInfo方法
这些主要是判断消息的状态
方法结束后回到onSuccess方法,数据处理完之后通过setDataProvider来实现布局
用于set数据
通过notifyDataSourceChanged设置数据,刷新数据,setAdapter添加适配器
MessageListAdapter中的代码 对于自定义消息,需要在正常布局之后,交给外部调用者重新加载渲染
bindCustomHolder中的bindCommonViewHolder会跳到我们自定义的viewHolder中
之后通过CustomMessageDraw().onDraw(customHolder, msg, position)方法渲染布局
再通过CustomHelloTIMUIController.onDraw给布局设置数据
到这就结束了!