[iOS:在锁定屏幕上使用控件时,AVPlayer会播放音频的多个实例

问题描述 投票:0回答:1

我已经设置了一个创建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。

我已经建立了一个函数,该函数创建一个AVPlayerViewController实例以播放音轨(存储在我们的服务器中)。 func playAudio(_ url:URL){让avAssest = AVAsset(url:url)...

ios swift avplayer avplayerviewcontroller
1个回答
0
投票

无法根据您显示的代码重现该问题。因此,听起来您在self.audioPlayer的位置上有个额外的引用,而问题是由您未向我们透露的代码

© www.soinside.com 2019 - 2024. All rights reserved.