标签:jsonObj 自定义 json 融云 消息 Android 方法 MessageTag
--------消息体----------
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()发送消息
标签:jsonObj,自定义,json,融云,消息,Android,方法,MessageTag 来源: https://blog.csdn.net/APPLYB/article/details/89841920
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。