Работают ли уведомления о подключении / отключении экрана с iOS 5?

Кто-нибудь все еще получает с iOS 5 уведомления о подключении / отключении экрана, независимо от того, проверяете ли вы зеркалирование или нет? Похоже, я не получаю никаких уведомлений, если не подключаю к устройству кабель видеовыхода вместо использования AirPlay.

У меня в приложении есть кнопка AirPlay, предоставленная MPVolumeView. Я могу коснуться его и выбрать Apple TV. Кнопка AirPlay становится синей. Я не получаю уведомления.

Я могу перейти к экрану "Сейчас исполняется" (двойной щелчок и страница на одном конце) и выбрать Apple TV. Я получаю подтверждение, когда значок AirPlay становится синим. Мое приложение не получает подтверждения (даже после возврата к нему).

Я могу перейти к экрану "Сейчас исполняется" (двойной щелчок и страница на одном конце) и выбрать Apple TV И выбрать зеркальное отображение. Я получаю подтверждение, когда значок AirPlay становится синим. Мое приложение не получает подтверждения (даже после возврата к нему).

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

Я надеюсь, что делаю что-то не так, но я хочу проверить и убедиться, что другие получают уведомления при использовании AirPlay. Я вспоминаю, что проверял свою совместимость с AirPlay во время бета-версий 5.0 и не имел таких проблем.

(Образец Apple ExternalDisplay ведет себя так же.)

Код, который я использую для регистрации уведомлений:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(screenDidConnect:)
                                             name:UIScreenDidConnectNotification
                                         object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(screenDidConnect:)
                                             name:UIScreenDidDisconnectNotification 
                                           object:nil];

Код уведомления должен называться:

- (void) screenDidConnect:(NSNotification *)notification {
    if ([[UIScreen screens] count] > 1) 
        [self myScreenInit:[notification object]];
    else {
         ...
    }

1 ответ

Решение

Оказывается, что с iOS 5.0 вы получаете уведомление только в следующих случаях:

  • iPad 2 или iPhone 4s и
  • Вы должны включить зеркалирование на экране "Сейчас исполняется" устройства (дважды нажмите кнопку "Домой", перейдите на крайнюю левую страницу, коснитесь значка AirPlay, выберите AppleTV и включите зеркалирование). Это кажется странным, но так оно и работает. Просто выбрав AirPlay AppleTV без зеркалирования, вы можете использовать AppleTV для контента, который отображается в рамках AVPlayer.

С помощью кабеля HDMI больше устройств могут использовать второй экран с помощью UIScreen.

Другие вопросы по тегам