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