UIEvents, отправленные с Apple TV при использовании внешнего режима воспроизведения AVPlayer

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

Делать это на устройстве довольно просто, мы просто не раскрываем никаких «обычных» элементов управления для пользователя, а в -remoteControlReceivedWithEvent: мы -remoteControlReceivedWithEvent: все события, которые нас действительно интересуют.

Но мы боремся за поддержку Apple TV. Мы понимаем, что он должен отправлять все события, отправленные с Apple Remote в наше приложение, согласно [0]:

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

Однако, насколько я могу видеть из моей отладки и вытаскивания волос, это не относится к случаям, когда вы позволяете AVPlayer обрабатывать отображение вашего видео. На самом деле, мы вообще ничего не делаем для того, чтобы видео воспроизводилось по телевизору, поскольку свойство allowsExternalPlayback свойствоExternalPlayback по умолчанию.

Если я правильно разбираюсь в документах, используя этот режим с Apple TV, на Apple TV отправляется только URL / данные с устройства, а aTV делает часть декодирования и рендеринга собственной, как [1]:

Режим внешнего воспроизведения – это когда видеоданные отправляются на внешнее устройство, такое как Apple TV через AirPlay, и адаптеры HDMI / VGA на мини-разъем для полноэкранного воспроизведения с его оригинальной точностью. Воспроизведение AirPlay Video также рассматривается как режим «внешнего воспроизведения».

что потенциально может объяснить, почему я не получаю никаких событий на устройстве (например, кто-то из Apple подумал, что, поскольку aTV делает тяжелую работу и фактически декодирует и визуализирует, приложения на устройстве не должны получать эти события).

Итак, мой вопрос в основном таков: есть ли какое-либо явное дерево, которое мне не хватает в лесу, или у меня нет никакого отступления, кроме:

  • уродливые хаки, использующие KVO в позиции воспроизведения и скорости воспроизведения, и наказывая пользователей за «обман»,
  • переопределение всего видеоизображения самостоятельно, просмотр экрана телевизора в качестве второго дисплея

Любые указатели будут очень благодарны.

[0] https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AirPlayGuide/EnrichYourAppforAirPlay/EnrichYourAppforAirPlay.html

[1] https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVPlayer_Class/Chapters/Reference.html#//apple_ref/occ/cl/AVPlayer

Interesting Posts

Как создать Caffe framework XCode 6.2, среду iOS 8.3

iOS, запись AudioUnits на локальный URL

Swift – панель инструментов следует при просмотре таблицы при прокрутке

iOS Полноэкранный захват WKWebview со встроенным видео Youtube

символ (ы) не найден для архитектуры i386

Как избавиться от тонкой границы в UIView, закругленной с layer.cornerRadius в iOS 7.1.1?

Swift 3: предупреждение «Неиспользуемый результат вызова» при переопределении BecomeFirstResponder

Нужна помощь, устанавливая две кнопки одинаковой ширины, бок о бок

Как я могу получить позиции заданных значений вдоль UISlider?

Запрос CFSocketCreate не проходит через UDP

Внедрение SWRevealViewController в Swift

В чем разница между DISPATCH_QUEUE_CONCURRENT и DISPATCH_QUEUE_SERIAL

Получить объект IndexPath объекта Core Data в UITableView

Невозможно обнаружить Wi-Fi включен или отключен только на iPad 2

iOS 8: выбранное изображение для настраиваемого элемента панели вкладок, заданного в построителе интерфейса, не работает

Давайте будем гением компьютера.