浏览 SDKs · HarmonyOS
平台
SDKsHarmonyOS商业版

消息概览

了解消息的创建、发送、接收、查询和状态同步边界。

复制

HarmonyOS SDK 使用 IMMessage 表示一条消息。发送分为两个阶段:先根据内容创建待发送对象,再将该对象发送给单聊用户或群组。创建方法不会发送消息;发送方法的 Promise 成功也不等于其他客户端已经收到消息。

消息列表使用 conversationIDclientMsgID 定位消息。conversationID 来自当前会话、查询条件或事件上下文;clientMsgID 是消息在客户端侧去重和合并状态的稳定标识。

消息处理流程

阶段主要操作说明
创建create*Message()返回 IMMessage,只在本地创建对象。
发送sendMessage()单聊填写 recvID,群聊填写 groupID
接收新消息事件conversationID:clientMsgID 合并,重复事件不插入第二条。
查询历史、搜索或按 ID 定位返回调用时可读取的数据,不触发新消息事件。
更新删除、撤回、修改、置顶或已读分别处理 Promise、相关事件和必要的重新查询。

本地图片、音频、视频和文件消息在发送时由 SDK 上传;已由业务上传的资源可以使用 URL 型创建接口。两类消息最后都交给 sendMessage()

常用字段

字段类型说明
clientMsgIDserverMsgIDstring客户端与服务端消息 ID。
sessionTypeSessionType单聊或群聊等会话类型。
sendIDrecvIDgroupIDstring发送者和聊天目标。
contentTypeContentType决定应读取哪个内容字段。
createTimesendTimeseqnumber创建时间、发送时间和服务端序号。
statusMsgStatus消息发送状态。
isReadboolean消息是否已读。
exstring随消息同步的扩展字符串。
localExstring只保存在当前设备的扩展字符串。

正文位于与 contentType 对应的字段中,例如 textElempictureElemsoundElemvideoElemfileElematTextElemquoteElemmergeElemcustomElem。不要根据展示文本、数组位置或分页长度判断消息身份。

创建对象和纯查询不会触发共享消息事件。会改变状态的操作必须区分 Promise 成功、事件到达和重新查询校准三个阶段。