功能介绍
悬浮窗功能允许主播和观众在不退出直播间的情况下,进入到小窗口模式,小窗口悬浮在屏幕上,您可以自由拖拽到合适的位置,悬浮窗内可以显示直播画面。在悬浮窗模式下,App 可以切换到别的场景或者退后台,点击悬浮窗还可以恢复到正常全屏直播界面。
使用说明
原理简介
悬浮窗的原理是,在 rootWindow 上添加视频直播的视图作为悬浮窗的内容。
快速接入
悬浮窗功能核心代码:
// 文件位置:iOS/TUILiveKit/Sources/Component/FloatWindow
FloatWindow // 悬浮窗核心功能的实现目录
├── FloatWindow.swift // 悬浮窗功能对外接口
└── FloatView.swift // 悬浮窗View
悬浮窗数据源:
展示悬浮窗的 ViewController 需要实现如下数据源,以便悬浮窗可以拿到正确的视图数据。
protocol FloatWindowDataSource: {
func getRoomId() -> String
func getCoreView() -> LiveCoreView()
func relayoutCoreView()
}
使用场景及示例:
展示悬浮窗:
class ExampleViewController: UIViewController {
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
FloatWindow.shared.showFloatWindow(controller: self)
}
}
观众点击进入房间列表的某直播间:
if FloatWindow.shared.isShowingFloatWindow() {
if FloatWindow.shared.getCurrentRoomId() == liveInfo.roomInfo.roomId {
FloatWindow.shared.resumeLive(atViewController: self.navigationController ?? self)
return
} else {
FloatWindow.shared.releaseFloatWindow()
}
}
主播开播:
主播暂不支持悬浮窗功能,因此在开播前需要关闭已存在的悬浮窗。
if FloatWindow.shared.isShowingFloatWindow() {
FloatWindow.shared.releaseFloatWindow()
}
模式切换
直播场景里,模式切换过程中,您需要使用同一个 LiveCoreView
对象,用于在两种模式下展示直播内容,这样不但可以共享视图,还可以共享直播数据和状态。
如上图所示,正常模式是LiveViewController
场景,悬浮窗模式是LiveFloatWindow
场景,在模式切换过程中,可以使用同一个 LiveCoreView
对象,以保证直播过程正常进行。
本页内容是否解决了您的问题?