Android 融云 -----自定义消息集成步骤

版权声明: https://blog.csdn.net/APPLYB/article/details/89841920

--------消息体----------
1. 新建一自定义消息类,继承 MessageContent


2.实现 encode() 方法,该方法的功能是将消息属性封装成 json 串,再将 json 串转成 byte 数组,该方法会在发消息时调用
注意:要在这个方法里面加上这句话用来携带用户信息
 if (getJSONUserInfo() != null){
                jsonObj.putOpt("user", getJSONUserInfo());
            }


3.覆盖父类的 MessageContent(byte[] data) 构造方法,该方法将对收到的消息进行解析,先由 byte 转成 json 字符串,再将 json 中内容取出赋值给消息属性。
注意:要在这个方法里面加上这句话用来解析携带用户信息 
  if (jsonObj.has("user"))
                setUserInfo(parseJsonToUserInfo(jsonObj.getJSONObject("user")));




4.MessageContent 已实现 Parcelable 接口,自定义消息类也需要实现 Parcelable


5.增加注解信息 :注解名:MessageTag ;属性:value ,flag; value 即 ObjectName 是消息的唯一标识不可以重复,
开发者命名时不能以 RC 开头,避免和融云内置消息冲突;flag 是用来定义消息的可操作状态。
flag 值如下表:
枚举值 说明
MessageTag.NONE 为空值,不表示任何意义,发送的自定义消息不会在会话页面和会话列表中展示。
MessageTag.ISCOUNTED 表示客户端收到消息后,要进行未读消息计数(未读消息数增加 1),所有内容型消息都应该设置此值。非内容类消息暂不支持消息计数。
MessageTag.ISPERSISTED 表示客户端收到消息后,要进行存储,并在之后可以通过接口查询,存储后会在会话界面中显示。
MessageTag.STATUS 在本地不存储,不计入未读数,并且如果对方不在线,服务器会直接丢弃该消息,对方如果之后再上线也不会再收到此消息(聊天室类型除外,此类消息聊天室会视为普通消息)。


6.自定义消息应在 init 后注册 RongIM.registerMessageType(CustomizeMessage.class);

-----------自定义消息展示---------
1、创建消息提供者
新建一个消息类继承 IContainerItemProvider.MessageProvider 类,实现对应接口方法接口
方法如下表:
方法名 描述
newView 初始化 View。
bindView 将数据填充 View 上。
getContentSummary 该条消息为该会话的最后一条消息时,会话列表要显示的内容,通过该方法进行定义。 
onItemClick 点击该类型消息触发。
onItemLongClick 长按该类型消息触发。


2、注册消息模板
RongIM.getInstance().registerMessageTemplate(new CustomizeMessageItemProvider);




----------发送消息---*---
1.  调用 RongIM.getInstance().sendMessage()发送消息

猜你喜欢

转载自blog.csdn.net/APPLYB/article/details/89841920