tencent cloud

文档反馈

最后更新时间:2024-12-10 17:32:51

    功能介绍

    悬浮窗功能允许主播和观众在不退出直播间的情况下,进入到小窗口模式,小窗口悬浮在屏幕上,您可以自由拖拽到合适的位置,悬浮窗内可以显示直播画面。在悬浮窗模式下,App 可以切换到别的场景或者退后台,点击悬浮窗还可以恢复到正常全屏直播界面。
    
    
    

    使用说明

    原理简介

    悬浮窗的原理是,在 rootWindow 上添加视频直播的视图作为悬浮窗的内容。

    快速接入

    悬浮窗功能核心代码:
    // 文件位置:iOS/TUILiveKit/Sources/Component/FloatWindow
    FloatWindow // 悬浮窗核心功能的实现目录
    ├── FloatWindow.swift // 悬浮窗功能对外接口
    └── FloatView.swift // 悬浮窗View
    悬浮窗数据源:
    展示悬浮窗的 ViewController 需要实现如下数据源,以便悬浮窗可以拿到正确的视图数据。
    protocol FloatWindowDataSource: {
    func getRoomId() -> String // 当前直播间的Id
    func getCoreView() -> LiveCoreView() // 悬浮窗上展示的视频View
    func relayoutCoreView() // 当从悬浮窗状态恢复到视图原ViewController时会触发该函数,在此重新设置视频View的布局
    }

    使用场景及示例:

    展示悬浮窗:
    class ExampleViewController: UIViewController {
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    // 展示悬浮窗,当前ViewController需要实现FloatWindowDataSource
    // 在展示悬浮窗时,会退出当前ViewController
    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 对象,以保证直播过程正常进行。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持