2021-08-03

腾讯IM自定义消息梳理

这是新手小白的一次记录

第一次集成IM没有想到这么坑,文档写的都不清楚,连自定义消息返回的参数都没有文档展示,为了找布局和数据的关系,看了一天代码,太难了。

IM有Demo可以参考https://gitee.com/cloudtencent/TIMSDK/tree/master

我的项目需求是群聊自定义IM(截图是在IMDemo)
首先我们到了聊天页面会先初始化ChatLayout(聊天室布局),setChatInfo方法是用于给界面赋值
2021-08-03
setChatInfo方法里会判断消息类型是群聊还是单聊,群聊中loadChatMessages方法是加载消息
2021-08-03
2021-08-03
这里获取历史消息
2021-08-03

TIMMessages2MessageInfos处理数据2021-08-03

把SDK的消息bean列表转化为TUIKit的消息bean列表2021-08-03
主要是通过TIMMessage2MessageInfo来处理数据
2021-08-03
返回createMessageInfo,来看看createMessageInfo方法。通过type来判断消息类型
2021-08-03
自定义消息类型是V2TIM_ELEM_TYPE_CUSTOM,之后他调用createCustomMessageInfo(timMessage, context),customElem是我们的自定义消息内容,下面是判断数据类型是否是是我们所用的
2021-08-03
createCustomMessageInfo方法结束后又回到createMessageInfo方法
这些主要是判断消息的状态
2021-08-03
方法结束后回到onSuccess方法,数据处理完之后通过setDataProvider来实现布局
2021-08-03
用于set数据
2021-08-03
通过notifyDataSourceChanged设置数据,刷新数据,setAdapter添加适配器
2021-08-03
MessageListAdapter中的代码 对于自定义消息,需要在正常布局之后,交给外部调用者重新加载渲染
2021-08-03
bindCustomHolder中的bindCommonViewHolder会跳到我们自定义的viewHolder中
2021-08-03
之后通过CustomMessageDraw().onDraw(customHolder, msg, position)方法渲染布局
2021-08-03
再通过CustomHelloTIMUIController.onDraw给布局设置数据
2021-08-03
到这就结束了!

上一篇:JS 第三课


下一篇:Github Qt开源项目