JSRUN 用代码说话

创建 Home 布局

编辑教程

创建 Home 布局

HomeKit 允许用户创建一个或者多个 Home 布局。每个 Home(HMHome)代表一个有网络设备的住所。

用户拥有Home的数据并可通过自己的任何一台 iOS 设备进行访问。用户也可以和客户共享一个 Home,但是客户的权限会有更多限制。

被指定为 primary home 的 home 默认是 Siri 指令的对象,并且不能指定 Home。

每个 Home 一般有多个 room,并且每个 room 一般会有多个智能配件。在 Home(HMHome) 中,每个房间是独立的 room,并具有一个有意义的名字,例如“卧室”或者“厨房”,这些名字可以在 Siri 命令中使用。

一个 accessory(HMAccessory)代表实际家庭中的自动化设备,例如车库开门器。一个 sevice(HMService)是 accessory 提供的?种实际服务,例如打开或者关闭车库,或者车库上的灯。

如果你的 App 缓存了 Home 布局的信息,那么当其布局发声改变的时候,App 就需要更新这些信息。

使用 HMHomeManager 对象可以从 HomeKit 数据库获取 HMHome 和其他相关的对象。

本章描述的 API 获取对象后,你应该通过代理回调函数保持获取对象和 HomeKit 数据库同步,具体描述请参看“Observing HomeKit Database Changes"。

创建 Home Manager对象

使用 Home Manager—一个 HMHomeManager 对象的访问 home、room、配件、服务以及其他 HomeKit 对象。

在创建家庭对象管理器(home manager)之后,直接设置它的代理,以便获取到这些对象之后及时的通知到你。

self.homeManager = [[HMHomeManager alloc] init];
self.homeManager.delegate = self;

当你创建一个 home manager 对象时,HomeKit 就开始从 HomeKit 数据库获取这些 homes 和相关对象,例如 room 和 accessory 对象。

当 HomeKit 正在获取那些对象时,home manager 的 primaryHome 属性是 nil,并且 homes 属性是个空数组。

App 应该处理用户还没有完成创建 home 的情况,但是 App 应该等待直到 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 中的所有 room

在一个 home 中,rooms 属性定义 accessories 的物理位置。用 home 的 rooms 属性可以枚举 home 中的所 room。

HMHome *home = self.homeManager.primaryHome;
 HMRome *room;
 for(room in home.rooms){
 …
 }

获取 Room 中的 Accessories

Accessories 数组属于 home,但是被指定给了 home 中的 room。

假如用户没有给一个 accessory 指定 room,那么这个 accessories 被指定一个默认的 room ,这个 room 是 roomForEntireHome 方法的返回值。

用 room 的 accessories 属性可以枚举 room 中所有的 accessory。代码如下:

HMAccessory *accessory;
 for(accessory in room.accessories){
 …
 }
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟