1、HomeKit
homekit这个框架是用来沟通和控制我们的家庭智能硬件的。这些智能硬件都是支持HomeKit Accessory Protocol的。homekit应用程序可以让用户去发现并且配置家庭里的这些兼容硬件的。它支持远程访问,支持多个用户和多个用户设备!
2、创建HomeKit之前的工作
- Xcode创建一个APP Demo
- 启用homekit,在控制面板里找到homekit,并打开开关。如图所示
- .如果没有智能硬件设备的话可以去下载一个模拟器。点击上上图中的Download homekit simulator会跳转到苹果网站的下载界面
- 点击下载图中的Hardware IO Tools(下载for7.3的就行)。这里有好多工具,找到homekit模拟器(就是黄色的那个)拖到你的应用程序中,等到测试APP的时候,双击打开就可以使用了
3、相关的类的概念
- home(HMhome):homeKit允许用户有多个home,每一个home代表一个有智能设备的住所。用户拥有Home的数据并可通过自己的任何一台iOS设备进行访问。在用户的所有home中,会有一个常用的home,即为primary home。我们可以通过创建一个HMHomeManager对象去管理home。使用这个HMHomeManager对象的访问home、room、配件、服务以及其他HomeKit对象。
- room(HMroom):每个Home一般有多个room,并且每个room一般会有多个智能配件。在home中,每个房间是独立的room,并具有一个有意义的名字,这个名字是唯一的。
- accessory(HMAccessory):一个accessory代表一个家庭中的自动化设备,例如智能灯具
- sevice(HMService):一个sevice是accessory提供的一个实际服务,例如打开或者关闭灯泡,这里和蓝牙开发中的服务的意义基本是一样的。每个sevice中也会有多个特征(characteristic)
上码:
@implementation MyHomeKit
- (void)initMyHomeKit {
self.homeManager = [[HMHomeManager alloc] init];
self.homeManager.delegate = self;
}
#pragma mark 这些都是home的操作方法
- (void)addHome:(NSString *)homeName {
[self.homeManager addHomeWithName:homeName completionHandler:^(HMHome * _Nullable home, NSError * _Nullable error) {
NSLog(@"%@", homeName);
}];
}
- (void)removeHome:(HMHome *)home {
[self.homeManager removeHome:home completionHandler:^(NSError * _Nullable error) {
NSLog(@"%@", home);
}];
}
#pragma mark homeKitManager的四个代理方法
// 其中第一个方法是homeManager初始化之后的回调,我们对数据进行操作的时候,应该再其初始化之后进行。
// 初始化之后我们在其回调方法中可以获取到manager.homes,这是一个数组,里边是用户的全部HMhome对象,我们可以遍历这个数组获取到全部的home,通过home.name得到home的名字。
// 获取所有的home资源
- (void)homeManagerDidUpdateHomes:(HMHomeManager *)manager {
// 获取到的homes
NSLog(@