课程表

HomeKit课程

工具箱
速查手册

创建动作集和触发器

当前位置:免费教程 » 移动开发 » HomeKit

一个动作集合HMActionSet和触发器HMTimerTrigger允许你同时控制多个智能电器。比如,一个动作集合可能会在用户上床休息之前执行一组动作HMAction。一个写动作向一个特性写入了值。动作集合中的动作是以不确定的顺序执行的。一个触发器会在一个特定的时间出发一个动作集并可以重复执行。每一个动作集合在一个家庭中都有唯一的名称并可被Siri识别。

69.png

创建写入动作

写入动作会向一个服务的特性写入值并被加入到动作集合中去。HMAction类是HMCharacteristicWriteAction具体类的抽象基类。一个动作有一个相关联的特性对象,你可以通过Accessing Services and Characteristics中描述的来获取相关的服务和特性,然后创建这个HMCharacteristicWriteAction

为了创建一个动作,我们使用HMCharacteristicWriteAction类中的initWithCharacteristic:targetValue:方法。

  1. HMCharacteristicWriteAction *action = [[HMCharacteristicWriteAction alloc] initWithCharacteristic:characteristic targetValue:value];

在你的代码中,你使用对应的特性的期望来替换value参数,并使用对应的HMCharacteristic对象来替换characteristic参数。

创建并执行动作集

一个动作集就是一个共同执行的动作的集合。比如一个夜间动作集合可能包含关闭电灯,调低恒温水平和锁上房门。

为了创建一个动作集我们使用addActionSetWithName:completionHandler:异步方法。

  1. [self.home addActionSetWithName:@"NightTime" completionHandler:^(HMActionSet *actionSet, NSError *error) {
  2. if (error == nil) {
  3. // 成功添加了一个动作集
  4. } else {
  5. // 添加一个动作集失败
  6. }
  7. }];

为了添加一个动作到动作集,我们使用addAction:completionHandler:异步方法。

  1. [actionSet addAction:action completionHandler:^(NSError *error) {
  2. if (error == nil) {
  3. // 成功添加了一个动作到动作集
  4. } else {
  5. // 添加一个动作到动作集失败
  6. }
  7. }];

想要移除一个动作,可使用removeAction:completionHandler:方法。

想要执行一个动作集,可使用HMHome类的executeActionSet:completionHandler:方法。比如,用户希望控制所有的节日彩灯。我们就创建一个动作集来打开所有的节日彩灯,另外一个动作集来关闭所有的节日彩灯。为了打开所有的节日彩灯,发送executeActionSet:completionHandler:消息给home对象,并传递"打开节日彩灯"动作集。

创建并开启触发器

触发器会执行一个或多个动作集。iOS会在后台管理和运行你的触发器。HMTrigger类是HMTimerTrigger具体类的抽象类。当你创建一个定时触发器时,你需要指定触发时间和触发的周期。创建并开启一个定时触发器需要多个步骤来完成。

遵循下面几步来创建并启动一个定时触发器

创建一个定时触发器

1.创建定时触发器。

  1. self.trigger = [[HMTimerTrigger alloc] initWithName:name
  2. fireDate:fireDate
  3. timeZone:niL
  4. recurrence:nil
  5. recurrenceCalendar:nil];

触发时间必须设置在将来的某个时刻,第二个参数必须为0.如果你设置了一个周期,周期的最小值是5分钟,最大值是5周。关于如何使用NSDateComponentsNSCalendar来设置周期,请阅读Date and Time Programming Guide

2. 添加一个动作集到触发器。

使用HMTrigger基类方法addActionSet:completionHandler:,来添加一个动作集到触发器。

3. 添加一个触发器到家庭。

使用HMHome类中的addTrigger:completionHandler:方法来添加一个触发器到家庭。

4. 启动触发器。

新创建的触发器默认是未启动的。需要使用enable:complationHandler:方法启动触发器。

一个定时触发器被启动后,会周期性的运行它的动作集。

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号