Я разрабатываю менеджер загрузок, приложение музыкального плеера для 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
}
}