В следующем быстром и грязном тестовом приложении я пытаюсь получать обновления уровня освещенности от аксессуара детектора движения Hue с помощью accessoryDidUpdateServices ().Однако функция делегата никогда не вызывается.Я запускаю его на iPhone с установленной iOS 12.1.4.
Может кто-нибудь объяснить, что я делаю неправильно, и что мне нужно сделать, чтобы правильно обрабатывать обновления HMService?
import HomeKit
public class ViewController: UIViewController, HMHomeManagerDelegate, HMAccessoryDelegate {
var manager: HMHomeManager!
public override func viewDidLoad() {
super.viewDidLoad()
manager = HMHomeManager()
manager.delegate = self
}
public func homeManagerDidUpdateHomes(_ manager: HMHomeManager) {
let service = manager.primaryHome!.servicesWithTypes([HMServiceTypeLightSensor])!.first!
service.accessory!.delegate = self
let characteristic = service.characteristics.filter({ $0.characteristicType == HMCharacteristicTypeCurrentLightLevel }).first!
Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (timer) in
print("Light level: \(characteristic.value!)")
}
}
public func accessoryDidUpdateServices(_ accessory: HMAccessory) {
print("Service updated: \(accessory.name)")
}
}