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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值