TUILiveKit 的主播开播能力基于 PusherView,为直播场景提供开箱即用的全功能界面,涵盖开播前预览、视频推流、直播互动与下播结算,可快速集成到您的 HarmonyOS 应用中。功能概览
开播前预览:支持摄像头预览、直播标题与封面设置、美颜与音效调试、倒计时开播。
视频直播开播:组件内部完成创建直播间与推流,直播中可查看直播时长、在线观众、网络与设备状态。
直播互动与管理:支持弹幕、礼物、观众连麦等互动,并提供在线用户列表与直播间管理能力。
主播开播前预览 | 主播开播 | 主播和观众连麦 |
![]() | ![]() | ![]() |
组件说明
PusherView 是 ArkUI @Component struct,统一从 'tuilivekit' 导入,是主播开播的唯一入口。组件内部按 开播前预览 → 直播中 → 下播结算 三个阶段切换界面,并自行完成摄像头预览、创建直播间、推流、连麦、弹幕礼物与下播清理。快速接入
步骤1:开通服务
步骤2:代码集成
注意:
创建 PusherView 之前,请确保已完成登录,否则开播会失败。
组件 HAR 自身不声明权限,宿主
entry/src/main/module.json5 需声明 ohos.permission.INTERNET、ohos.permission.GET_NETWORK_INFO、ohos.permission.CAMERA、ohos.permission.MICROPHONE;组件会在运行时通过 requestPermissionsFromUser 动态申请相机与麦克风权限。组件通过
applicationStateChange 监听前后台切换,无需在 module.json5 中额外声明后台模式。步骤3:接入 PusherView 开播
在您的主播开播页中创建 PusherView:
import { PusherView } from 'tuilivekit'@Entry@Componentstruct PusherPage {// 1. 传入直播间 IDliveID: string = ''onBack?: () => voidbuild() {// 2. 加载 PusherView,组件自带开播前预览、直播中与下播结算界面PusherView({liveID: this.liveID,// 3. 设置退出回调:关闭预览页或退出下播结算页时触发onExit: () => this.onBack?.(),})}}
说明:
liveID 需非空且 UTF-8 编码后不超过 48 字节;可由您的业务服务端生成,也可按自定义规则拼接(Demo 使用
live_${userID})。开播由组件在用户点击开始直播后自行调用
AtomicPusher.startPush 完成;下播时先进入结算页,用户点击退出后才回调 onExit。宿主处理原生返回键时,需通过
context.eventHub.emit('tuilivekit.pusher.hostBack', liveID) 把事件转发给组件,由组件决定关闭弹层或进入结算页;aboutToDisappear() 本身不会回调 onExit。组件会在退到后台时停止预览、回到前台后恢复,并保持直播期间屏幕常亮,宿主无需手动管理采集生命周期。
步骤4:跳转到主播开播页面
在您需要进入主播开播页时,可通过 NavPathStack 跳转并把 liveID 作为路由参数传入;路由名由您的宿主工程自行定义:
this.navigationStack.pushPath({ name: 'pusher', param: liveID })
在 Navigation 的
navDestination 构造器中按路由名创建承载 PusherView 的页面,并通过 NavDestination 的 onBackPressed 转发原生返回事件:import { common } from '@kit.AbilityKit'@Builderdestination(name: string, liveID: string) {NavDestination() {if (name === 'pusher') {PusherPage({ liveID: liveID, onBack: () => this.navigationStack.pop() })}}.onBackPressed(() => {if (name !== 'pusher') {return false}const context = getContext(this) as common.UIAbilityContextcontext.eventHub.emit('tuilivekit.pusher.hostBack', liveID)return true})}
组件 API 说明
PusherView
PusherView 是 ArkUI 组件,是主播开播页的唯一对外组件。属性 | 说明 |
liveID: string | 直播间 ID,非空且 UTF-8 编码后不超过 48 字节;组件据此创建 LiveSeatStore 与连麦 Store。 |
onExit?: () => void | 退出回调。用户在开播前预览页点击关闭,或在下播结算页点击退出时触发;组件会先完成会话清理。 |
audioEffect / safeBottom | 框架注入参数( @Provide / @StorageProp),由组件内部管理,宿主无需手动传值。 |
开播流程与状态
组件内部按三个阶段切换界面,宿主无需也不应自行调用开播 / 下播方法:
阶段 | 说明 |
开播前预览 | 摄像头预览、标题与封面设置、美颜与音效调试;点击开播进入倒计时。 |
直播中 | 组件调用 AtomicPusher.startPush 开始推流,并展示弹幕、礼物、连麦、在线观众等互动 UI。 |
下播结算 | 下播后展示本场直播统计,用户点击退出时触发 onExit。 |
下一步
恭喜您,现在您已经成功集成了主播开播。接下来,您可以实现观众观看、直播列表、礼物系统等功能,可参考下表:
常见问题
开播后无画面?
请检查宿主
entry/src/main/module.json5 中 ohos.permission.CAMERA、ohos.permission.MICROPHONE 的 requestPermissions 声明,以及用户是否已授权;组件会在运行时通过 requestPermissionsFromUser 动态申请。点击开播按钮提示「未登录」?
需要自己调用创建直播间或开播接口吗?
不需要。宿主只需传入
liveID,组件会在用户点击开播后自行调用 AtomicPusher.startPush 并接管直播间;请勿重复创建 LiveInfo 或调用 startLive / createRoom。

