跳到主要内容

消息介绍

消息基本结构

属性名类型说明
conversationTypeRCIMIWConversationType会话类型
targetIdString会话 ID
channelIdString所属会话的业务标识,长度限制 20 字符,仅在超级群下生效
messageTypeRCIMIWMessageType消息的类型
messageIdint本地存储的消息的唯一值(数据库索引唯一值)
messageUIdString服务器消息唯一 ID(在同一个 Appkey 下全局唯一)
directionRCIMIWMessageDirection消息的方向
receivedTimeint消息的接收时间(Unix 时间戳、毫秒)
sentTimeint消息的发送时间(Unix 时间戳、毫秒)
receivedStatusRCIMIWReceivedStatus消息的接收状态
sentStatusRCIMIWSentStatus消息的发送状态
senderUserIdString消息的发送者 ID
expansionMap消息扩展信息列表,该属性在消息发送时确定,发送之后不能再做修改。
扩展信息只支持单聊和群组,其它会话类型不能设置扩展信息。
默认消息扩展字典 key 长度不超过 32 ,value 长度不超过 4096 ,单次设置扩展数量最大为 20,消息的扩展总数不能超过 300
offLinebool是否是离线消息,只在接收消息的回调方法中有效,如果消息为离线消息,则为 YES ,其他情况均为 NO
groupReadReceiptInfoRCIMIWGroupReadReceiptInfo群阅读回执状态
userInfoRCIMIWUserInfo消息携带的用户信息
mentionedInfoRCIMIWMentionedInfo消息的 @ 信息
pushOptionsRCIMIWMessagePushOptions消息推送配置,仅可在发送方进行配置,接收方为空
extraString消息的附加字段,设置后接收方收到消息后也可以拿到数据。

消息类型与构造方法

IMLib 的消息类型(RCIMIWMessageType)枚举提供了预定义的文本、语音、图片等消息类型,并且支持 App 通过 RCIMIWMessageType.custom 实现自定义消息。

各类型消息默认会在客户端本地存储,计入未读消息数。以下类型除外:

  • 撤回消息类型(RCIMIWMessageType.recall):客户端本地存储,但不计入未读消息数
  • 命令消息类型(RCIMIWMessageType.command):客户端不进行本地存储,不计入未读消息数
  • 命令通知消息类型(RCIMIWMessageType.commandNotification):客户端本地存储,不计入未读消息数。
  • 自定义消息类型(RCIMIWMessageType.custom):由 App 自定义存储策略(RCIMIWCustomMessagePolicy)进行控制。

文本消息

类型:RCIMIWMessageType.text

专有可访问属性:

属性名类型说明
textString文本内容

构建文本消息

RCIMIWTextMessage? message = await engine.createTextMessage(
type,
targetId,
channelId,
text,
);
参数名参数类型描述
typeRCIMIWConversationType会话类型,
targetIdString会话 ID
channelIdString频道 ID,仅支持超级群使用,其他会话类型传 null 即可。
textString文本内容

语音消息

类型:RCIMIWMessageType.voice

专有可访问属性:

属性名类型说明
durationint语音的长度,单位:秒

构建语音消息

RCIMIWVoiceMessage? message = await engine.createVoiceMessage(
type,
targetId,
channelId,
path,
duration,
);
参数名参数类型描述
typeRCIMIWConversationType会话类型
targetIdString会话 ID
channelIdString频道 ID,仅支持超级群使用,其他会话类型传 null 即可。
pathString语音消息的本地路径,必须为有效路径
durationint语音消息的消息时长

图片消息

类型:RCIMIWMessageType.image

专有可访问属性:

属性名类型说明
thumbnailBase64StringString图片的缩略图数据
originalbool是否为原图

构建图片消息

RCIMIWImageMessage? message = await engine.createImageMessage(
type,
targetId,
channelId,
path,
);
参数名参数类型描述
typeRCIMIWConversationType会话类型
targetIdString会话 ID
channelIdString频道 ID,仅支持超级群使用,其他会话类型传 null 即可。
pathString图片消息的本地路径,必须为有效路径

文件消息

类型:RCIMIWMessageType.file

专有可访问属性:

属性名类型说明
nameString文件名
fileTypeString文件类型
sizeint文件大小,单位为 Byte

构建文件消息

RCIMIWFileMessage? message = await engine.createFileMessage(
type,
targetId,
channelId,
path,
);
参数名参数类型描述
typeRCIMIWConversationType会话类型
targetIdString会话 ID
channelIdString频道 ID,仅支持超级群使用,其他会话类型传 null 即可。
pathString文件消息的本地路径,必须为有效路径

小视频消息

类型:RCIMIWMessageType.sight

专有可访问属性:

属性名类型说明
durationint视频时长
sizeint视频大小
nameString视频的名称
thumbnailBase64StringString缩略图数据

构建小视频消息

RCIMIWSightMessage? message = await engine.createSightMessage(
type,
targetId,
channelId,
path,
duration,
);
参数名参数类型描述
typeRCIMIWConversationType会话类型
targetIdString会话 ID
channelIdString频道 ID,仅支持超级群使用,其他会话类型传 null 即可。
pathString小视频消息的本地路径,必须为有效路径
durationint小视频消息的视频时长

GIF 图消息

类型:RCIMIWMessageType.gif

专有可访问属性:

属性名类型说明
dataSizeintGIF 图的大小,单位字节
widthintGIF 图的宽
heightintGIF 图的高

构建 GIF 消息

RCIMIWGIFMessage? message = await engine.createGIFMessage(
type,
targetId,
channelId,
path
);
参数名参数类型描述
typeRCIMIWConversationType会话类型
targetIdString会话 ID
channelIdString频道 ID,仅支持超级群使用,其他会话类型传 null 即可。
pathStringGIF 消息的本地路径

撤回消息

撤回消息不可以主动构建发送,需要撤回消息请调用撤回消息接口

类型:RCIMIWMessageType.recall

专有可访问属性:

属性名类型说明
adminbool是否是管理员操作
deletedbool是否删除
recallTimeint被撤回的原始消息的发送时间(毫秒)
recallActionTimeint撤回动作的时间(毫秒)
originalMessageRCIMIWMessage被撤回的原消息

引用消息

类型:RCIMIWMessageType.reference

专有可访问属性:

属性名类型说明
textString引用文本
referenceMessageRCIMIWMessage被引用的消息

构建引用消息

RCIMIWReferenceMessage? message = await engine.createReferenceMessage(
type,
targetId,
channelId,
message,
text,
);
参数名参数类型描述
typeRCIMIWConversationType会话类型
targetIdString会话 ID
channelIdString频道 ID,仅支持超级群使用,其他会话类型传 null 即可。
referenceMessageRCIMIWMessage引用的消息
textString引用的文本内容

位置消息

类型:RCIMIWMessageType.location

专有可访问属性:

属性名类型说明
longitudedouble经度信息
latitudedouble纬度信息
poiNameStringPOI 信息
thumbnailPathString缩略图地址

构建位置消息

RCIMIWLocationMessage? message = await engine?.createLocationMessage(
type,
targetId,
channelId,
double.parse(longitude),
double.parse(latitude),
poiName,
path,
);
参数名参数类型描述
typeRCIMIWConversationType会话类型
targetIdString会话 ID
channelIdString频道 ID,仅支持超级群使用,其他会话类型传 null 即可。
longitudedouble经度
latitudedouble纬度
poiNameStringPOI 信息
thumbnailPathString缩略图本地路径,必须为有效路径

命令消息

类型:RCIMIWMessageType.command

专有可访问属性:

属性名类型说明
nameString命令的名称
dataString命令的扩展数据,可以为任意字符串,如存放您定义的json数据。

Flutter SDK 目前不提供 RCIMIWCommandMessage 命令消息的 create 方法,仅支持接收该类型消息。如需要在客户端发送此消息,需要在 Flutter 层先定义此消息的包装类。详见知识库文档Flutter SDK 如何发送命令消息和命令通知消息?

命令通知消息

类型:RCIMIWMessageType.commandNotification

专有可访问属性:

属性名类型说明
nameString命令提醒的名称
dataString命令提醒消息的扩展数据,可以为任意字符串,如存放您定义的 json 数据。

Flutter SDK 目前不提供 RCIMIWCommandNotificationMessage 命令通知消息的 create 方法,仅支持接收该类型消息。如需要在客户端发送此消息,需要在 Flutter 层先定义此消息的包装类。详见知识库文档Flutter SDK 如何发送命令消息和命令通知消息?

自定义消息

类型:RCIMIWMessageType.custom

专有可访问属性:

属性名类型说明
identifierString自定义消息的标识符
policyRCIMIWCustomMessagePolicy自定义的消息存储策略
fieldsMa<String, String>自定义消息的键值对

构建自定义消息

RCIMIWCustomMessage? message = await engine.createCustomMessage(
type,
targetId,
channelId,
policy,
messageIdentifier,
fields,
);
参数名参数类型描述
typeRCIMIWConversationType会话类型
targetIdString会话 ID
channelIdString频道 ID,仅支持超级群使用,其他会话类型传 null 即可。
policyRCIMIWCustomMessagePolicy消息的存储策略
messageIdentifierString消息的标识符,需唯一
fieldsMa<String, String>消息的内容键值对

无效类型

当接收到无法识别的消息时,会变为无效类型的消息,此消息不可主动构建发送

类型:RCIMIWMessageType.unknown

专有可访问属性:

属性名类型描述
rawDataString消息数据
objectNameString消息的标识