利用环信扩展消息实现话题卡功能,包括发送话题卡 接受话题卡
首先,先上效果图
话题卡功能实现原理:
话题卡功能主要是使用扩展消息和透传消息来实现的,主要包含一些自定义消息类型和自定义布局显示等。环信定义好的消息类型包括文本图片 视频 位置 音频 文件 透传这几种类型,话题卡功能主要使用文本类消息类型进行扩展,再利用透传消息来通知对方更新状态。
实现步骤:
1.首先找到EaseChatFragment,里面有一个发送大图片的消息,话题卡就是模仿这种来实现的。
直接参照上面的创建方法
在EaseCommonUtils加一个方法createCardMessage,这里要给文本消息进行扩展,我给他一个类型(用来在Adapter中判断显示什么样的布局)和一个状态(包含0等待 1拒绝 2接受三种状态)
2.在EaseChatFragment里面添加一个方法SendCardMessage
3.点击话题卡的时候调用上面的方法
4.在EaseMessageAdapter里面修改发送接收消息ui,先在getItemViewType里面修改type,14发送话题卡 15接收话题卡 16同意话题卡
根据是发送还是接收的来给item加上不同的type(好像后面没使用,下面是根据之前扩展消息的值来判断的)
然后新建EaseChatCardPresenter和EaseChatRowCard类(这两个类是控制显示的ui的),然后在createChatRowPresenter里使用,这里是主要控制布局显示的地方
这个是EaseChatCardPresenter的代码
这个是EaseChatRowCard中主要的逻辑代码
在发送话题卡图片的时候要在EaseMessageAdapter添加一些判断显示ui,这部分就像上面做话题卡的时候一样,下面是代码
然后在DemoHelper和ChatFragment中接收并处理透传消息在OnCmdMessageReceived方法中处理透传消息
DemoHelper中的处理代码
ChatFragment中的代码