#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())")
}
}
}