пульт дистанционного управления tvos 15 — Siri не возвращается в массиве: GCController.controllers()

#swift #swiftui #tvos #gamecontroller #siri-remote

Вопрос:

в SwiftUI и tvOS 15 при вызове GCController.controllers() для получения списка контроллеров, подключенных к apple tv,

 import GameController

 ...

let siriRemoteAsGameController = GCController.controllers().first
 

пульт дистанционного управления Siri не зарегистрирован в качестве первого контроллера, фактически он вообще не зарегистрирован !

до tvOS 15 (например, 14.7) он работал

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

 NotificationCenter.default.addObserver(forName: .GCControllerDidConnect, object: nil, queue: .main) { note in
        print("GCControllerDidConnect")
        if let detectedGCController = note.object as? GCController {
            print("Controller Detected")
        }
    }

GCController.startWirelessControllerDiscovery(completionHandler: {})
 

я не могу найти изменений в этой области в соответствии с документацией Appel $#itty

любая помощь будет признательна

Ответ №1:

основываясь на этом ответе, кажется, что требуется взаимодействие с удаленным устройством после вызова (по крайней мере, один раз) GCController.controllers() , поэтому решение было таким:

 import GameController

struct ContentView2: View {
  var body: some View {
    // first call before remote interaction
    let a = print("controllers: (GCController.controllers())")
    
    Button("Query controllers") {
      // second call after a press button via remote interaction occurred
      print("controllers: (GCController.controllers())")
    }
  }
}