友链
导航
These are the good times in your life,
so put on a smile and it'll be alright
友链
导航
开发 HomeKit-enabled hardware accessory 需要 MFi License (“Made for iPhone/iPod/iPad”),所以相关文档是无法随意获取到的。
但是 #WWDC14 的 Session 701,Designing Accessories for iOS and OS X,提供了一些 HomeKit Hardware 开发的信息。
JSON
上面那个绿块Algorithm | Description |
---|---|
Secure Remote Password (SRP) | Encrypts and authenticates initial pairing key exchange |
Ed25519 | Long-term keys for pairing and authentication |
Curve25519 | Encrypts initial authentication for each session |
HKDF-SHA-512 | Per-session ephemeral encryption key derivation |
ChaCha20-Poly1305 | Encrypts and authenticates HAP data |
accessory : { service1 : “public.hap.accessory-information” { characteristic : “serial-number” characteristic : “identify” } service2 : “public.hap.garage-door-opener” { characteristic : “target-state” characteristic : “current-state” characteristic : “obstruction-detected” } service3 : “public.hap.lightbulb” { characteristic : “on” } }
NSString *homeName = self.home.name; NSArray *allRooms = self.home.rooms; NSArray *allAccessories = self.home.accessories;
NSArray *accessoriesInRoom = self.room.accessories;
HMRoom *room = self.accessory.room; NSArray *services = self.accessory.services;
[self.characteristic readValueWithCompletionHandler:^(NSError *error) { if (error == nil) { id value = self.characteristic.value; } }]; ! [self.characteristic writeValue:@42 withCompletionHandler:^(NSError *error) { if (error != nil) { // unable to write value. check error for why } }];
Homes (HMHome) Homes(HMHome)是最顶层的容器,展示了用户一般都会认为是单个家庭单位的结构。用户可能有多个离得较远的住所,比如一个经常使用的住所和一个度假别墅。或者他们可能有两个离得比较近的住所,比如一个主要住宅和一个别墅。
Rooms (HMRoom) Rooms (HMRoom)是home的可选部分,并且代表home中单独的room。room并没有任何物理特性–大小、位置等等。对用户来说,它们是简单的有意义的命名,比如“起居室”或者“厨房”。有意义的room名称可以启用类似“Siri,打开起厨房的灯”的指令。
Accessories (HMAccessory) 附属设备被安装在home中,并且被分配给每个room。它们是实际的物理家庭自动化设备,比如一个车库门遥控开关。如果用户没有配置任何room,那么Home Kit将会把附属设备分配给home中特殊的默认room。
Services (HMService) Services (HMService)是由附属配件提供的实际服务。附属配件有用户可控制的服务,比如灯光;也有它们自用的服务,比如框架更新服务。Home Kit更多关注用户可以控制的服务。单个附属配件可能有多个用户可控制的服务。比如大部分车库遥控开关有打开或者关闭车库门的服务,并且在车库门上还有控制灯光的服务。
Zones (HMZone) Zones (HMZone)是home中可选择的room分组。“Upstairs”和“downstairs”可以由zones代表。Zones是完全可选择的,room不需要处于zone中。通过把room添加到zone中,用户可以给Siri发命令,比如“Siri,打开楼下所有的灯。”
self.accessoryBrowser = [[HMAccessoryBrowser alloc] init]; self.accessoryBrowser.delegate = self; [self.accessoryBrowser startSearchingForNewAccessories]; ... later ... [self.accessoryBrowser stopSearchingForNewAccessories];
(void)accessoryBrowser:(HMAccessoryBrowser *)browser didFindNewAccessory: (HMAccessory *)accessory { // a new accessory has been found }
[self.home addAccessory:newAccessory completionHandler:^(NSError *error) { if (error == nil) { // success! // assign the accessory to a room and give it a name } else { // adding accessory failed; check error for why } }];
(void)accessoryBrowser:(HMAccessoryBrowser *)browser didRemoveNewAccessory: (HMAccessory *)accessory { // a new accessory has been added to a home // or has gone out of range or has been turned off }