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
相关产品推荐
相关产品推荐

