消息介绍
消息基本结构
| 属性名 | 类型 | 说明 |
|---|---|---|
| conversationType | RCIMIWConversationType | 会话类型 |
| messageType | RCIMIWMessageType | 消息的类型 |
| targetId | string | 会话 ID |
| channelId | string | 所属会话的业务标识,长度限制 20 字符 |
| messageId | number | 本地数据库中存储的消息的唯一 ID 值。发送新消息时无需指定该 ID,否则会导致消息入库失败。在失败重发消息时,可以填入已入库的消息的 ID,请确保使用上一 次发送失败的消息实例。 |
| messageUId | string | 服务器消息唯一 ID(在同一个 Appkey 下全局唯一) |
| offLine | boolean | 是否是离线消息,只在接收消息的回调方法中有效,如果消息为离线消息,则为 YES ,其他情况均为 NO |
| groupReadReceiptInfo | RCIMIWGroupReadReceiptInfo | 群阅读回执状态 |
| receivedTime | number | 消息的接收时间(Unix 时间戳、毫秒) |
| sentTime | number | 消息的发送时间(Unix 时间戳、毫秒) |
| receivedStatus | RCIMIWReceivedStatus | 消息的接收状态 |
| sentStatus | RCIMIWSentStatus | 消息的发送状态 |
| senderUserId | string | 消息的发送者 ID |
| direction | RCIMIWMessageDirection | 消息的方向 |
| userInfo | RCIMIWUserInfo | 消息携带的用户信息 |
| mentionedInfo | RCIMIWMentionedInfo | 消息的 @ 信息 |
| pushOptions | RCIMIWMessagePushOptions | 消息推送配置 |
| extra | string | 消息的附加字段 |
| expansion | Map<string, string> | 消息扩展信息列表,该属性在消息发送时确定,发送之后不能再做修改 扩展信息只支持单聊和群组,其它会话类型不能设置扩展信息 默认消息扩展字典 key 长度不超过 32 ,value 长度不超过 4096 ,单次设置扩展数量最大为 20,消息的扩展总数不能超过 300 |
消息类型
IMLib 的 消息类型(RCIMIWMessageType)枚举提供了预定义的文本、语音、图片等消息类型,并且支持 App 通过 RCIMIWMessageType.custom 实现自定义消息。
各类型消息默认会在客户端本地存储,计入未读消息数。以下类型除外:
- 撤回消息类型(
RCIMIWMessageType.recall):客户端本地存储,但不计入未读消息数 - 命令消息类型(
RCIMIWMessageType.command):客户端不进行本地存储,不计入未读消息数 - 命令通知消息类型(
RCIMIWMessageType.commandNotification):客户端本地存储,不计入未读消息数。 - 自定义消息类型(
RCIMIWMessageType.custom):由 App 自定义存储策略(RCIMIWCustomMessagePolicy)进行控制。 - 原生自定义普通消息类型(
RCIMIWMessageType.nativeCustom):消息的存储策略由 App 注册原生自定义消息的 RCIMIWNativeCustomMessagePersistentFlag 进行控制。 - 原生自定义媒体消息类型(
RCIMIWMessageType.nativeCustomMedia):消息的存储策略由 App 注册原生自定义媒体消息的 RCIMIWNativeCustomMessagePersistentFlag 进行控制。消息可携带本地媒体文件,SDK 会在发送时将文件自动上传到服务端。
自定义消息与原生自定义消息类型区别:
- 自定义消息类型:跨平台提供的自定义消息包装类型,用户的自定义消息类型在底层被包装了一次,无法与原生 iOS、Adnroid SDK 注册的自定义消息互通。
- 原生自定义消息类型:支持与原生 iOS、Adnroid SDK 注册的自定义消息互通。
提示
原生自定义消息 5.12.1 版本及以上支持。
文本消息
类型:RCIMIWMessageType.text
专有可访问属性:
| 属性名 | 类型 | 说明 |
|---|---|---|
| text | string | 文本内容 |
构建文本消息
TypeScript
let message = await engine.createTextMessage(
type,
targetId,
channelId,
text,
);
| 参数名 | 参数类型 | 描述 |
|---|---|---|
| type | RCIMIWConversationType | 会话类型, |
| targetId | string | 会话 ID |
| channelId | string | 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 |
| text | string | 文本内容 |
语音消息
类型:RCIMIWMessageType.voice
专有可访问属性:
| 属性名 | 类型 | 说明 |
|---|---|---|
| duration | number | 语音的长度,单位:秒 |
构建语音消息
TypeScript
recorderManager.onStop(async function (res) {
//转为平台路径
let path = 'file:///' + plus.io.convertLocalFileSystemURL(res.tempFilePath);
let message = await engine.createVoiceMessage(type, targetId, channelId, path, duration);
})
| 参数名 | 参数类型 | 描述 |
|---|---|---|
| type | RCIMIWConversationType | 会话类型 |
| targetId | string | 会话 ID |
| channelId | string | 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 |
| path | string | 语音消息的本地路径,必须为有效路径 |
| duration | number | 语音消息的消息时长 |
图片消息
类型:RCIMIWMessageType.image
专有可访问属性:
| 属性名 | 类型 | 说明 |
|---|---|---|
| thumbnailBase64String | string | 图片的缩略图数据 |
| original | boolean | 是否为原图 |