发送弹幕消息

最近更新时间:2025-09-29 21:31:02

我的收藏
RoomEngine SDK 提供弹幕消息收发功能,支持在直播视频画面上叠加消息输入框和消息列表,实现直播间弹幕互动,丰富直播玩法并活跃氛围。当弹幕影响观看体验时,您可通过 SDK 提供的禁言功能,选择禁止特定用户或全体用户发送弹幕消息。


前提条件

在发送弹幕消息之前,您需要先加入一个直播间,您可以通过 开启一场直播 或者 观看一场直播 两种方式加入直播间。

发送弹幕消息

RoomEngine SDK 支持发送两种类型的弹幕消息:文本消息可以直接用于界面展示;自定义消息支持您自由定制消息内容,携带更多业务相关的信息。

发送文本消息

您可以调用 TUIRoomEnginesendTextMessage 发送文本消息。
Swift
Java
import RTCRoomEngine

let textMessage = TUIRoomTextMessage()
textMessage.textContent = "xxx"
TUIRoomEngine.sharedInstance().sendTextMessage(textMessage: textMessage) { message in
// 发送成功
} onError: { code, message in
// 发送失败
}
TUIRoomDefine.RoomTextMessage textMessage = new TUIRoomDefine.RoomTextMessage();
textMessage.textContent = "xxx";
TUIRoomEngine.sharedInstance().sendTextMessage(textMessage, new TUIRoomDefine.SendTextMessageCallback() {
@Override
public void onSuccess(TUIRoomDefine.RoomTextMessage message) {
// 发送成功
}
@Override
public void onError(TUICommonDefine.Error error, String message) {
// 发送失败
}
});

发送自定义消息

您可以调用 TUIRoomEnginesendCustomMessage 发送自定义消息。
Swift
Java
import RTCRoomEngine

let customMessage = TUIRoomCustomMessage()
customMessage.businessId = "xxx"
customMessage.data = "xxx"
TUIRoomEngine.sharedInstance().sendCustomMessage(customMessage: customMessage) { message in
// 发送成功
} onError: { code, message in
// 发送失败
}
TUIRoomDefine.RoomCustomMessage customMessage = new TUIRoomDefine.RoomCustomMessage();
customMessage.businessId = "xxx";
customMessage.data = "xxx";
TUIRoomEngine.sharedInstance().sendCustomMessage(customMessage, new TUIRoomDefine.SendCustomMessageCallback() {
@Override
public void onSuccess(TUIRoomDefine.RoomCustomMessage message) {
// 发送成功
}
@Override
public void onError(TUICommonDefine.Error error, String message) {
// 发送失败
}
});

接收弹幕消息

成功发送弹幕消息之后,直播间内所有用户(包括消息发送者)都会收到消息接收通知:
onReceiveTextMessage:收到文本消息。
onReceiveCustomMessage:收到自定义消息。
您可以在消息接收通知的响应函数里,把消息添加到界面的消息列表里。
Swift
Java
import RTCRoomEngine

class RoomEngineObserver: NSObject, TUIRoomObserver {
func onReceiveTextMessage(textMessage: TUIRoomTextMessage) {
// 接收到文本消息
let senderInfo = textMessage.sender // 消息发送者信息
let textContent = textMessage.textContent // 文本消息内容
}
func onReceiveCustomMessage(customMessage: TUIRoomCustomMessage) {
// 接收到自定义消息
let senderInfo = customMessage.sender // 消息发送者信息
let data = customMessage.data // 自定义消息内容
}
}

let observer = RoomEngineObserver()
TUIRoomEngine.sharedInstance().addObserver(observer)
public class RoomEngineObserver extends TUIRoomObserver {
public void onReceiveTextMessage(TUIRoomDefine.RoomTextMessage textMessage) {
// 接收到文本消息
TUIRoomDefine.UserInfo senderInfo = textMessage.sender; // 消息发送者信息
String textConcent = textMessage.textContent; // 文本消息内容
}

public void onReceiveCustomMessage(TUIRoomDefine.RoomCustomMessage customMessage) {
// 接收到文本消息
TUIRoomDefine.UserInfo senderInfo = customMessage.sender; // 消息发送者信息
String data = customMessage.data; // 自定义消息内容
}
}

RoomEngineObserver observer = new RoomEngineObserver();
TUIRoomEngine.sharedInstance().addObserver(observer);
注意:
在 RoomEngine SDK 的消息接收回调函数中,senderInfo 仅包含昵称和头像信息。如需获取发送者的更多详细信息(例如直播间等级、身份、标签等),强烈建议您通过发送自定义消息实现。您可以将这些信息填充到 TUIRoomCustomMessage 的 data 字段中,接收方通过解析该字段即可获取所需信息。

禁止用户发言

当弹幕消息严重影响观看体验时:例如有用户发送不良内容,您可能需要禁止该用户继续发言;或在直播特定时段,您可能需要暂时关闭弹幕功能。

禁止某个用户发言

您可以通过调用 TUIRoomEnginedisableSendingMessageByAdmin 接口来禁止指定用户发言。RoomEngine SDK 会对被禁言用户的状态进行持久化存储。即使用户退出直播间,禁言状态仍会保留。当该用户再次进入直播间时,依然无法发送弹幕消息。请注意,该接口仅限主播调用,普通观众无权限使用。
Swift
Java
import RTCRoomEngine

let userId = "xxx"
let disable = true
TUIRoomEngine.sharedInstance().disableSendingMessageByAdmin(userId: userId, isDisable: disable) {
// 禁用成功
} onError: { code, message in
// 禁用失败
}
String userId = "xxx";
boolean isDisable = true;
TUIRoomEngine.sharedInstance().disableSendingMessageByAdmin(userId, isDisable, new TUIRoomDefine.ActionCallback() {
@Override
public void onSuccess() {
// 禁用成功
}
@Override
public void onError(TUICommonDefine.Error error, String message) {
// 禁用失败
}
});
当指定用户被禁言后,该用户会收到 onSendMessageForUserDisableChanged 回调。您可以在该回调的响应函数中添加界面提示,例如弹窗(Toast)或警告(Alert)提示。
Swift
Java
import RTCRoomEngine

class RoomEngineObserver: NSObject, TUIRoomObserver {
func OnSendMessageForUserDisableChanged(roomId: String, userId: String, isDisable muted: Bool) {
// 被禁言的用户收到该通知
}
}

let observer = RoomEngineObserver()
TUIRoomEngine.sharedInstance().addObserver(observer)
public class RoomEngineObserver extends TUIRoomObserver {
public void onSendMessageForUserDisableChanged(String roomId, String userId, boolean isDisable) {
// 被禁言的用户收到该通知
}
}

RoomEngineObserver observer = new RoomEngineObserver();
TUIRoomEngine.sharedInstance().addObserver(observer);

禁止所有用户发言

要禁止所有用户发言,可以调用 TUIRoomEnginedisableSendingMessageForAllUser 接口。请注意:此接口仅限主播使用,普通观众无调用权限。
Swift
Java
import RTCRoomEngine

let disable = true
TUIRoomEngine.sharedInstance().disableSendingMessageForAllUser(isDisable: disable) {
// 成功
} onError: { code, message in
// 失败
}
boolean isDisable = true;
TUIRoomEngine.sharedInstance().disableSendingMessageForAllUser(isDisable, new TUIRoomDefine.ActionCallback() {
@Override
public void onSuccess() {
// 禁用成功
}
@Override
public void onError(TUICommonDefine.Error error, String message) {
// 禁用失败
}
});
当禁止所有用户发言后,直播间内所有用户都会收到 onSendMessageForAllUserDisableChanged 回调。您可以在该回调的响应函数中添加界面提示,例如弹窗(Toast)或警告(Alert)提示。
Swift
Java
import RTCRoomEngine

class RoomEngineObserver: NSObject, TUIRoomObserver {
func onSendMessageForAllUserDisableChanged(roomId: String, isDisable: Bool) {
// 直播间内所有用户均可收到该通知
}
}

let observer = RoomEngineObserver()
TUIRoomEngine.sharedInstance().addObserver(observer)
public class RoomEngineObserver extends TUIRoomObserver {
public void onSendMessageForAllUserDisableChanged(String roomId, boolean isDisable) {
// 直播间内所有用户均可收到该通知
}
}

RoomEngineObserver observer = new RoomEngineObserver();
TUIRoomEngine.sharedInstance().addObserver(observer);

怎么获取加入直播间之前的弹幕消息?

默认情况下,只有用户成功加入直播间后才能接收实时弹幕消息。若您希望获取用户加入直播间前产生的历史弹幕消息,并将这些消息展示在直播间消息列表中用于暖场互动,提升观众参与感,请按照以下详细指引逐步操作。
登录 即时通讯 IM 控制台 ,按照下图指引的位置,左侧导航栏单击消息服务 Chat > 功能配置 > 群组配置 > 群功能配置 > 直播群新成员查看入群前消息量配置,修改新成员可查看最近消息数,RoomEngine SDK 允许新加入的成员查看加入直播间前最多 50 条弹幕消息。
按照 接收弹幕消息 中的步骤,即可获取用户加入直播间前的弹幕消息。RoomEngine SDK 会在观众加入直播间后自动拉取这些弹幕消息,并通过回调通知给您的应用。