跳到主要内容

版本:5.X

自定义消息

除了使用 SDK 内置消息外,开发者可根据自己的业务需求自定义消息,自定义消息的类型、消息结构需要确保多端一致,否则将出现无法互通的问题。

注意事项:

  • 注册自定义消息代码必须在发送、接收该自定义消息之前
  • 推荐将所有注册自定义消息代码放在 init 方法之后, connect 方法之前
  • 注册的消息类型名, 必须多端一致, 否则消息无法互通
  • 请勿使用 RC: 开头的类型名,以免和 SDK 默认的消息名称冲突

注册自定义消息

使用 RongIMLib.registerMessageType 方法来注册自定义消息,该方法会返回自定义消息构造函数。

const PersonMessage = RongIMLib.registerMessageType('s:person', true, true, [], false)
参数类型说明
messageTypestring消息类型
isPersitedboolean是否存储
isCountedboolean是否计数
searchPropsstring[]搜索字段,web 端无需设置,搜索字段值设置为数字时取值范围为 (-Math.pow(2, 64), Math.pow(2, 64)) 且为整数
isStatusMessageboolean是否是状态消息。状态消息不存储、不计数,接收方在线时才能收到。
提示
  1. RongIMLib.registerMessageType 必须在 connect 之前调用,否则可能造成收取消息的行为异常。
  2. 请尽量把应用中所有涉及到的自定义消息统一一次注册,且同类型消息仅调用一次注册,便于管理。

发送自定义消息

API 参考:sendMessage

// 构建要发送的自定义消息
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)
}
})