跳到主要内容

版本:5.X

自定义消息

除了使用 SDK 内置的消息类型外,开发者也可以根据自身业务需求定义自有消息类型。

注意
  • 自定义消息类型必须在发送和接收该消息之前完成注册
  • 建议将所有自定义消息的注册操作统一放在 init 方法之后,connect 方法之前,便于管理和维护。
  • 自定义消息的消息类型名称消息结构必须在所有终端(包括移动端、Web端等)保持一致,否则会导致消息无法互通。
  • 请勿使用 RC: 作为自定义消息类型名称的前缀,以免与 SDK 内置消息类型冲突。

注册自定义消息

使用 RongIMLib.registerMessageType 方法可注册自定义消息类型,方法调用后会返回该消息类型对应的构造函数。

接口

JavaScript
RongIMLib.registerMessageType(messageType, isPersited, isCounted, searchProps, isStatusMessage)

参数说明

参数类型必填说明
messageTypeString消息类型名称,需保证多端一致
isPersitedBoolean是否存储
isCountedBoolean是否计数
searchPropsstring[]消息可被搜索的字段。Web 端无需设置。字段值为数字时,取值范围为 (-2^64, 2^64),且需为整数
isStatusMessageBoolean是否为状态消息。状态消息不存储、不计数,且仅在接收方在线时可收到

示例代码

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)
}
})