情境:我正在开发一个管理HomeKit配件的应用程序。例如,我这样做:
HMAccessoryDelegate方法:func accessoryDidUpdateReachability(HMAccessory)
工作很好,我可以处理我的附件的状态。
func accessoryDidUpdateReachability(HMAccessory) -不调用。值accessory.isReachable未更新。当我转到前台时,代码示例:
func applicationDidBecomeActive(_ application: UIApplication) {
if let home = HomeStore.sharedStore.home {
for accessory in home.accessories {
print(accessory.isReachable) //not updated
for service in accessory.services {
for characteristic in service.characteristics {
characteristic.readValue { (error) in //updated
if error == nil {
let notification = Notification(name: Notification.Name(rawValue: "UpdatedCharacteristic"))
NotificationCenter.default.post(notification)
}
}
}
}
}
}
}问:当我从背景模式返回到前台时,如何更新附件的isReachable值?
发布于 2019-03-15 18:26:12
您可以在ViewController中创建一个实现HMHomeManagerDelegate的函数:
func startHomeManager() {
manager = HMHomeManager()
manager.delegate = self
// do something here
}并将对startHomeManager()的调用添加到viewDidLoad()中。这将刷新您的HMHome对象。然后在您的AppDelegate中调用这个func:
func applicationWillEnterForeground(_ application: UIApplication) {
viewController.startHomeManager()
viewController.didRestartHomeManager()
}一个额外的好处是,您可以调用startHomeManager()来刷新,等等。
https://stackoverflow.com/questions/53412058
复制相似问题