tencent cloud

实时音视频

观众观看(iOS)

Download
聚焦模式
字号
最后更新时间: 2026-07-14 15:35:44
TUILiveKit 的观众观看页为用户提供了丰富且便捷的直播观看与互动功能,能快速集成到您的应用中,满足观众多样化的需求。

功能概览

直播观看:清晰、流畅观看主播实时直播画面。
互动连麦:申请连麦,与主播进行音视频互动。
直播信息:查看直播间标题、简介,及在线观众列表等信息。
直播互动:送礼物(有动画特效,主播接收提示)、点赞(有动画及实时统计)、发弹幕互动。
直播观看
互动连麦
直播信息
直播互动















快速接入

步骤 1. 开通服务

参考 开通服务 文档领取 TUILiveKit 体验版或者开通付费版。

步骤 2. 代码集成

参考 准备工作 接入 TUILiveKit。

步骤 3. 添加观众拉流页面

在您的观众视图控制器中 YourAudienceViewController 初始化添加 AudienceView观众拉流视图:
Swift
import UIKit
import SnapKit
import TUILiveKit

// YourAudienceViewController 代表您观众观看页的视图控制器
class YourAudienceViewController: UIViewController {

// 1. 声明 audienceView 作为成员变量
private let audienceView: AudienceView

// 2. 新增便利构造函数:
// - roomId: 直播房间id
public init(roomId: String) {
// 3. 初始化 AudienceView 组件
self.audienceView = AudienceView(roomId: roomId)
super.init(nibName: nil, bundle: nil)
}
@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
public override func viewDidLoad() {
super.viewDidLoad()
// 4. 将 audienceView 添加到视图上
view.addSubview(audienceView)
audienceView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
}

步骤 4. 事件回调与数据源定制

除了 UI 样式定制外,AudienceView 还提供了以下三个可选扩展点,帮助您接入自定义的直播列表数据源、监听观众页生命周期事件、以及处理屏幕旋转:
扩展点
类型
说明
delegate
AudienceViewDelegate
监听观众页内的核心事件,包括直播视图的创建/展示/隐藏、点击悬浮窗、直播结束等回调。
dataSource
AudienceViewDataSource
自定义直播列表的拉取逻辑。若不设置,AudienceView 默认从 TUILiveKit 内置的直播列表拉取数据;设置后,观众滑动切换直播间时将改为调用您自己的直播间列表接口。
rotateScreenDelegate
RotateScreenDelegate
监听观众页横竖屏切换事件,用于同步您业务侧的 UI 布局。
import UIKit
import SnapKit
import TUILiveKit
import AtomicXCore

class YourAudienceViewController: UIViewController {

private let audienceView: AudienceView

public init(roomId: String) {
self.audienceView = AudienceView(roomId: roomId)
super.init(nibName: nil, bundle: nil)
// 设置回调与数据源
audienceView.delegate = self
audienceView.dataSource = self
audienceView.rotateScreenDelegate = self
}

@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

public override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(audienceView)
audienceView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
}

// MARK: - AudienceViewDelegate
extension YourAudienceViewController: AudienceViewDelegate {
// 创建了某个直播间对应的播放视图 liveView 时回调,可在此处叠加自定义 UI
func audienceView(_ audienceView: AudienceView, onCreateLiveView liveView: AudienceLiveView, for liveInfo: LiveInfo) {
}

// 观众滑动切换到某个直播间,其播放视图 liveView 已展示到屏幕上
func audienceView(_ audienceView: AudienceView, liveViewDidAppear liveView: AudienceLiveView, for liveInfo: LiveInfo) {
}

// 观众已滑离某个直播间,其播放视图 liveView 已从屏幕上移除
func audienceView(_ audienceView: AudienceView, liveViewDidDisappear liveView: AudienceLiveView, for liveInfo: LiveInfo) {
}

// 用户点击了悬浮窗
func onClickFloatWindow() {
FloatWindow.shared.showFloatWindow(controller: self, provider: audienceView)
}

// 直播已结束(主播下播/房间被解散等)
func onLiveEnded(roomId: String, ownerName: String, ownerAvatarUrl: String) {
// 展示直播结束的结算页(含主播头像/昵称、"直播已结束"提示等)
let endView = AudienceEndStatisticsView(roomId: roomId, avatarUrl: ownerAvatarUrl, userName: ownerName)
endView.delegate = self
view.addSubview(endView)
endView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
}

// MARK: - RotateScreenDelegate
extension YourAudienceViewController: RotateScreenDelegate {
// isPortrait: true 表示当前为竖屏,false 表示当前为横屏
func rotateScreen(isPortrait: Bool) {
}
}

步骤 5. 导航路由到观众拉流页面

通常在 直播列表 或者点击主播开播推送通知时,您需要导航跳转到观众观看页,可参考如下代码示例:
Swift
// 1. 实例化您的观众观看视图控制器
let audienceVC = YourAudienceViewController(roomId: "您的直播房间 id")
audienceVC.modalPresentationStyle = .fullScreen
// 2. 跳转到您的观众观看视图控制器
present(audienceVC, animated: false)

步骤 6. 自定义观众观看页界面

参考 观众核心页面 进行观众界面定制,在 AudienceView 中修改 UI 样式,添加您的业务组件。
参考 调整视频直播挂件 进行视频位挂件定制,在 AudienceView 中修改视频位上的名称、头像挂件等 UI。

文案定制

TUILiveKit 使用更为方便的 Apple Strings Catalog 工具来管理 UI 所需的文案显示,您可以很直观的通过 Xcode 视图化管理工具修改需要调整的文案:
说明:
Apple Strings Catalog (.xcstrings) 是在 Xcode 15 中引入的本地化格式。它增强了开发者管理本地化字符串的方式,支持处理复数、设备特定变体等的结构化格式。这种格式正成为管理 iOS 和 macOS 应用程序本地化的推荐方法。


图标定制

TUILiveKit 使用 TUILiveKit.xcassets 管理 UI 所需的图片资源,您可以借助 Xcode 图形化工具快速修改自定义界面所需的图标。


下一步

恭喜您,现在您已经成功集成了观众观看功能。接下来,您可以实现主播开播直播列表、礼物系统等功能,可参考下表:
功能
描述
集成指引
主播开播
主播开播全流程功能,包括开播前的准备和开播后的各种互动
直播列表
展示直播列表界面和功能,包含直播列表,房间信息展示功能
礼物系统
实现自定义礼物素材配置、计费系统对接、PK 场景互动等功能

常见问题

观众选择视频连麦后,视频画面显示黑屏?

请前往手机设置 > App > 相机,检查摄像头权限是否开启,可参考下图:


观众发送弹幕时,直播间内其他观众看不到弹幕内容?

原因 1: 先检查网络连接,确保观众设备网络正常。
原因 2: 该观众被主播禁言,无法发送弹幕。
原因 3:观众的弹幕内容涉及 关键词屏蔽,请确认观众发送的弹幕内容是否符合直播间规则。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈