HomeKit允许用户给单个和多个home 进行布局,每个home (HMHome) 代表单个网络设备的居所,用户的任何一台iOS设备都可以拿到自己home的数据,用户也可以将home数据分享给客人,但客人会受好多的限制。当某个home作为最重要的home时,可以用通过Siri去命令操控它。
每个home都有好多房间和每间房间里多个智能家居,room (HMRoom)代表一个Home中的房间。HMRoom有一个有意义的名字,这样我们可以让Siri控制每个房间,如卧室和厨房。智能家居(HMAccessory)是home中的自动设备,如车库中自动开门机。service (HMService)是一个智能家居提供的一个实际的服务,如打开和关闭车库门或者车库的灯。
如果应用中缓存home的布局,当房间的布局发生改变时,需要更新应用中缓存home的布局。用HMHomeManager对象得到HMHome对象和HomeKit 数据库相关的对象,当得到HMHome对象时,通过代理的回调将HMHome对象的数据进行同步,具体参考Observing HomeKit Database Changes
一、创建 Home Manager对象
一个HMHomeManager对象可以访问 home, room, accessory, service, 和 其他 HomeKit对象 。一旦创建home manager对象,一定要设置其代理。当得到这些对象时,可以在代理方法中通知你。
self.homeManager = [[HMHomeManager alloc] init];
self.homeManager.delegate = self;
当创建home manager 对象时,HomeKit能够从HomeKit数据库中得到homes对象和其它相关联的对象,如room 和智能家住对象。HomeKit得到这些对象时,home manager 的primaryHome属性是空和homes属性也是空的数组。应用应该处理用户没有创建home,但是应用应该等待直到HomeKit完成初始化。HomeKit 会发送homeManagerDidUpdateHomes:消息给home manager的代理。
注意
当app进入前台或者在后台Home manager属性发生改变时,这个homeManagerDidUpdateHomes:方法就会被调用,请参考 Observing Changes to the Collection of Homes.
二、获取Primary Home和 Homes集合
通过home manager的primaryHome属性,可以得到primary home,代码如下:
HMHome *home = self.homeManager.primaryHome;
使用home manager的homes属性可以得到用户的所有home的集合;例如自家主要居所、度假别墅以及办公室。每个home都对应一个独立的home对象。
HMHome *home;
for (home in self.homeManager.homes){
…
}
三、获取 Home中的所有rooms
在一个home中,rooms属性定义accessories位置。用home的rooms属性可以得到所有room。
HMHome *home = self.homeManager.primaryHome;
HMRoom *room;
for (room in home.rooms){
…
}
四、获取Room 中的Accessories
Accessories 数组属于home,但是被指定给了home中的room。假如accessory没有被指定room,accessories被指定给默认room ,默认的room是通过roomForEntireHome方法得到的。用room的accessories属性得到所有accessory。代码如下:
HMAccessory *accessory;
for (accessory in room.accessories){
…
}
如果要展示一个个accessory的相关信息或者允许用户控制它,可设置accessory的代理方法并实现这个代理方法,详情请见Observing Changes to Accessories.
一旦获取到accessory对象,可以访问它的服务和其他的属性,详情请参阅Accessing Services and Characteristics。
五、得到home中所有的accessories
使用HMHome类中的accessories的方法,可以直接从Home对象中获取所有的accessory对象,而不是拿到home中所有room对象,然后再得到room中所有的accessories,具体操作请用Getting the Accessories in a Room。
以上译自官方文档,有不足之处,请指正,感恩!
网友评论