我已经设置了一个创建AVPlayerViewController实例的函数,以播放音轨(存储在我们的服务器中)。
func playAudio(_ url: URL) {
let avAssest = AVAsset(url: url)
let playerItem = AVPlayerItem(asset: avAssest)
audioPlayer = AVPlayer(playerItem: playerItem)
let playerViewController = AVPlayerViewController()
playerViewController.player = audioPlayer
try? AVAudioSession.sharedInstance().setCategory(.playback,mode: .default,options: [])
self.present(playerViewController,animated: true,completion: {
self.audioPlayer.play()
})
}
播放器在前台时工作正常。如果我进入锁定屏幕,音频将继续播放。如果在锁定屏幕上按“暂停”按钮,音频会暂停。问题是,如果我然后单击锁定屏幕上的播放,则会恢复我正在收听的音频,但是从头开始播放第二个音频实例,所以现在我同时有两个音频实例播放。如果我再次暂停并再次按播放,则音频的另一个实例开始播放。
如何解决此问题,使锁定屏幕按钮仅影响原始音频?
我正在使用Swift 4.2开发Xcode 11。