小葫芦智能家居网

 找回密码
 立即注册

扫一扫,访问微社区

智能家居平台 HomeKit 数据库

2017-6-27 10:30| 发布者: 智能资讯| 查看: 886| 评论: 2|原作者: 智能资讯|来自: 小葫芦智能家居网

摘要: 每个 Home 都有一个 HomeKit智能家居 数据库。如下图所示,HomeKit智能家居 数据库会安全地和 home 授权的用户的 iOS 设备以及潜在的客人的 iOS 设备进行同步。为了给用户展示当前最新的数据,你的应用需要观察 Home ...

每个 Home 都有一个 HomeKit智能家居 数据库。如下图所示,HomeKit智能家居 数据库会安全地和 home 授权的用户的 iOS 设备以及潜在的客人的 iOS 设备进行同步。为了给用户展示当前最新的数据,你的应用需要观察 HomeKit 数据库的变化。

智能家居平台 HomeKit 数据库变化

HomeKit 代理方法

HomKit 使用代理设计模式(delegation design pattern)来通知应用程序 HomeKit 对象的改变。一般来讲,如果你的应用程序调用了一个带有完成处理参数的 HomeKit 方法,并且这个方法被成功调用了,那么相关联的代理消息就会被发送给其他 HomeKit 应用,无论这些应用是安装在同一台 iOS 设备上还是远程 iOS 设备上。这些应用甚至可以运行在客人的 iOS 设备上。如果你的应用发起了数据改变,但是代理消息并没有发送到你的应用,那么添加代码到完成处理方法和相关联的代理方法中来刷新数据和更新视图就成为必须了。如果 home 布局发生了显著变化,那么就重新加载关于这个 home 的所有信息。在完成程序处理的情况下,请在更新应用之前检查那个方法是否成功。Homkit 也会调用代理方法来通知你的应用程序 home 网络状态的改变。

例如,下图演示了使用代理方法的过程:响应用户的操作,你的应用程序调用了 addRoomWithName:completionHandler:方法,并且没有错误发生,完成处理程序应当更新 home 的所有视图。如果成功了,homeKit 将会发送 home:didAddRoom:消息给其他应用中 homes 的代理。因此,你实现的这个 home:didAddRoom:方法也应该更新 home 的所有视图。

智能家居平台 HomeKit 数据库变化

应用程序只有在前台运行的时候才能接受代理消息。当你的应用在后台时,HomeKit 数据库的改变并不会成批处理。也就是说,如果你的应用在后台,当其他的应用成功地添加一个 room 到 home 中的时候,你的应用程序并不会接收到 home:didAddRoom: 消息。当你的应用程序到前台运行时,你的应用程序将会接收到 homeManagerDidUpdateHomes:消息,这个消息是表示你的应用程序要重新加载所有的数据。

观察 Homes 集合的改变

设置 home manager 的代理并且实现HMHomeDelegate协议

例如:实现 home:didAddAccessory:和 home:didRemoveAccessory: 方法来更新展示配件的视图。用 HMAccessory 类的 room 属性可以获得配件所属的 room。(对配件来说,默认的 room 是 roomForEntireHome 这个方法的返回值。)

Bridge Note:当你为 home 添加桥接口时,桥接口底层的配件会自动被添加到 home 中。你的代理会接收到桥接口后每个配件的 home:didAddAccessory:消息,但是你的代理不会接收到桥接口的 home:didAddAccessory:消息。

观察配件的变化

配件的状态可以在任何时间发生变化。配件可能不能被获得,可以被移除,或者被关闭。请更新用户界面以反映配件状态的更改,尤其是如果你的 App 允许用户控制配件时。

这以下步骤中,我们假设你已经从 HomeKit 数据库中检索到了配件对象,正如 HMAccessoryDelegate协议

比如,执行 accessoryDidUpdateReachability:方法以启用或者禁用配件控制。

- (void)accessoryDidUpdateReachabilityHMAccessory *)accessory {    if (accessory.reachable == YES) {       // Can communicate with the accessory    } else {       // The accessory is out of range, turned off, etc    }}

如果你展示了配件的服务状态和特性,那么请执行以下代理方法来相应地更新其视图:

accessory:service:didUpdateValueForCharacteristic:

想了解配件的服务,请参阅Accessing Services and Their Characteristics.



鲜花

握手

雷人

路过

鸡蛋
发表评论

最新评论

引用 智能佳装 2017-6-27 10:43
先收藏,以后备用
引用 lovehome 2017-7-6 13:24
非常有用,学习了,感谢

查看全部评论(2)

联系我们|小黑屋|手机版|Archiver|小葫芦智能家居网 ( 蜀ICP备10208193号-2  

GMT+8, 2019-4-19 03:21 , Processed in 0.027681 second(s), 29 queries .

Powered by Fcuhome.com

© 2012-2013 智能家居世界网

返回顶部