Как обрабатывать ошибки AVPlayer, когда приложение работает в фоновом режиме? - PullRequest
6 голосов
/ 30 декабря 2010

Я использую AVPlayer для воспроизведения аудиопотока, и его можно воспроизводить в фоновом режиме. Мне интересно, как я могу справиться с ситуацией, когда пользователь теряет подключение к Интернету, чтобы я мог предоставить некоторую обратную связь или, возможно, попытаться восстановить воспроизведение через несколько секунд.

РЕДАКТИРОВАТЬ: Я знаю, что вопрос касается AVPlayer, но если у вас есть ответ с MPMoviePlayerController, это также может быть полезно. Прямо сейчас, используя MPMoviePlayerController, я пытаюсь получить MPMovieFinishReasonPlaybackError случай MPMoviePlayerPlaybackDidFinishReasonUserInfoKey, подписавшись на MPMoviePlayerPlaybackDidFinishNotification, но если f.e. мой звук воспроизводится в фоновом режиме, и я включаю режим полета, я никогда не получаю это уведомление; Я получаю только MPMovieFinishReasonPlaybackEnded, и я не знаю, как отделить это от случая, когда пользователь сам останавливает звук.

1 Ответ

5 голосов
/ 10 января 2011

Я пытался найти источник, но помню, что где-то читал, что если воспроизведение аудио останавливается (по какой-либо причине), это убивает фоновый поток.Человек, пишущий о проблеме, говорил о возможной подаче потоку некоторого пустого аудиоконтента, чтобы поддерживать поток в живых.Возможно, вы сможете отправить локальное уведомление об ошибке обратного вызова, уведомив пользователя о том, что в аудио произошла ошибка, и ее придется перезапустить вручную из приложения.Не поигрались с API достаточно, чтобы узнать, какой обратный вызов лучше всего использовать в этом случае.Если я найду нужную ссылку, я обновлю.

РЕДАКТИРОВАТЬ: Вот Грант Паннелл о потоковом аудио и многозадачности .

...