其他分享
首页 > 其他分享> > 2021-08-03

2021-08-03

作者:互联网

腾讯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给布局设置数据
在这里插入图片描述
到这就结束了!

标签:03,群聊,自定义,08,布局,IM,2021,方法,消息
来源: https://blog.csdn.net/weixin_43860442/article/details/119345812