IOS开发之HomeKit(二)

一  相关概念

1.home(HMhome)

        homeKit允许用户有多个home,每一个home代表一个有智能设备的住所。用户拥有Home的数据并可通过自己的任何一台iOS设备进行访问。用户也可以和客户共享一个Home,但是客户的权限会有更多限制。在用户的所有home中,会有一个常用的home,即为primary home。被指定为primary home的home默认是Siri指令的对象,并且不能指定home,就是说primary home是只读的不能去设定。

       我们可以通过创建一个HMHomeManager对象去管理home。使用这个HMHomeManager对象的访问home、room、配件、服务以及其他HomeKit对象。

2.room(HMroom)

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

3.accessory(HMAccessory)

       一个accessory代表一个家庭中的自动化设备,例如一个智能插座,一个智能灯具等。

4.sevice(HMService)

       一个sevice是accessory提供的一个实际服务,例如打开或者关闭灯泡,这里和蓝牙开发中的服务的意义基本是一样的。每个sevice中也会有多个特征(characteristic),这个也可以参考,蓝牙开发中的相关概念。

IOS开发之HomeKit(二)_第1张图片
它们之间的关系如图所示

二  启动homeKit

       我这里写了一个界面,为了展示当前选中的home的所有room,可以编辑home以及其中的room:

IOS开发之HomeKit(二)_第2张图片
1.查看全部的home,获取到用户的homes,使用alterViewContorller展示出来。点击选择某一个home可以将其中的room展示在当前界面中。

IOS开发之HomeKit(二)_第3张图片

2.点击移除当前home可以移除当前界面展示的home。

3.点击添加home,用户通过alterViewContorller输入一个名字,可以为用户增加一个新的home。

IOS开发之HomeKit(二)_第4张图片

4.蓝色的方块是collectionView,展示了当前home的所有room,点击对应的room会push到这个room的详情界面。点击后边的加号同样会出现一个alterViewContorller,让用户输入一个唯一的名字,来为当前的home增加一个新的room。


上代码:

这里为了搞得清楚一点,单搞了一个类出来作为工具类;

IOS开发之HomeKit(二)_第5张图片
.h文件

IOS开发之HomeKit(二)_第6张图片
.m文件这里有两个方法分别是添加和移除home

接上图:

IOS开发之HomeKit(二)_第7张图片
这是homeManager的回调方法

其中第一个方法是homeManager初始化之后的回调。我们对数据进行操作的时候,应该再其初始化之后进行。

获取home: 初始化之后我们在其回调方法中可以获取到manager.homes,这是一个数组,里边是用户的全部HMhome对象,我们可以遍历这个数组获取到全部的home,通过home.name得到home的名字。

添加和移除home:上图中有两个分别是添加和移除home的方法,使用homeManager对象来调用。这两个方法同样有两个回调方法来告诉我们是否操作成功。

获取room:获取到HMhome对象之后可以通过home.rooms获取到该home的全部room。同样通过遍历这个数组获取到全部的HMroom对象,然后通过room.name获取到room的名字。

添加和移除room:同添加和移除home,不过是使用HMhome对象来调用。

其实这里边很多东西都是明确的上下级关系,只要搞清楚这个上下级关系,依次类推就很简单了。


你可能感兴趣的:(HomeKit)