自定义消息
自定义消息体编写规范
支持自定义普通消息,不支持自定义媒体消息
自定义消息规范
- 继承自 MessageContent 并实现 MessageTag 注解
- 按需增加自定义消息的属性
- 必须声明无参的构造方法,因为注册自定义消息时候,只能用无参构造方法
- 实现基类 encode 方法,将自定义消息转为 JSON 字符串
- 将基类的数据保存到 map 中
- 将本类的独有属性放到 map 中
- 需要将数据类型声明为 Object
- 将 map 转为 字符串
- 实现基类 decode 方法,将 JSON 字符串转为自定义消息
- 将字符串转为 map
- 将基类的数据解析出来
- 将本类的独有属性解析
- 实现基类 getClassName 方法,将自定义消息类名返回
- 直接写字符串可能会出现拼写错误的情况,所以此处建议直接使用 类名.name
- 按需实现基类 getSearchableWord 方法。从 1.1.0 版本开始支持。
MessageTag 规范
MessageTag 有两个参数
- 第一个参数,string 类型,用来唯一标识该自定义消息,RC: 为 SDK 内置的,app 禁用 RC: 开头
- 第二个参数,MessageFlag 类型,用来表示自定义消息的持久化类型
MessageFlag 类型 | 说明 | 建议 |
---|---|---|
None | 空值,不表示任何意义。此类消息不会保存到数据库,也不会记录未读数 | 一般用作命令消息,通知端上做一个动作 |
Save | 消息需要被存储到消息历史记录。此类消息会保存到数据库,但是不记录未读数 | 常用于小灰条类型的消息,需要 UI 展示,但不需要增加未读数 |
Count | 消息需要被记入未读消息数。此类消息会保存到数据库,并且增加未读数 | 如文本,图片等消息均为此类 |
Status | 状态消息, 不存储不计数。此类消息不会保存到数据库,也不会记录未读数。对方在线能收到该消息;对方不在线,服务器会直接丢弃该消息,对方如果之后再上线也不会再收到此消息 | 一般用于发送输入状态之类的消息 |