HomeKit-当我从后台回到前台时,如何更新附件的isReachable值?

时间:2018-11-21 12:28:35

标签: ios swift homekit background-foreground

情况:我正在开发一个管理HomeKit配件的应用程序。例如,我这样做:

  1. 附件已打开电源,我可以通过应用程序看到它。同样在前景模式<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul class="nav navbar-nav side-nav nicescroll-bar" style="overflow: hidden; width: auto; height: 100%;"> <li><a href="home">home</a></li> <li><a href="dashboard">dashboard</a></li> <li><a href="base">base</a></li> <li><a href="test">test</a></li> </ul>方法中:

HMAccessoryDelegate

工作正常,我可以处理附件的状态。

  1. 我将应用切换到后台模式。

  2. 我关闭了附件(我的意思是完全关闭了电源),所以它一定无法够到。

  3. 我将应用切换到前台模式,但仍可访问附件。 方法func accessoryDidUpdateReachability(HMAccessory)-不被调用。 值func accessoryDidUpdateReachability(HMAccessory)未更新。

我去前台时的代码示例:

accessory.isReachable

问题:当我从后台模式回到前台时,如何更新配件的isReachable值?

1 个答案:

答案 0 :(得分:0)

您可以在ViewController中创建一个实现HMHomeManagerDelegate的函数:

func startHomeManager() {
    manager = HMHomeManager()
    manager.delegate = self

    // do something here
}

,然后将对startHomeManager()的调用添加到您的viewDidLoad()。这将刷新您的HMHome对象。然后在您的AppDelegate中调用此函数:

func applicationWillEnterForeground(_ application: UIApplication) {
    viewController.startHomeManager()
    viewController.didRestartHomeManager()
}

一个好处是,您可以致电startHomeManager()进行刷新等操作。