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。常用公共字段如下:
| 字段 | 类型 | 说明 |
|---|---|---|
clientMsgID | string | 客户端消息 ID,用于消息去重、更新和定位。 |
serverMsgID | string | 服务端消息 ID。 |
sessionType | SessionType | 会话类型,用于区分单聊和群聊。 |
sendID | string | 发送者用户 ID。 |
recvID | string | 单聊消息的接收方用户 ID。 |
groupID | string | 群聊消息所属的群组 ID。 |
contentType | MessageType | 消息内容类型,决定使用哪个内容字段渲染。 |
createTime | number | 消息对象创建时间。 |
sendTime | number | 消息发送时间。 |
seq | number | 服务端消息序号。 |
senderPlatformID | Platform | 发送消息的客户端平台。 |
status | MessageStatus | 消息发送状态。 |
isRead | boolean | 已读状态。 |
senderNickname | string | 发送者昵称。 |
senderFaceUrl | string | 发送者头像 URL。 |
offlinePush | OfflinePush | 离线推送配置。 |
content | string | SDK 序列化的消息内容。渲染时应读取与 contentType 对应的内容字段。 |
ex | string | 消息扩展字段。 |
localEx | string | 仅当前设备使用的消息扩展字段。 |
消息内容保存在 MessageItem 中与 contentType 对应的字段内:
| 内容 | 字段 |
|---|---|
| 文本、富文本和 Markdown | textElem、advancedTextElem、markdownTextElem |
| 图片、音频、视频和文件 | pictureElem、soundElem、videoElem、fileElem |
| @ 消息 | atTextElem |
| 回复消息 | quoteElem |
| 合并转发 | mergeElem |
| 名片、位置和表情 | cardElem、locationElem、faceElem |
| 自定义消息 | customElem |
| 通知、输入状态和附加状态 | notificationElem、typingElem、attachedInfoElem |
内容字段均为可选字段。一条消息通常只使用与其 contentType 对应的内容字段;渲染前应先判断 contentType,再读取相应字段。
创建并发送消息
先调用对应的创建 API 得到 MessageItem,再调用发送 API。由 SDK 上传本地媒体文件时使用发送消息;媒体文件已经有远端 URL 时使用发送不经 OSS 的消息。
| 内容 | 页面 |
|---|---|
| 文本和富文本 | 创建文本消息、创建富文本消息 |
| @ 消息 | 创建 @ 消息 |
| 图片、音频、视频和文件 | 创建图片消息、创建音频消息、创建视频消息、创建文件消息 |
| 名片、位置和表情 | 创建名片消息、创建位置消息、创建表情消息 |
| 回复、转发和合并转发 | 创建回复消息、创建转发消息、创建合并转发消息 |
| 自定义消息 | 创建自定义消息 |
按任务查看能力
| 任务 | 页面 |
|---|---|
| 接收实时、离线和仅在线消息 | 接收消息 |
| 接收自定义业务消息 | 接收自定义业务消息 |
| 加载历史消息或消息上下文 | 加载历史消息、读取消息上下文 |
| 按 ID 查找或搜索消息 | 按 ID 查找消息、搜索消息 |
| 删除、撤回或修改消息 | 批量删除消息、撤回消息、修改消息 |
| 管理仅当前设备使用的消息数据 | 删除本地消息、设置消息本地扩展 |
| 上报或查询群消息已读 | 上报群消息已读、查询群消息已读成员 |
| 上报或查询输入状态 | 上报输入状态、查询输入状态 |
| 识别音频文字 | 检查语音识别能力、识别音频文字 |
事件处理
消息相关事件的完整监听代码分别位于以下页面:
这个页面有帮助吗?