tvOS GameController В какой момент GCController.controllers заполняется после запуска?
Я пытаюсь прочитать GCController.controllers()
массив после запуска моего приложения, чтобы узнать, какие контроллеры уже были подключены к AppleTV при запуске приложения. Но GCController.controllers().count
0 до некоторой точки после viewDidAppear
вызывается на моем начальном UIViewController. Кто-нибудь знает окончательный пункт, по которому вы можете проверить GCController.controllers()
знать, что это было заполнено в настоящее время подключенными контроллерами?
Мне известно о необходимости регистрации уведомлений о подключении контроллера;
NSNotificationCenter.defaultCenter().addObserver(self, selector: "handleControllerDidConnectNotification:" , name: GCControllerDidConnectNotification , object: nil)
Но это на потом после запуска. Для начала мне нужно узнать, какие из них уже подключены. Кто-нибудь знает?
2 ответа
GCController будет генерировать уведомления GCControllerDidConnectNotification для каждого контроллера, включая те, которые подключены к устройству до запуска. Если вы не получаете уведомления для уже подключенных контроллеров, подтвердите следующее:
- Дважды проверьте, что это сопряжено и включено
- Убедитесь, что это контроллер MFi.
Ты можешь позвонить startWirelessControllerDiscoveryWithCompletionHandler
на viewDidLoad
а затем проверьте GCController.controllers()
на viewWillAppear
это похоже на приложение для игры, которое я только что закончил.
Docs:
После завершения запуска приложения операционная система автоматически создает список подключенных контроллеров. Вызовите метод класса контроллеров, чтобы получить массив объектов GCController для всех подключенных контроллеров. Затем используйте эти объекты для настройки контроллеров или считывания входов контроллера. Если подключенных контроллеров нет или вы вызываете этот метод во время запуска приложения, массив будет пустым.