浏览 SDKs · HarmonyOS
平台
SDKsHarmonyOS商业版

发送消息

将待发送消息发送给单聊用户或群组。

复制

sendMessage() 接收由消息创建 API 返回的 IMMessage。单聊只填写 recvID,群聊只填写 groupID;另一个目标字段传空字符串。

参数说明

参数类型是否必填说明
messageIMMessage待发送消息对象。
recvIDstring条件必填单聊接收方;群聊传空字符串。
groupIDstring条件必填群聊目标群组;单聊传空字符串。
isOnlineOnlyboolean是否只向在线客户端投递;此类消息不进入本地历史。
import sdk, {
  EventOnSendMsgProgressData,
  OpenIMSDKEvent,
  SendMessageReq,
  SendMessageResp,
} from '@openimsdk/imsdk';

const request: SendMessageReq = {
  message: message,
  recvID: receiverUserID,
  groupID: '',
  isOnlineOnly: false,
};
const response: SendMessageResp = await sdk.sendMessage(request);
replacePendingMessage(response.message.clientMsgID, response.message);

const handleSendProgress = (data: EventOnSendMsgProgressData): void => {
  updateMessageProgress(data.clientMsgID, data.progress);
};
const unsubscribeSendProgress = sdk.on(OpenIMSDKEvent.EventOnSendMsgProgress, handleSendProgress);

export function removeSendProgressListener(): void {
  unsubscribeSendProgress();
}

发送本地媒体时,进度事件按 clientMsgID 更新,不要按列表下标关联。进度到达不表示发送成功;最终以 Promise 结果和消息状态为准。Promise 成功后使用返回消息替换待发送项;其他客户端收到消息仍是另一个阶段。销毁发送状态层时调用 unsubscribeSendProgress()