在下面的快速测试应用程序中,我尝试使用accessoryDidUpdateServices()接收来自色调运动检测器附件的光照级别更新。但是,委托函数永远不会调用。我在安装了iOS 12.1.4的iPhone上运行它。
谁能解释一下我做错了什么,以及我需要做些什么来正确处理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)")
}
}发布于 2019-03-01 01:08:44
问题是我在使用accessoryDidUpdateService时,我应该使用附件:didUpdateValueFor。有了后一个函数,代码就可以按预期运行。
发布于 2019-02-28 12:11:41
我认为你的viewDidLoad中缺少一个addHomes(manager.homes),你需要确保你创建了一个新的主页来添加它,然后你可以添加附件并添加到一个主页中。
我强烈推荐RayWenderlich网站上的这个HomeKit教程:https://www.raywenderlich.com/5313-homekit-tutorial-getting-started
https://stackoverflow.com/questions/54912403
复制相似问题