Как сделать зеркалирование экрана с помощью AirPlay из приложения (а не с панели управления) в iOS?

Я использую MPVolumeView, чтобы показать кнопку AirPlay. Мне нужно показать пользовательские обои для Apple TV путем зеркалирования аудио. Звук воспроизводится правильно на Apple TV, но изображение обоев не отображается. Я использую AVAudioController для воспроизведения звука. Я проверил приложение YouTube, в котором работает зеркальное отображение экрана из приложения для воспроизведения видео. Можно ли отображать зеркалирование в приложении с помощью AVAudioController?

Помогите мне решить эту проблему. Спасибо заранее.

Ответы

Ответ 1

К сожалению, внешний экран, связанный с AirPlay, станет активным (и опубликует соответствующее уведомление), когда вы включите зеркалирование AirPlay на панели управления. Кажется, что не позволяет программному обеспечению зеркалирования.

MPVolumeView может помочь пользователю перенаправить звук на колонки AirPlay, это не имеет никакого отношения к зеркалированию дисплея.

Ответ 2

Документацию можно найти здесь: https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/WindowAndScreenGuide/UsingExternalDisplay/UsingExternalDisplay.html

В основном это о создании второго UIWindow, если имеется внешний дисплей. Я предполагаю, что вы можете показать свои обои, которые являются изображением. Должно быть просто установить это через UIImageView во второй UIWindow.

Ответ 3

Вы можете отображать зеркалирование в приложении с помощью свойства AVPlayer.

Это свойство

@property (nonatomic) BOOL usesAirPlayVideoWhileAirPlayScreenIsActive NS_DEPRECATED_IOS(5_0, 6_0);

или

@property (nonatomic) BOOL usesExternalPlaybackWhileExternalScreenIsActive NS_AVAILABLE_IOS(6_0);.

Значение по умолчанию usesAirPlayVideoWhileAirPlayScreenIsActive и usesExternalPlaybackWhileExternalScreenIsActive равно NO.

usesAirPlayVideoWhileAirPlayScreenIsActive не действует, если allowsAirPlayVideo равно NO.

И usesExternalPlaybackWhileExternalScreenIsActive не работает, если allowsExternalPlayback НЕТ.

Ответ 4

Вам необходимо будет прослушать уведомления о подключении/отключении экрана:

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];

[center addObserver:self selector:@selector(handleScreenDidConnectNotification:)
               name:UIScreenDidConnectNotification object:nil];
[center addObserver:self selector:@selector(handleScreenDidDisconnectNotification:)
               name:UIScreenDidDisconnectNotification object:nil];

В имени: UIScreenDidConnectNotification вы увидите, что на вашем устройстве теперь есть 2 экрана, и вы можете выполнить свою настройку.