Responding to MPMoviePlayerController notifications during background media playback

У меня есть приложение, которое передает видео из сети и воспроизводит его с помощью объекта MPMoviePlayerController для воспроизведения на устройстве или через AirPlay.

Приложение поддерживает работу в фоновом режиме и имеет опцию 'audio' в списке необходимых ключей UIBackgroundModes в своем plist-файле.

При воспроизведении через AirPlay приложение может быть успешно переведено в фоновый режим, и видео продолжает воспроизводиться правильно. Пока все хорошо.

Согласно документации Apple:

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

Однако эти обратные вызовы не выполняются.

Приложение использует два типа обратных вызовов: те, которые связаны с уведомлениями MPMoviePlayerController и AVPlayer, отправляемыми во время воспроизведения, а также обратные вызовы на основе таймера, которые отслеживают положение воспроизведения и статистику производительности в целях мониторинга.

Глядя на примечания Apple, я, конечно, ожидал получить первый тип обратного вызова, чтобы приложение могло ответить на MPMoviePlayerPlaybackStateDidChangeNotification, MPMoviePlayerPlaybackDidFinishNotification и MPMoviePlayerLoadStateDidChangeNotification, но этого не происходит.

Кто-нибудь знает, возможно ли получить эти уведомления во время фонового воспроизведения AirPlay, и если да, то как этого удалось добиться?

**Примечание: приложение работает корректно при работе на переднем плане и получает уведомления нормально. Только когда оно переведено в фоновый режим и воспроизводится через AirPlay, уведомления не принимаются.

Аналогично, видео воспроизводится через AirPlay в фоновом режиме правильно. Не принимаются только уведомления**

6
задан reddersky 11 February 2012 в 11:59
поделиться