• UIKit
  • SDK
  • Server APIs
Live/
UIKit/
Andorid/
Video Live Features/
UIKit
  • 概述
    • 产品介绍
    • 开通服务
    • 价格中心
      • 免费时长
      • 实时互动直播 Live 包月套餐
      • 订阅套餐时长计费说明
  • 快速接入
    • 跑通 Demo
    • 视频直播快速集成
    • 语音聊天室快速集成
  • Video Live Features
    • Start Broadcasting and Watch
    • 观众连线
    • 主播连线
    • Anchor Battle
    • Float Window
  • Voice Room Features
    • Start Broadcasting and Listen
    • Seat Management
  • Universal Features
    • 关注主播
    • 互动弹幕
    • 互动礼物
    • 直播列表
  • Customization
    • 自定义UI
    • Voice Room
  • 客户端 API
    • Video Live
      • 视频直播接口文档
      • LiveCoreView
    • Voice Room
      • 视频直播接口文档
      • SeatGridView
  • FAQS
    • 常见问题
    • Error Codes
    • 发布说明
  • Generating UserSig

观众连线

功能介绍

观众连麦功能‌是一种实时互动交流方式,通过观众连麦功能,主播可以与多达9个观众进行实时互动,无论是解答问题、分享经验还是进行娱乐互动,都能极大地提升观众的参与感满意度。这种直接的互动和交流为商业化运营提供了更加便捷和高效的渠道,同时也为观众提供了更加个性化和定制化的购物体验。观众连麦功能适用于多个场景,包括电商直播、娱乐直播、在线教学等。
单人连麦
多人连麦







接入流程

观众连麦流程

TUILiveKit 观众连麦功能 主要是通过 LiveCoreView 实现,您可以调用如下 API 函数,实现观众连麦功能。以观众 B 申请和主播 A 连麦为例实现如下。
说明:
以下主动调用的方法都是 LiveCoreView 提供的方法。
所有的回调方法是指 LiveCoreView 设置的 ConnectionObserver 对象中的回调方法。

观众发送连麦请求

观众 B 给主播 A 发送连麦请求,主播 A 会在 onUserConnectionRequest 回调中收到观众 B 的连麦请求。
Kotlin
Java
val userId = "anchorUserId";
val timeout = 60;
liveCoreView.requestIntraRoomConnection(userId, 10, null)
String userId = "anchorUserId";
int timeout = 60; liveCoreView.requestIntraRoomConnection(userId, timeout, true, null);

主播端收到连麦请求

主播 A 会在 onUserConnectionRequest 回调方法中收到观众 B 的连麦请求。
Kotlin
Java
override fun onUserConnectionRequest(inviterUser: UserInfo) {
Log.i(TAG, "收到观众连线请求:${inviterUser.userId}")
}
@Override public void onUserConnectionRequest(LiveStreamDefine.LiveUser inviterUser) { Log.i(TAG, "收到观众连线请求:" + inviterUser.userId); }

主播响应连麦请求

主播 A 收到观众的连麦请求后,可以调用 respondIntraRoomConnection 响应观众 B 是否同意连麦。
Kotlin
Java
// 主播同意连麦
liveCoreView.respondIntraRoomConnection(audienceBUserId, true, null)
// 主播同意连麦
liveCoreView.respondIntraRoomConnection(userId, true, null);

// 主播拒绝连麦
liveCoreView.respondIntraRoomConnection(userId, false, null);

观众收到主播响应回调

主播 A 同意观众 B 连麦请求后, 观众 B 会通过 onUserConnectionAccepted 回调收到主播 A 同意连麦的回调。
Kotlin
Java
override fun onUserConnectionAccepted(inviterUser: UserInfo) {
Log.i(TAG, "观众同意连线:${inviterUser.userId}")
}
@Override public void onUserConnectionAccepted(LiveStreamDefine.LiveUser liveUser) { Log.i(TAG, "观众同意连线:" + liveUser.userId); } @Override public void onUserConnectionRejected(LiveStreamDefine.LiveUser liveUser) { Log.i(TAG, "观众拒绝连线:" + liveUser.userId); }

连麦用户列表发生变化的回调

主播 A 同意观众 B 连麦请求后, LiveCoreView 会同时给主播 A 和观众 B 发送连麦用户发生变化。
Kotlin
Java
override fun onConnectedUsersUpdated(inviterUser: UserInfo) {
Log.i(TAG, "连麦用户列表发生变化")
}
@Override public void onConnectedUsersUpdated(List<UserInfo> userList, List<UserInfo> joinList, List<UserInfo> leaveList) { Log.i(TAG, "连麦用户列表发生变化"); }

断开连麦流程

观众连麦成功后,主播挂断观众的连麦

观众 B 和主播 A 连麦成功后,主播 A 断开和观众 B 的连麦。
Kotlin
Java
val userId = "audienceBUserId"
liveCoreView.disconnectUser(userId, null)
String userId = "audienceUserId";
liveCoreView.disconnectUser(userId, null);

观众收到主播断开连麦的回调

主播 A 断开和观众 B 的连麦请求后,观众 B 会收到 onUserConnectionTerminated 回调。
Kotlin
Java
override fun onUserConnectionTerminated(inviterUser: UserInfo) {
Log.i(TAG, "主播关闭连线")
}
@Override public void onUserConnectionTerminated() { Log.i(TAG, "主播关闭连线"); }

观众连麦成功后,观众结束连麦

观众 B 和主播 A 连麦成功后,观众 B 主动断开连麦可以调用 terminateIntraRoomConnection。
Kotlin
Java
liveCoreView.terminateIntraRoomConnection()
liveCoreView.terminateIntraRoomConnection();

主播收到观众断开连线的回调

当观众 B 主动断开连麦时,主播会收到 onUserConnectionExited 回调。
Kotlin
Java
override fun onUserConnectionExited(inviterUser: LiveStreamDefine.LiveUser) {
Log.i(TAG, "观众退出连线")
}
@Override public void onUserConnectionExited(UserInfo liveUser) { Log.i(TAG, "观众退出连线:${liveUser.userId}"); }
说明:
连线功能是基于 LiveCoreView 实现,若您需要扩展连线功能,可参见 LiveCoreView 文档。

观众连麦时序图




向社区提问!
开始技术讨论并获得即时专家支持!