浏览 SDKs · uni-app / uni-app x
平台
SDKsuni-app / uni-app x

发送消息

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

复制

sendMessage() 发送由消息创建 API 返回的 OpenIMMessageItem。单聊只填写 recvID,群聊只填写 groupID

参数说明

参数类型是否必填说明
messageOpenIMMessageItem非空的待发送消息对象。
recvIDstring条件必填单聊时填写接收方用户 ID;群聊时传空字符串。
groupIDstring条件必填群聊时填写目标群组 ID;单聊时传空字符串。
offlinePushInfoOpenIMOfflinePush离线推送标题、描述和平台配置。
isOnlineOnlyboolean是否仅向在线客户端投递;仅在线消息不进入本地历史。
import { sendMessage } from '@/uni_modules/unix-openim-sdk'

const sentMessage = await sendMessage({
  message: message,
  recvID: receiverUserID,
  groupID: '',
  offlinePushInfo: null,
  isOnlineOnly: false,
})

if (sentMessage.clientMsgID != null) {
  replacePendingMessage(sentMessage.clientMsgID, sentMessage)
}

Promise 成功后返回发送结果中的 OpenIMMessageItem。发送端应按 clientMsgID 替换本地待发送项;其他客户端收到新消息事件是另一个阶段,不能由本次 Promise 成功直接推断。

监听上传进度

发送本地图片、音频、视频或文件时,可以通过 onSendMessageProgress() 更新对应消息的上传进度。事件返回 clientMsgIDprogress,不要按列表下标关联进度。

import {
  OpenIMSendMessageProgressEvent,
  off,
  onSendMessageProgress,
} from '@/uni_modules/unix-openim-sdk'

const handleSendProgress = (
  progress: OpenIMSendMessageProgressEvent | null,
) => {
  if (progress == null) return
  updateMessageProgress(progress.clientMsgID, progress.progress)
}

const progressSubscription = onSendMessageProgress(handleSendProgress)

function removeSendProgressListener() {
  off(progressSubscription)
}

组件卸载、退出登录或切换账号时调用 removeSendProgressListener()。进度到达不代表消息发送成功,最终仍以 sendMessage() 的 Promise 结果和消息状态为准。