小葫芦智能家居网

 找回密码
 立即注册

扫一扫,访问微社区

智能家居平台homekit创建 Homes 和添加 Accessories

2017-6-27 10:22| 发布者: 智能资讯| 查看: 701| 评论: 2|原作者: 智能资讯|来自: 小葫芦智能家居网

摘要: HomeKit 对象被保存在一个可以共享的 HomeKit 数据库里,它可以通过 HomeKit 框架被多个应英程序访问。所有 HomeKit 调用的方法都是异步写入的,并且这些方法都包含一个完成处理后的参数。如果这个方法处理成功了, ...

HomeKit 对象被保存在一个可以共享的 HomeKit 数据库里,它可以通过 HomeKit 框架被多个应英程序访问。所有 HomeKit 调用的方法都是异步写入的,并且这些方法都包含一个完成处理后的参数。如果这个方法处理成功了,你的应用将会在完成处理函数里更新本地对象。应用程序启动时,HomeKit 对象发生改变的并不能收到代理回调?法,只能接受处理完成后的回调函数。

想要观察其他应用程序启动时 HomeKit 对象的变化,请参阅:HomeKit Constants Reference

对象命名规则

HomeKit 对象的名字,例如 home、room 和 zone 对象都可以被 Siri 识别,这一点已经在文档中指出。以下几点是 HomeKit 对象的命名规则:

  • 对象名字在其命名空间内必须是唯一的。
  • 属于用户所有的 home 名字都在一个命名空间内。
  • 一个 home 对象及其所包含的对象在另一个命名空间内。
  • 名字只能包含数字、字母、空格以及省略号字符。
  • 名字必须以数字或者字母字符开始。
  • 在名字比较的时候,空格或者省略号是忽略的(例如 home1 和 home 1 同一个名字)。
  • 名字没有大小写之分。

想了用户可以使用哪些语言与 Siri 进行交互,请参阅Getting the Home Manager Object

在 Home 中增加一个 Room

使用 addRoomWithName:completionHandler: 异步方法可以在一个 home 中添加一个 room 对象。作为参数传到那个方法中的 room 的名字,必须是唯一独特的,并且是 Siri 可识别的 room 名字。

NSString *roomName = @"Living Room";[home addRoomWithName:roomName completionHandler:^(HMRoom*room, NSError *error) {if (error != nil) {// Failed to add a room to a home} else {// Successfully added a room to a home} }];

在 else 语句中,写入代码更新应用程序的视图。

发现配件

Accessories 封装了物理配件的状态,因此它不能被用户创建。想要允许用户给家添加新的配件,我们可以使 HMAccessoryBrowser 对象找到一个与 home 没有关联的配件。HMAccessoryBrower 对象在后台搜寻配件,当它找到配件的时候,使用委托来通知你的应用程序。只有在 startSearchingForNewAccessories 方法调用之后或者 stopSearchingForNewAccessories 方法调用之前,HMAccessoryBrowserDelegate 消息才被发送给代理对象。

发现 home 中的配件

1.在你的类接口中添加配件浏览器委托协议,并且添加一个配件浏览器属性。代码如下:

@interface EditHomeViewController ()@property HMAccessoryBrowser *accessoryBrowser;@end

用你自己的类名代替 EditHomeViewController

2.创建配件浏览器对象,并设置它的代理

self.accessoryBrowser = [[HMAccessoryBrowser alloc] init];self.accessoryBrowser.delegate = self;

3.开始搜寻配件

[self.accessoryBrowser startSearchingForNewAccessories];

4.将找到的配件添加到你的收藏里

- (void)accessoryBrowserHMAccessoryBrowser *)browserdidFindNewAccessoryHMAccessory *)accessory {// Update the UI per the new accessory; for example,reload a pickerview.[self.accessoryPicker reloadAllComponents];}

用你自己的代码实现上面的 accessoryBrowser:didFindNewAccessory:方法。 当然也可以实现 accessoryBrowser:didRemoveNewAccessory: 这个方法来移除配件,这个配件对你的视图或者收藏来说不再是新的。

5.停止搜寻配件

如果一个视图控制器正在开始搜寻配件,那么可以通过重写 viewWillDisappear:方法来停止搜寻配件。代码如下:

- (void)viewWillDisappearBOOL)animated {[self.accessoryBrowser stopSearchingForNewAccessories];}

注意: 在 WiFi 网络环境下,为了安全地获取新的并且能够被 HomeKit 发现的无线配件,请参阅Accessing Services and Characteristics

更改配件名称

使用 updateName:completionHandler: 异步方法可以改变配件的名称,代码如下:

[accessory updateName"Kid's Night Light"completionHandler:^(NSError *error) {if (error) {// Failed to change the name} else {// Successfully changed the name}}];为 Homes 和 Room 添加 Bridge(桥接口)

桥接口是配件中的一个特殊对象,它允许你和其他配件交流,但是不允许你直接和 HomeKit 交流。例如一个桥接口可以是控制多个灯的枢纽,它使用的是自己的通信协议,而不是 HomeKit 配件通信协议。想要给home添加多个桥接口 ,你可以按照 Adding Accessories to Homes and Rooms 中所描述的步骤,添加任何类型的配件到 home 中。当你给 home 添加一个桥接口时,在桥接口底层的配件也会被添加到 home 中。正如 Observing HomeKit Database Changes 中所描述的那样,每次更改通知设计模,home 的代理不会接收到桥接口的 home:didAddAccessory: 代理消息,而是接收一个有关于配件的 home:didAddAccessory:代理消息。在 home 中,要把桥接口后的配件和任何类型的配件看成一样的--例如,把它们加入配件列表的配置表中。相反的是,当你给 room 增添一个桥接口时,这个桥接口底层的配件并不会自动地添加到 room 中,原因是桥接口和它的的配件可以位于到不同的 room 中。

创建分区

分区 (HMZone) 是任意可选的房间(rooms)分组;例如楼上、楼下或者卧室。房间可以被添加到一个或者多个区域。

智能家居平台homekit创建 Homes 和添加 Accessories

可使用 addZoneWithName:completionHandler: 异步方法创建分区。所创建的作为参数传递到这个方法中分区的名称,在 home 中必须是唯一的,并且应该能被 Siri 识别。代码如下:

__block HMHome *home = self.home;NSString *zoneName = @"Upstairs";[home addZoneWithName:zoneName completionHandler:^(HMZone*zone, NSError *error){if (error) {// Failed to create zone} else {// Successfully created zone, now add the rooms}}];

可使用 addRoom:completionHandler:异步方法给分区添加一个 room,代码如下:

__block HMRoom *room = roomInHome;[zone addRoom:room completionHandler:^(NSError *error) {if (error) {// Failed to add room to zone} else {// Successfully added room to zone} }];




鲜花

握手

雷人

路过

鸡蛋
发表评论

最新评论

引用 智能佳装 2017-6-27 10:43
先收藏,以后备用
引用 lovehome 2017-7-6 13:24
非常有用,学习了,感谢

查看全部评论(2)

联系我们|小黑屋|手机版|Archiver|小葫芦智能家居网 ( 蜀ICP备10208193号-2  

GMT+8, 2019-1-23 22:37 , Processed in 0.030159 second(s), 29 queries .

Powered by Fcuhome.com

© 2012-2013 智能家居世界网

返回顶部