У меня есть элемент управления проигрывателем в приложении система управления musi c player (Prev Play / Pause Next).
Чтобы показать правильное состояние Play / Pause, я добавляю наблюдателя в уведомление MPMusicPlayerControllerPlaybackStateDidChange.
Все идет гладко, пока запущено приложение Apple Musi c. Но если я закрываю приложение Apple Musi c и нажимаю кнопку воспроизведения в моем приложении, которое запускает функцию playPause (), приложение перестает работать сразу после того, как я пытаюсь получить текущее воспроизведениеState при обработке нового уведомления MPMusicPlayerControllerPlaybackStateDidChange.
func playPause() {
let isPlaying = MPMusicPlayerController.systemMusicPlayer.playbackState == .playing
isPlaying ? controller.pause() : controller.play()
}
Код, который обрабатывает это уведомление:
@objc
private func onPlayBackStateChanged() {
let playbackState = MPMusicPlayerController.systemMusicPlayer.playbackState // <<< This line crashes the app
updatePlaybackState(playbackState)
}
Прямо перед cra sh Я получаю этот журнал:
2020-03-25 13:46:20.471063+0200 MYAPP[405:14911] [SDKPlayback] prepareToPlay failed [no target descriptor]
2020-03-25 13:46:33.305925+0200 MYAPP[405:14911] [SDKPlayback] prepareToPlay failed [no target descriptor]
2020-03-25 13:46:41.498197+0200 MYAPP[405:15072] [SDKPlayback] systemMusicPlayer connection invalidated
Этот код хорошо работает с iOS <13.3 х, но это не работает с iOS 13.4. Это новая ошибка от Apple, или я делаю что-то не так? Как исправить эту ошибку? </p>