iOS允许AVPlayer在后台继续播放

iOS允许AVPlayer在后台继续播放,ios,swift,audio,video,avplayer,Ios,Swift,Audio,Video,Avplayer,我正在开发一款内置视频播放器的应用程序,它可以播放磁盘上的mp4视频,我试图让它在应用程序进入后台时继续播放(视频的)音频 我已经阅读了许多其他的堆栈溢出问题,但没有一个答案适用于我的案例 我补充说: func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { do

我正在开发一款内置视频播放器的应用程序,它可以播放磁盘上的
mp4
视频,我试图让它应用程序进入后台时继续播放(视频的)音频

我已经阅读了许多其他的堆栈溢出问题,但没有一个答案适用于我的案例

我补充说:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
  do {
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
      print("AVAudioSession Category Playback OK")

    do {
      try AVAudioSession.sharedInstance().setActive(true)
      print("AVAudioSession is Active")
    } catch let error as NSError {
      print(error.localizedDescription)
    }
  } catch let error as NSError {
      print(error.localizedDescription)
  }
}
此外,我在应用程序的Info.plist文件中还有所需的背景模式键
应用程序使用AirPlay播放音频或流式音频/视频。
但是,当应用程序进入后台时,
AVPlayer
会停止

有人知道这个应用程序可能有什么问题吗

谢谢:)


编辑:注意:我正在将
AVPlayerLayer
AVPlayer
一起使用。也许这就是问题所在?

是的
AVPlayerLayer
可能造成问题。您需要将其从
AVPlayer
对象中删除。在应用程序转到后台之前,设置为
nil

两种解决方法根据苹果文件

  • 禁用播放器项目中的视频曲目(仅限基于文件的内容)

  • 从关联的AVPlayer中删除AVPlayerLayer(设置 AVPlayerLayer玩家属性为零)

  • 有关更多信息,请参阅此