tvOS - управление игрой через пульт без Siri

Я работаю над игрой в Objective-C. Пульт Siri отлично работает через GCMicroGamepad, а настоящие контроллеры MFi хорошо работают через GCGamepad. Однако сторонние ИК-пульты вообще не работают в игре (как и приложение Remote на iPhone или более старый пульт Apple TV 3-го поколения).

Как я могу распознать и отличить эти входные данные?


Два дня спустя ... Я обнаружил, что UITapGestureRecognizer можно использовать для правильного обнаружения событий Up, Down, Left, Right и Select при использовании стороннего пульта дистанционного управления телевизором или iPhone Remote.app. Направленные события также уникальны для этих типов пультов — пульт Siri не генерирует направленные события касания. Однако, к сожалению, нажатие кнопки «Выбрать» на пульте Siri, стороннем приложении или приложении iPhone Remote.app сгенерирует событие «Выбрать» из моего распознавателя касаний. Мне нужен какой-то способ различить их.

Единственный отличительный фактор, который я могу найти, заключается в том, что нажатие на пульт Siri также генерирует нажатие кнопки A на GCMicroGamepad — сторонний пульт или iPhone Remote.app вообще не влияет на GCMicroGamepad. Но крайне неэлегантно пытаться отслеживать GCMicroGamepad для событий касания, а затем использовать это событие для фильтрации соответствующего события кнопки «Выбрать». Конечно, это не рекомендуемое использование API; это не похоже на хорошее долгосрочное решение. Если бы я мог сказать пульту Siri прекратить генерировать события пользовательского интерфейса в режиме GCMicroGamepad, это было бы превосходно.


person StilesCrisis    schedule 29.02.2016    source источник
comment
Вы смотрели видео с докладами о технологиях: developer.apple.com/videos /play/techtalks-apple-tv/4   -  person Stefan    schedule 04.03.2016
comment
В этом разговоре вообще обсуждается remote.app ?? Я не помню этого.   -  person StilesCrisis    schedule 04.03.2016
comment
Нет, только пульт Siri и игровые контроллеры. Извините, я пропустил эту часть вашего вопроса.   -  person Stefan    schedule 04.03.2016


Ответы (1)


Я не могу проверить это прямо сейчас, но вы, вероятно, могли бы отличить Siri Remote от стороннего пульта, используя GCEventViewController со свойством controllerUserInteractionEnabled, для которого установлено значение false. Таким образом, входные данные Siri Remote не должны передаваться в UIKit (когда первым отвечает GCEventViewController). События ввода стороннего пульта могут пройти через UIKit, поскольку, в отличие от Siri Remote, это не GCMicroGamepad.

Пока что Apple действительно не поддерживает многопользовательские игры с несколькими пультами Siri Remote, iOS Remotes или IR-пультами. Но я думаю, что это может произойти, потому что приложение Remote для iOS скоро будет поддерживать многопользовательские игры (поэтому я предполагаю, что Apple TV распознает несколько контроллеров GCMicroGamePad).

person Felix Lapalme    schedule 07.03.2016