一個動作集合HMActionSet和觸發(fā)器HMTimerTrigger允許你同時控制多個智能電器。比如,一個動作集合可能會在用戶上床休息之前執(zhí)行一組動作HMAction。一個寫動作向一個特性寫入了值。動作集合中的動作是以不確定的順序執(zhí)行的。一個觸發(fā)器會在一個特定的時間出發(fā)一個動作集并可以重復執(zhí)行。每一個動作集合在一個家庭中都有唯一的名稱并可被Siri識別。
創(chuàng)建寫入動作
寫入動作會向一個服務的特性寫入值并被加入到動作集合中去。HMAction類是HMCharacteristicWriteAction具體類的抽象基類。一個動作有一個相關聯的特性對象,你可以通過Accessing Services and Characteristics中描述的來獲取相關的服務和特性,然后創(chuàng)建這個HMCharacteristicWriteAction。
為了創(chuàng)建一個動作,我們使用HMCharacteristicWriteAction類中的initWithCharacteristic:targetValue:方法。
HMCharacteristicWriteAction?*action?=?[[HMCharacteristicWriteAction?alloc]?initWithCharacteristic:characteristic?targetValue:value];
在你的代碼中,你使用對應的特性的期望來替換value參數,并使用對應的HMCharacteristic對象來替換characteristic參數。
創(chuàng)建并執(zhí)行動作集
一個動作集就是一個共同執(zhí)行的動作的集合。比如一個夜間動作集合可能包含關閉電燈,調低恒溫水平和鎖上房門。
為了創(chuàng)建一個動作集我們使用addActionSetWithName:completionHandler:異步方法。
[self.home addActionSetWithName:@"NightTime" completionHandler:^(HMActionSet *actionSet, NSError *error) {
if (error == nil) {
// 成功添加了一個動作集
} else {
// 添加一個動作集失敗
}
}];
為了添加一個動作到動作集,我們使用addAction:completionHandler:異步方法。
[actionSet addAction:action completionHandler:^(NSError *error) {
if (error == nil) {
// 成功添加了一個動作到動作集
} else {
// 添加一個動作到動作集失敗
}
}];
想要移除一個動作,可使用removeAction:completionHandler:方法。
想要執(zhí)行一個動作集,可使用HMHome類的executeActionSet:completionHandler:方法。比如,用戶希望控制所有的節(jié)日彩燈。我們就創(chuàng)建一個動作集來打開所有的節(jié)日彩燈,另外一個動作集來關閉所有的節(jié)日彩燈。為了打開所有的節(jié)日彩燈,發(fā)送executeActionSet:completionHandler:消息給home對象,并傳遞"打開節(jié)日彩燈"動作集。
創(chuàng)建并開啟觸發(fā)器
觸發(fā)器會執(zhí)行一個或多個動作集。iOS會在后臺管理和運行你的觸發(fā)器。HMTrigger類是HMTimerTrigger具體類的抽象類。當你創(chuàng)建一個定時觸發(fā)器時,你需要指定觸發(fā)時間和觸發(fā)的周期。創(chuàng)建并開啟一個定時觸發(fā)器需要多個步驟來完成。
遵循下面幾步來創(chuàng)建并啟動一個定時觸發(fā)器
創(chuàng)建一個定時觸發(fā)器
1.創(chuàng)建定時觸發(fā)器。
self.trigger = [[HMTimerTrigger alloc] initWithName:name
fireDate:fireDate
timeZone:niL
recurrence:nil
recurrenceCalendar:nil];
觸發(fā)時間必須設置在將來的某個時刻,第二個參數必須為0.如果你設置了一個周期,周期的最小值是5分鐘,最大值是5周。關于如何使用NSDateComponents和NSCalendar來設置周期,請閱讀Date and Time Programming Guide
2. 添加一個動作集到觸發(fā)器。
使用HMTrigger基類方法addActionSet:completionHandler:,來添加一個動作集到觸發(fā)器。
3. 添加一個觸發(fā)器到家庭。
使用HMHome類中的addTrigger:completionHandler:方法來添加一個觸發(fā)器到家庭。
4. 啟動觸發(fā)器。
新創(chuàng)建的觸發(fā)器默認是未啟動的。需要使用enable:complationHandler:方法啟動觸發(fā)器。
一個定時觸發(fā)器被啟動后,會周期性的運行它的動作集。
更多建議: