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

前提条件
发送弹幕消息
RoomEngine SDK 支持发送两种类型的弹幕消息:文本消息可以直接用于界面展示;自定义消息支持您自由定制消息内容,携带更多业务相关的信息。
发送文本消息
您可以调用
TUIRoomEngine
的 sendTextMessage
发送文本消息。import RTCRoomEnginelet 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() {@Overridepublic void onSuccess(TUIRoomDefine.RoomTextMessage message) {// 发送成功}@Overridepublic void onError(TUICommonDefine.Error error, String message) {// 发送失败}});
发送自定义消息
您可以调用
TUIRoomEngine
的 sendCustomMessage
发送自定义消息。import RTCRoomEnginelet 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() {@Overridepublic void onSuccess(TUIRoomDefine.RoomCustomMessage message) {// 发送成功}@Overridepublic void onError(TUICommonDefine.Error error, String message) {// 发送失败}});
接收弹幕消息
成功发送弹幕消息之后,直播间内所有用户(包括消息发送者)都会收到消息接收通知:
onReceiveTextMessage:收到文本消息。
onReceiveCustomMessage:收到自定义消息。
您可以在消息接收通知的响应函数里,把消息添加到界面的消息列表里。
import RTCRoomEngineclass 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 字段中,接收方通过解析该字段即可获取所需信息。
禁止用户发言
当弹幕消息严重影响观看体验时:例如有用户发送不良内容,您可能需要禁止该用户继续发言;或在直播特定时段,您可能需要暂时关闭弹幕功能。
禁止某个用户发言
您可以通过调用
TUIRoomEngine
的 disableSendingMessageByAdmin
接口来禁止指定用户发言。RoomEngine SDK 会对被禁言用户的状态进行持久化存储。即使用户退出直播间,禁言状态仍会保留。当该用户再次进入直播间时,依然无法发送弹幕消息。请注意,该接口仅限主播调用,普通观众无权限使用。import RTCRoomEnginelet userId = "xxx"let disable = trueTUIRoomEngine.sharedInstance().disableSendingMessageByAdmin(userId: userId, isDisable: disable) {// 禁用成功} onError: { code, message in// 禁用失败}
String userId = "xxx";boolean isDisable = true;TUIRoomEngine.sharedInstance().disableSendingMessageByAdmin(userId, isDisable, new TUIRoomDefine.ActionCallback() {@Overridepublic void onSuccess() {// 禁用成功}@Overridepublic void onError(TUICommonDefine.Error error, String message) {// 禁用失败}});
当指定用户被禁言后,该用户会收到
onSendMessageForUserDisableChanged
回调。您可以在该回调的响应函数中添加界面提示,例如弹窗(Toast)或警告(Alert)提示。import RTCRoomEngineclass 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);
禁止所有用户发言
要禁止所有用户发言,可以调用
TUIRoomEngine
的 disableSendingMessageForAllUser
接口。请注意:此接口仅限主播使用,普通观众无调用权限。import RTCRoomEnginelet disable = trueTUIRoomEngine.sharedInstance().disableSendingMessageForAllUser(isDisable: disable) {// 成功} onError: { code, message in// 失败}
boolean isDisable = true;TUIRoomEngine.sharedInstance().disableSendingMessageForAllUser(isDisable, new TUIRoomDefine.ActionCallback() {@Overridepublic void onSuccess() {// 禁用成功}@Overridepublic void onError(TUICommonDefine.Error error, String message) {// 禁用失败}});
当禁止所有用户发言后,直播间内所有用户都会收到
onSendMessageForAllUserDisableChanged
回调。您可以在该回调的响应函数中添加界面提示,例如弹窗(Toast)或警告(Alert)提示。import RTCRoomEngineclass 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 会在观众加入直播间后自动拉取这些弹幕消息,并通过回调通知给您的应用。
