iOS 13.4 при доступе к MPMusicPlayerController.systemMusicPlayer происходит сбой приложения - PullRequest
1 голос
/ 25 марта 2020

У меня есть элемент управления проигрывателем в приложении система управления 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>

1 Ответ

0 голосов
/ 14 апреля 2020

Системный проигрыватель musi c позволяет вашему приложению работать как «пульт дистанционного управления» для приложения Apple Musi c ( docs ). Поэтому, когда вы закрываете приложение Apple Musi c, вы убиваете соединение, требуемое системным проигрывателем.

Если вы хотите воспроизводить musi c локально внутри своего приложения, не полагаясь на Apple Musi c состояние приложения с использованием приложения musi c player .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...