Невозможно передать пользовательский вид на внешний дисплей с помощью трансляции (Apple TV)

Попытка показать пользовательский экран на внешнем дисплее, подключенном к Apple TV, с помощью airplay. Мы также пытаемся передавать аудио через AppleTV после сопряжения. (Аудио здесь опционально, это хорошо, но не обязательно).

Проблема в том, что если мы воспроизводим звук (используя AVAudioPlayer), он работает нормально, как и ожидалось, но не может отображать пользовательский экран. С другой стороны, выбор его в Центре управления позволяет ему работать нормально, за исключением того, что мы не хотим зеркально отображать экран, мы хотим отображать пользовательский вид.

Любая помощь в этом отношении очень ценится.

Загрузил пример кода для проблемы с AirPlay в Dropbox — https://dl.dropboxusercontent.com/u/1307156/AirplayDemo.zip


person user845730    schedule 03.06.2014    source источник


Ответы (1)


То, что вы пытаетесь сделать, на самом деле довольно просто: после добавления внешнего экрана вы можете создать новый UIWindow, новый UIViewController, который будет управлять вашим пользовательским представлением, отображаемым на внешнем экране, и установить для только что созданного окна значение внешний UIScreen.

// new window binding
newWindow.screen = externalScreen;
[newWindow makeKeyAndVisible];

Вы можете наблюдать за изменениями на внешних экранах (добавление экрана, удаление, изменение режимов экрана) через NSNotificationCenter и делать что-то соответственно для своих целей.

person HepaKKes    schedule 03.06.2014
comment
Единственное, мне нужно использовать зеркальное отображение, чтобы заставить его работать. Есть ли способ сделать это в приложении? - person user845730; 05.06.2014
comment
Нет, нет пути. Apple не позволяет разработчикам программно включать зеркальное отображение экрана. То есть зеркальное отображение экрана запускается, если пользователи решают сделать это через Центр управления. Есть несколько хакерских решений, которые не решают основную проблему... Я наткнулся на это one, но приведенные там заголовки iOS-runtime-headers явно не помогают. Кроме того, это будет решение, которое Apple никогда не одобрит. :) - person HepaKKes; 05.06.2014