一個動作集合 HMActionSet 和觸發(fā)器 HMTimerTrigger 允許你同時控制多個智能電器。比如,一個動作集合可能會在用戶上床休息之前執(zhí)行一組動作 HMAction。一個寫動作向一個特性寫入了值。動作集合中的動作是以不確定的順序執(zhí)行的。一個觸發(fā)器會在一個特定的時間出發(fā)一個動作集并可以重復(fù)執(zhí)行。每一個動作集合在一個家庭中都有唯一的名稱并可被 Siri 識別。
寫入動作會向一個服務(wù)的特性寫入值并被加入到動作集合中去。HMAction 類是 HMCharacteristicWriteAction 具體類的抽象基類。一個動作有一個相關(guān)聯(lián)的特性對象,你可以通過 Accessing Services and Characteristics 中描述的來獲取相關(guān)的服務(wù)和特性,然后創(chuàng)建這個 HMCharacteristicWriteAction。
為了創(chuàng)建一個動作,我們使用 HMCharacteristicWriteAction類中的initWithCharacteristic:targetValue:方法。
HMCharacteristicWriteAction *action = [[HMCharacteristicWriteAction alloc] initWithCharacteristic:characteristic targetValue:value];
在你的代碼中,你使用對應(yīng)的特性的期望來替換 value 參數(shù),并使用對應(yīng)的 HMCharacteristic 對象來替換 characteristic 參數(shù)。
一個動作集就是一個共同執(zhí)行的動作的集合。比如一個夜間動作集合可能包含關(guān)閉電燈,調(diào)低恒溫水平和鎖上房門。
為了創(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é)日彩燈,另外一個動作集來關(guān)閉所有的節(jié)日彩燈。為了打開所有的節(jié)日彩燈,發(fā)送executeActionSet:completionHandler:消息給 home 對象,并傳遞"打開節(jié)日彩燈"動作集。
觸發(fā)器會執(zhí)行一個或多個動作集。iOS會在后臺管理和運(yùn)行你的觸發(fā)器。HMTrigger 類是 HMTimerTrigger 具體類的抽象類。當(dāng)你創(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ā)時間必須設(shè)置在將來的某個時刻,第二個參數(shù)必須為 0。如果你設(shè)置了一個周期,周期的最小值是 5 分鐘,最大值是 5周。關(guān)于如何使用NSDateComponents和NSCalendar來設(shè)置周期,請閱讀Date and Time Programming Guide
2.添加一個動作集到觸發(fā)器。
使用 HMTrigger 基類方法 addActionSet:completionHandler:,來添加一個動作集到觸發(fā)器。
3.添加一個觸發(fā)器到家庭。
使用 HMHome 類中的addTrigger:completionHandler:方法來添加一個觸發(fā)器到家庭。
4.啟動觸發(fā)器。
新創(chuàng)建的觸發(fā)器默認(rèn)是未啟動的。需要使用 enable:complationHandler:方法啟動觸發(fā)器。
一個定時觸發(fā)器被啟動后,會周期性的運(yùn)行它的動作集。
更多建議: