浏览 SDKs · React Native
SDKsReact Native

消息概览

OpenIM React Native SDK 消息概览。

复制

OpenIM React Native SDK 使用 MessageItem 表示一条消息。创建消息仅生成待发送的 MessageItem;要将消息发送给单聊用户或群组,还需要调用发送 API。接收、查询以及删除、撤回、修改等状态变化则通过各自的 API 或事件处理。

消息列表使用 clientMsgID 识别、去重和更新单条消息。MessageItem 不包含 conversationID,消息所属会话应从当前会话、历史查询参数或事件上下文中获取。

消息处理流程

阶段相关能力说明
创建create*Message()创建待发送的 MessageItem
发送sendMessage()sendMessageNotOss()将消息发送到单聊或群聊。
接收新消息事件接收实时消息、离线消息和仅在线消息。
查询历史消息、按 ID 查找和搜索按会话读取或定位已保存的消息。
状态变化撤回、删除、修改和已读回执根据调用结果和对应事件更新消息列表。

MessageItem 类型

创建、发送、接收和查询消息时,得到的消息对象都是 MessageItem。常用公共字段如下:

字段类型说明
clientMsgIDstring客户端消息 ID,用于消息去重、更新和定位。
serverMsgIDstring服务端消息 ID。
sessionTypeSessionType会话类型,用于区分单聊和群聊。
sendIDstring发送者用户 ID。
recvIDstring单聊消息的接收方用户 ID。
groupIDstring群聊消息所属的群组 ID。
contentTypeMessageType消息内容类型,决定使用哪个内容字段渲染。
createTimenumber消息对象创建时间。
sendTimenumber消息发送时间。
seqnumber服务端消息序号。
senderPlatformIDPlatform发送消息的客户端平台。
statusMessageStatus消息发送状态。
isReadboolean已读状态。
senderNicknamestring发送者昵称。
senderFaceUrlstring发送者头像 URL。
offlinePushOfflinePush离线推送配置。
contentstringSDK 序列化的消息内容。渲染时应读取与 contentType 对应的内容字段。
exstring消息扩展字段。
localExstring仅当前设备使用的消息扩展字段。

消息内容保存在 MessageItem 中与 contentType 对应的字段内:

内容字段
文本、富文本和 MarkdowntextElemadvancedTextElemmarkdownTextElem
图片、音频、视频和文件pictureElemsoundElemvideoElemfileElem
@ 消息atTextElem
回复消息quoteElem
合并转发mergeElem
名片、位置和表情cardElemlocationElemfaceElem
自定义消息customElem
通知、输入状态和附加状态notificationElemtypingElemattachedInfoElem

内容字段均为可选字段。一条消息通常只使用与其 contentType 对应的内容字段;渲染前应先判断 contentType,再读取相应字段。

创建并发送消息

先调用对应的创建 API 得到 MessageItem,再调用发送 API。由 SDK 上传本地媒体文件时使用发送消息;媒体文件已经有远端 URL 时使用发送不经 OSS 的消息

按任务查看能力

任务页面
接收实时、离线和仅在线消息接收消息
接收自定义业务消息接收自定义业务消息
加载历史消息或消息上下文加载历史消息读取消息上下文
按 ID 查找或搜索消息按 ID 查找消息搜索消息
删除、撤回或修改消息批量删除消息撤回消息修改消息
管理仅当前设备使用的消息数据删除本地消息设置消息本地扩展
上报或查询群消息已读上报群消息已读查询群消息已读成员
上报或查询输入状态上报输入状态查询输入状态
识别音频文字检查语音识别能力识别音频文字

事件处理

消息相关事件的完整监听代码分别位于以下页面: