swift - 未调用 HomeKit 附件DidUpdateServices
问题描述
在以下快速而肮脏的测试应用程序中,我正在尝试使用 accessoryDidUpdateServices() 从 Hue 运动检测器配件接收光照级别更新。然而,委托函数永远不会被调用。我在安装了 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)")
}
}
解决方案
addHomes(manager.homes)
我认为您的内部缺少一个viewDidLoad
,您需要确保创建一个新家来添加它,然后您可以添加配件并添加到家中。
我强烈推荐 RayWenderlich 网站上的这个 HomeKit 教程:https ://www.raywenderlich.com/5313-homekit-tutorial-getting-started
推荐阅读
- angular - Angular v10 ngserve SSL 间歇性失败
- visual-studio - Xamarin 内置 Hot-reload 和 Live Xaml 之类的有什么区别
- javascript - 用户离线时的 NPM 加密 Diffie Hellman 密钥交换
- ios - 在 MainView 上隐藏 StatusBar 和 NavigationBar 但在 Swift 的 DetailView 上显示它
- c++ - 如何解析包含 unicode 文字的 std::string?
- python - Anaconda 导航器打开虚拟环境 jupyter
- php - 从列相同的 2 个表中选择数据,查询不太正确?
- html - chartjs tooltip html:使用数据填充工具提示
- swift - 以卡片形式呈现时核心数据未保存
- java - 替换所有匹配给定模式的匹配项