Создание наборов действия и триггеров
Набор действия (HMActionSet
) и триггер (HMTimerTrigger
) позвольте Вам управлять многими аксессуарами сразу. Например, набор действия мог бы выполнить ряд действий (HMAction
) непосредственно перед тем, как пользователь ложится спать. Действие записи пишет значение в характеристику. Действия в наборе действия выполняются в неопределенном порядке. Триггер выполняет набор действия в данной дате и может повториться. Наборы действия имеют уникальные имена в доме и распознаны Siri.
Создание действий записи
Запишите, что действия пишут значения характеристик службы и добавляются к наборам действия. HMAction
класс является абстрактным суперклассом для HMCharacteristicWriteAction
конкретный подкласс. Действие имеет связанный характерный объект, таким образом, Вы получаете доступ к объекту службы и его характеристикам, как описано в Accessing Services и Характеристиках, для создания связанного HMCharacteristicWriteAction
объект.
Для создания действия записи используйте initWithCharacteristic:targetValue:
метод инициализации в HMCharacteristicWriteAction
класс.
HMCharacteristicWriteAction *action = [[HMCharacteristicWriteAction alloc] initWithCharacteristic:characteristic targetValue:value]; |
В Вашем коде замените value
параметр со значением Вы хотите записать, в зависимости от возможных значений для характеристики и замены characteristic
с HMCharacteristic
объект, представляющий характеристику, которую Вы хотите изменить.
Создание и выполнение наборов действия
Набор действия является набором действий, выполняющихся вместе; например, ночной набор действия мог бы включать действия, чтобы выключить световые сигналы, выключить температуру и двери блокировки.
Для создания набора действия используйте addActionSetWithName:completionHandler:
асинхронный метод.
[self.home addActionSetWithName:@"NightTime" completionHandler:^(HMActionSet *actionSet, NSError *error) { |
if (error == nil) { |
// Successfully added an action set |
} else { |
// Unable to add an action set |
} |
}]; |
Для добавления действия к набору действия используйте addAction:completionHandler:
асинхронный метод.
[actionSet addAction:action completionHandler:^(NSError *error) { |
if (error == nil) { |
// Successfully added an action to an action set |
} else { |
// Unable to add an action to an action set |
} |
}]; |
Для удаления действия используйте removeAction:completionHandler:
метод.
Для выполнения набора действия используйте executeActionSet:completionHandler:
метод в HMHome
класс. Например, пользователь хочет управлять всей гирляндой. Вы создаете один набор действия для включения всей гирлянды и другого набора действия для того, чтобы выключить всю гирлянду. Для включения гирлянды отправьте executeActionSet:completionHandler:
передайте к домашней передаче объектов “гирлянду на” установленном действии.
Создание и включение триггеров таймера
Триггеры выполняют один или несколько наборов действия. iOS управляет и выполняет триггеры для Вас в фоновом режиме. HMTrigger
класс является абстрактным суперклассом для HMTimerTrigger
конкретный подкласс. При создании триггера таймера Вы указываете дату огня и дополнительную информацию о повторении. Создание и включение триггера таймера являются многоступенчатым процессом.
Создать и включить триггер таймера
Создайте триггер таймера.
self.trigger = [[HMTimerTrigger alloc] initWithName:name
fireDate:fireDate
timeZone:nil
recurrence:nil
recurrenceCalendar:nil];
Дата огня должна быть в будущем, и значение секунд должно быть нулем. При указании повторения минимальный интервал составляет пять минут, и максимальный интервал составляет пять недель. Указать повторение с помощью
NSDateComponents
иNSCalendar
параметры, считайте Руководство по программированию Даты и времени.Добавьте, что действие устанавливает в триггер.
Используйте
HMTrigger
метод суперкласса,addActionSet:completionHandler:
, добавить набор действия к триггеру.Добавьте триггер к дому.
Используйте
addTrigger:completionHandler:
метод вHMHome
класс для добавления триггера к дому.Включите триггер.
Недавно создаваемые триггерные объекты отключены по умолчанию. Используйте
enable:completionHandler:
метод для включения триггера.
Включенный триггер таймера выполнит свои наборы действия в следующей дате огня.