You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI如何实现VideoPlayer锁屏及应用退后台时持续播放

后台持续播放视频实现方案

默认配置下iOS会在应用退至后台、设备锁定时,自动终止未声明后台音频权限的媒体播放,同时系统默认音频会话类别不支持后台播放,按以下步骤修改即可实现持续播放:

1. 开启后台音频权限

  • 打开Xcode项目,选中对应Target,进入「Signing & Capabilities」页
  • 点击「+ Capability」添加Background Modes能力
  • 在能力选项中勾选「Audio, AirPlay, and Picture in Picture」

2. 配置支持后台播放的音频会话

在播放器初始化前,需要将全局音频会话设置为可后台播放的类别,否则即使开了后台权限,系统仍会在应用退后台时中断音频输出。

3. 修改VideoView代码

优化原有强制解包的风险,加入音频会话配置逻辑,修改后完整代码:

import SwiftUI
import AVKit
import AVFoundation

struct VideoView: View{
    @State var FilePath = ""
    @State private var player = AVPlayer()
    
    private func setupAudioSession() {
        do {
            let session = AVAudioSession.sharedInstance()
            // 设置为播放类别,支持后台音频输出
            try session.setCategory(.playback, mode: .moviePlayback)
            try session.setActive(true)
        } catch {
            print("音频会话配置错误: \(error)")
        }
    }
    
    var body: some View{
        VideoPlayer(player: player)
            .onAppear{
                setupAudioSession()
                guard let fileURL = URL(string: FilePath) else { return }
                player = AVPlayer(url: fileURL)
                player.play()
            }
            .onDisappear{
                player.pause()
            }
    }
}

补充说明:如果播放的是远程网络视频,需确保项目Info.plist中已配置对应域名的网络访问权限,否则会出现加载失败问题。

内容的提问来源于stack exchange,提问作者hugh19se

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 09:48:15