• 主页
  • 随笔
  • 技术笔记
  • 全部文章
标签 友链 关于我

  • 主页
  • 随笔
  • 技术笔记
  • 全部文章

IOS开发之HomeKit(二)

阅读数:次 2019-04-11
字数统计: 961字   |   阅读时长≈ 3分

上一篇算是先来一个前奏,这一篇开始我们正式开搞。

homekit App 相关代码实现

创建Home 创建room 创建设备 创建服务

一  相关概念

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),这个也可以参考,蓝牙开发中的相关概念。

avatar

二 启动homeKit

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

avatar

1.查看全部的home,获取到用户的homes,使用alterViewContorller展示出来。点击选择某一个home可以将其中的room展示在当前界面中

avatar

2.点击移除当前home可以移除当前界面展示的home。
3.点击添加home,用户通过alterViewContorller输入一个名字,可以为用户增加一个新的home。

avatar

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

上代码:

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

avatar

avatar

接上图:

avatar

其中第一个方法是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对象来调用。

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

代码就写了一小部分,半成品代码放到github上了,有兴趣的可以去看一下。https://github.com/BigBirdalan/myHomeKit.git

  • 本文作者: Grx
  • 本文链接: https://ruixiaoguo.github.io/Grx.github.io/Grx.github.io/2019/04/11/IOS开发之HomeKit(二)/
  • 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!
  • 智能家居

扫一扫,分享到微信

IOS开发之HomeKit(三)
IOS开发之HomeKit(一)
  1. 1. 上一篇算是先来一个前奏,这一篇开始我们正式开搞。
  2. 2. homekit App 相关代码实现
    1. 2.1. 创建Home 创建room 创建设备 创建服务
  • 一  相关概念
    1. 1.home(HMhome)
      1. 0.1. 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)
    1. 0.1. 每个Home一般有多个room,并且每个room一般会有多个智能配件。在home中,每个房间是独立的room,并具有一个有意义的名字,这个名字是唯一的。(home的名字也是唯一的)例如“卧室”或者“厨房”,这些名字可以在Siri 命令中使用。
  • 3.accessory(HMAccessory)
    1. 0.1. 一个accessory代表一个家庭中的自动化设备,例如一个智能插座,一个智能灯具等。
  • 4.sevice(HMService)
    1. 0.1. 一个sevice是accessory提供的一个实际服务,例如打开或者关闭灯泡,这里和蓝牙开发中的服务的意义基本是一样的。每个sevice中也会有多个特征(characteristic),这个也可以参考,蓝牙开发中的相关概念。
  • 二 启动homeKit
    1. 0.1. 我这里写了一个界面,为了展示当前选中的home的所有room,可以编辑home以及其中的room:
    2. 0.2. 1.查看全部的home,获取到用户的homes,使用alterViewContorller展示出来。点击选择某一个home可以将其中的room展示在当前界面中
    3. 0.3. 2.点击移除当前home可以移除当前界面展示的home。
    4. 0.4. 3.点击添加home,用户通过alterViewContorller输入一个名字,可以为用户增加一个新的home。
    5. 0.5. 4.蓝色的方块是collectionView,展示了当前home的所有room,点击对应的room会push到这个room的详情界面。点击后边的加号同样会出现一个alterViewContorller,让用户输入一个唯一的名字,来为当前的home增加一个新的room。
  • 上代码:
    1. 0.1. 这里为了搞得清楚一点,单搞了一个类出来作为工具类;
    2. 0.2. 接上图:
  • 1. 其中第一个方法是homeManager初始化之后的回调。我们对数据进行操作的时候,应该再其初始化之后进行。
  • 2. 获取home: 初始化之后我们在其回调方法中可以获取到manager.homes,这是一个数组,里边是用户的全部HMhome对象,我们可以遍历这个数组获取到全部的home,通过home.name得到home的名字。
  • 3. 添加和移除home:上图中有两个分别是添加和移除home的方法,使用homeManager对象来调用。这两个方法同样有两个回调方法来告诉我们是否操作成功。
  • 4. 获取room:获取到HMhome对象之后可以通过home.rooms获取到该home的全部room。同样通过遍历这个数组获取到全部的HMroom对象,然后通过room.name获取到room的名字。
  • 5. 添加和移除room:同添加和移除home,不过是使用HMhome对象来调用。
  • 6. 其实这里边很多东西都是明确的上下级关系,只要搞清楚这个上下级关系,依次类推就很简单了。
  • 7. 代码就写了一小部分,半成品代码放到github上了,有兴趣的可以去看一下。https://github.com/BigBirdalan/myHomeKit.git
  • © 2014-2024 Grx
    GitHub:hexo-theme-yilia-plus by Litten
    本站总访问量次 | 本站访客数人
    • 标签
    • 友链
    • 关于我

    tag:

    • life
    • OC
    • Google
    • Fastlane
    • Flutter
    • hexo
    • 智能家居
    • Apple Watch
    • 逆向
    • Lottie
    • PHP
    • cocos2d
    • Mac
    • MonkeyKing
    • RN
    • Swift
    • RAC
    • WKWebView
    • WebView
    • Xcode
    • xcode
    • ios
    • Android
    • appledoc
    • MMKV
    • LLVM
    • FreamWork






      
      

    • 唐巧的博客
    • 王巍(喵神)OneVsDen
    • 阿里“念纪“
    • 滴滴-戴铭
    • 郭曜源(ibireme)
    • 阿里”南栀倾寒“
    • 蘑菇街李忠
    • 码农人生
    • 玉令天下
    • bang
    • Ian的博客
    这里是Grx的个人博客:
    iOS开发工程师一枚
    联系方式:
    QQ:1217255509
    Email:grx0917@sina.com
    知识管理,时间管理,自我管理,架构即未来
    欢迎技术交流!