IOS开发之HomeKit(四)
书接上文,上一篇文章我们介绍了一下如何使用APP搜索获取到智能硬件的对象。那么这篇文章需要介绍一下智能硬件模拟器的使用以及如何对智能硬件进行简单的控制。
一 HomeKit Accessory Simulator的使用
如何下载这个模拟器在第一篇文章中已经介绍过了,这里不再赘述。打开HomeKit Accessory Simulator的主界面如下图:

左下角的黄色圆圈内有一个➕,点击创建一个新的智能设备。这时会弹出一个选项列表:

添加桥接这个先不做介绍,先点击第一个创建一个新的智能设备。接下来填写设备信息:

名字随便起一个,我这里是新加了一个灯泡的智能硬件。添加好之后如下图所示:

这里会显示出刚才创建的灯泡的基本信息。
点击下方的Add Service为灯泡这个智能硬件添加一个服务,弹出一个配置信息的框,选择填写配置信息:

这三个框service是选择的,name和UUID是自己填写的,也可不填使用默认的。我们这里service选择switch,即我们为灯泡添加一个开关的服务。添加好之后会出现在主界面上

这就是这个模拟器的基本使用了,还有很多功能大家自己可以研究一下,这里不多做介绍了。
二 使用APP实现对硬件对象的基本控制
打开APP在“我家”这个home中有一个“卧室”这个room点击卧室进入房间的界面,点击添加配件按钮,之后可以看到搜索到了灯泡这个设备已经添加到我们的列表之中了。点击灯泡将灯泡添加进卧室。

我这里为了更加清楚的表达,我把获取到的外设对象传值到一个新的界面中来进行操作。在这里创建一个collectionView把外设展示出来,我这里因为就刚才添加了一个外设所以就显示了一个。

这里偷个懒(减少一下控件的使用),我们实现一下这个功能。直接点击这个cell就完成灯泡的开关操作,那么怎么知道灯泡的开关情况呢?
看模拟器的主界面,我们刚才添加的开关服务。下面我们在APP上点击灯泡之后下图中YES和NO前面的小黑点会根据我们的操作自动选择对应的位置。这样来模拟我们实际硬件的开关情况。

为了偷懒我把一坨代码全部写到didSelectItemAtIndexPath这个代理方法里边了:


到这里就完成了对该灯泡外设的简单开关的操作了,我们通过APP点击上上上图中的呢个绿色名字为灯泡的cell,我们会看到模拟器中显示的开关状态可以根据我们的操作进行改变了。
那么还有一个问题,如果我们操作硬件APP中显示的硬件的状态也应该改变才对啊。别忘了我们刚才设置了硬件的代理:


当我们操作硬件的时候,如果硬件的特征值改变的话。系统会自动调用这个方法,我们就可以看到特征值改变的情况,那么我们拿到这个特征值之后,就可以去更新UI了,来保证APP显示的状态和硬件的实际状态是一致的。
到这里就告一段落了,这就是homekit这个库的基本使用了。还有很多其他的东西,这里就不不再做介绍了,感兴趣的小伙伴们可以再深挖一下。期待智能硬件真正爆发的那一天。写的有不对的地方,恳请大家批评指正。一起努力,共同进步!