MPNowPlayingInfoCenter теперь игнорируетсяPlayingInfo для звука AVPlayer через AirPlay

Я реализовал воспроизведение звука с помощью AVPlayer, воспроизводя удаленный URL-адрес mp3.

Я хочу отобразить информацию о воспроизводимом в данный момент звуке с помощью метода MPNowPlayingInfoCenter nowPlayingInfo.

Когда я блокирую экран, я вижу изображение и заголовок, которые я установил, поэтому я знаю, что этот метод каким-то образом регистрирует информацию, но когда я переключаюсь на AirPlay на AppleTV, дисплей выглядит как обычный видеовыход с индикатор выполнения внизу, но прошедшее время и продолжительность отображаются правильно.

Если я установлю тот же nowPlayingInfo, но затем запущу звук с помощью AudioQueue, то он правильно отобразит изображение на половине экрана (это выглядит так же, как воспроизведение подкаста с помощью приложения iPod/Music).

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


person Andrew Kuklewicz    schedule 10.01.2012    source источник


Ответы (2)


Хорошо, я покопался на форумах разработчиков Apple и нашел подсказку.

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

По-видимому, AVPlayer на iOS 5+ предполагает, что он воспроизводит видео через AirPlay, и поэтому не разрешает фоновое воспроизведение, если вы явно не отключите видео AirPlay.

Как только вы отключите это (то есть self.player.allowsAirPlayVideo = NO;), ваш звук по-прежнему будет воспроизводиться через AirPlay, но теперь он теперь будет правильно отображать интерфейс, похожий на аудио/ipod.

person Andrew Kuklewicz    schedule 10.01.2012
comment
Если я добавлю player.allowsExternalPlayback = false, через AirPlay не будет видео или звука :( - person anitteb; 21.02.2018

Если вы используете iOS7, вам нужно отключить внешнее воспроизведение:

self.player.allowsExternalPlayback = NO;

person Rémy Virin    schedule 14.01.2014