Skip to content
v1
文档/Android SDK/消息

发送消息

发送与转发

kotlin
suspend fun sendMessage(msg: BimMessage, target: BimMessageTarget)
suspend fun forwardMessage(msg: BimMessage, target: BimMessageTarget)
kotlin
val chat = BimImManager.getInstance().chatService
val target = BimMessageTarget.user("u10002")
val message = chat.createTextMessage("hello")

chat.sendMessage(message, target)

群组消息使用:

kotlin
chat.sendMessage(
    chat.createTextMessage("hello group"),
    BimMessageTarget.discussion("discussion-001"),
)

BimMessageTarget.user(userId)BimMessageTarget.discussion(discussionId)conversationId、名称和头像都是可选提示信息。SDK 会通过公开会话能力解析或补全实际会话。

如果业务已经持有 BimConversation,原有重载仍然可以使用:

kotlin
suspend fun sendMessage(msg: BimMessage, conversation: BimConversation)
suspend fun forwardMessage(msg: BimMessage, conversation: BimConversation)

仍需要 Conversation 的操作

以下两个操作当前尚未提供 BimMessageTarget 重载,仍需传入 BimConversation

kotlin
suspend fun sendMessageReadReceipt(msg: BimMessage, conversation: BimConversation)
suspend fun sendUndoMessage(msg: BimMessage, conversation: BimConversation)

也就是说,当前不能直接写成 sendMessageReadReceipt(message, target)sendUndoMessage(message, target)。这两个接口后续如果要降低接入成本,需要另行增加公开 API。

代码示例

kotlin
val chat = BimImManager.getInstance().chatService
val msg = chat.createTextMessage("hello")
chat.sendMessage(msg, BimMessageTarget.user("u10002"))

发送成功或失败通过 suspend 结果和 BimError 表达。兼容 callback 重载仍保留;媒体消息的准备、上传和发送阶段通过 BimMessageSendProgressListener 观察。发送失败记录可通过 getFailedMessageSendRecords 查询,SDK 不会因重连自动重发普通消息。