我有一个使用 AVPlayer() 从网络播放音乐流的应用程序 . 我已将所有设置设置为在后台播放,但是当呼叫进入(或任何其他中断)时,中断结束后播放将不会恢复 . 具体来说,如果中断被贬低,很快就会恢复播放,但如果我有一个很长的电话,例如播放将无法恢复 . 只有当我的应用程序也在后台时才会发生这种情况 . 如果我的应用程序位于前台,当一个中断进来时一切正常 .

我将中断通知设置为:

func playInterrupt(notification: NSNotification) {
    var info = notification.userInfo!
    var intValue: UInt = 0
    (info[AVAudioSessionInterruptionTypeKey] as! NSValue).getValue(&intValue)
    if let type = AVAudioSessionInterruptionType(rawValue: intValue) {
      switch type {
        case .began:
          print("began")
          pause()
        case .ended:
          print("ended")
          play()
      }
    }

运用

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.mixWithOthers )

修复了问题但是如果我从另一个音频源开始播放,它们都会相互叠加 . 理想情况下,我需要我的应用程序在这种情况下停止播放 .

有关如何实现这一目标的任何建议?

提前致谢