UIWebView отключает мое текущее воспроизводимое событие удаленного управления AVPlayer - PullRequest
0 голосов
/ 01 мая 2019

Я разрабатываю менеджер загрузок, приложение музыкального плеера для iOS на языке Swift.Это приложение имеет 2 ViewController, одно из которых представляет собой музыкальный проигрыватель, который я использовал для воспроизведения музыки, например, экземпляр AVPlayer. Он показывает список музыки, и, нажав на выбранную музыку, он будет воспроизводить музыку.

Второй ViewController - это веб-браузер.какие пользователи могут просматривать веб-сайты и делать то, что они хотят, как обычный веб-браузер.

Моя проблема здесь заключается в том, что я настроил событие дистанционного управления для фоновых событий (play, pause, next, prev) в моем плеереVC и все работает нормально, пока я не захожу в браузер VC, и при открытии некоторых веб-сайтов, таких как https://www.bia2.com, которые имеют музыкальное / видео содержимое, это полностью отключит мое текущее удаленное фоновое событие.

Вот изображения до и после открытия упомянутого веб-сайта:

1 - музыка, выбранная для воспроизведения, и доступны все события дистанционного управления

2 - зашел в браузер VC и открыл https://www.bia2.com, затем он автоматически отключил текущие события воспроизведения с пульта (даже выбор новой музыки по-прежнему не работает)

  • Я попытался разместить свойкод в AppDelegate или других VC все тот же
  • пытался использовать MPRemoteCommandCenter все тот же
 let command = MPRemoteCommandCenter.shared();
        command.playCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
            self.player.play()
            return .success
        }

        command.nextTrackCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
            self.PlayNext()
            return .success
        }

Вот мой пример кода в моем PlayerViewController и работает нормально, пока я не откроюупомянутый сайт:

override func viewDidAppear(_ animated: Bool)
   {
       UIApplication.shared.beginReceivingRemoteControlEvents();
       self.becomeFirstResponder();
   }

   override func becomeFirstResponder() -> Bool
   {
       return true;
   }

override func remoteControlReceived(with event: UIEvent?) {


       guard event!.type == .remoteControl else {
           return
       }

       switch event!.subtype
       {

       case .remoteControlNextTrack:
           mediaPlayer.PlayNext()
       case .remoteControlPause:
           mediaPlayer.player.pause()
       case .remoteControlPlay:
           mediaPlayer.player.play()
       case .remoteControlPreviousTrack:
          mediaPlayer.PlayPrev()
       case .remoteControlStop:
           mediaPlayer.player.pause()

       case .remoteControlTogglePlayPause: break

       default:
           break
       }

   }
...