自定义消息
除了使用 SDK 内置的消息类型外,开发者也可以根据自身业务需求定义自有消息类型。
注意
- 自定义消息类型必须在发送和接收该消息之前完成注册。
- 建议将所有自定义消息的注册操作统一放在
init
方法之后,connect
方法之前,便于管理和维护。 - 自定义消息的消息类型名称和消息结构必须在所有终端(包括移动端、Web端等)保持一致,否则会导致消息无法互通。
- 请勿使用 RC: 作为自定义消息类型名称的前缀,以免与 SDK 内置消息类型冲突。
注册自定义消息
使用 RongIMLib.registerMessageType 方法可注册自定义消息类型,方法调用后会返回该消息类型对应的构造函数。
接口
JavaScript
RongIMLib.registerMessageType(messageType, isPersited, isCounted, searchProps, isStatusMessage)
参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
messageType | String | 是 | 消息类型名称,需保证多端一致 |
isPersited | Boolean | 是 | 是否存储 |
isCounted | Boolean | 是 | 是否计数 |
searchProps | string[] | 是 | 消息可被搜索的字段。Web 端无需设置。字段值为数字时,取值范围为 (-2^64, 2^64),且需为整数 |
isStatusMessage | Boolean | 否 | 是否为状态消息。状态消息不存储、不计数,且仅在接收方在线时可收到 |
示例代码
JavaScript
const PersonMessage = RongIMLib.registerMessageType('s:person', true, true, [], false)
发送自定义消息
可通过 SDK 的 sendMessage 方法发送自定义消息。
示例代码
JavaScript
// 构建要发送的自定义消息
const message = new PersonMessage({ name: 'someone', age: 18 })
// 发送消息
RongIMLib.sendMessage({
conversationType: RongIMLib.ConversationType.PRIVATE,
targetId: '<targetId>'
}, message).then(res => {
if (res.code === 0) {
console.log(res.code, res.data)
} else {
console.log(res.code)
}
})