Получение домашнего расположения
HomeKit позволяет пользователям создавать расположение для один или больше их домов. Дом (HMHome
) представляет единственное жилье, имеющее сеть аксессуаров. Данные дома принадлежат пользователю и могут быть получены доступ от любого из устройств на iOS пользователя. Пользователь может также совместно использовать дом с гостем, у которого есть более ограниченный доступ. Один дом определяется как основной дом и является значением по умолчанию домой для команд Siri, не указывающих дом.
Каждый дом может иметь многократные комнаты и аксессуары, добавленные к каждой комнате. Комната (HMRoom
) представляет отдельную комнату своими силами. Это имеет понятное имя, такое как «гостиная» или “кухня", которая может использоваться в командах Siri. Аксессуар (HMAccessory
) физическое домашнее устройство автоматизации, такое как устройство открывания гаражных ворот. Служба (HMService
) практическая услуга, предоставленная аксессуаром, таким как открытие и закрытие двери гаража или света на устройстве открывания гаражных ворот.
Если Ваша информация о кэшах приложения о расположении дома, это должно обновить ту информацию когда домашние изменения макета. Используйте a HMHomeManager
возразите для выборки HMHome
и связанные объекты от базы данных HomeKit. После выборки объектов с помощью APIs, описанного в этой главе, сохраните объекты синхронизируемыми с базой данных посредством обратных вызовов делегата, как описано в Наблюдении Изменений Базы данных HomeKit.
Получение домашнего объекта менеджера
Используйте домашнего менеджера, HMHomeManager
объект, к доступу домой, комнате, аксессуару, службе и другим объектам HomeKit. Сразу после создания домашнего менеджера, набор его делегат так, чтобы Вы были уведомлены, когда начальная выборка этих объектов завершена.
self.homeManager = [[HMHomeManager alloc] init]; |
self.homeManager.delegate = self; |
При создании домашнего объекта менеджера HomeKit начинает выбирать дома и связанные объекты — например, комната и объекты аксессуара — от базы данных HomeKit. В то время как HomeKit выбирает эти объекты, значение для домашнего менеджера primaryHome
свойство nil
, и homes
свойство является пустым массивом. Ваше приложение должно обработать случай, в котором пользователь еще не создал дом, но приложение не должно вести себя, как будто нет никаких домов, пока HomeKit не завершает начальную выборку. HomeKit отправляет homeManagerDidUpdateHomes:
обменивайтесь сообщениями делегату домашнего менеджера, когда выборка будет завершена.
Получение основного дома и набора домов
Для получения основного дома используйте primaryHome
свойство домашнего менеджера.
HMHome *home = self.homeManager.primaryHome; |
Используйте домашнего менеджера homes
свойство для получения всех домов пользователя; например, фактическое место жительства, загородный дом и офис. Каждый дом представлен отдельным домашним объектом.
HMHome *home; |
for (home in self.homeManager.homes){ |
… |
} |
Получение комнат в доме
Комнаты определяют физические расположения аксессуаров в доме. Для перечисления комнат в доме используйте дом rooms
свойство.
HMHome *home = self.homeManager.primaryHome; |
HMHome *room; |
for (room in home.rooms){ |
… |
} |
Получение аксессуаров в комнате
Аксессуары принадлежат дому, но присваиваются комнате в доме. Если пользователь не присваивает аксессуар комнате, аксессуар присваивается комнате по умолчанию, возвращенной roomForEntireHome
метод. Для перечисления аксессуаров в комнате используйте комнату accessories
свойство.
HMAccessory *accessory; |
for (accessory in room.accessories){ |
… |
} |
Если Вы выводите на экран информацию об аксессуаре или позволяете пользователю управлять аксессуаром, устанавливать делегата аксессуара и реализовывать вспомогательный методы делегата, как описано в Наблюдении Изменений в Аксессуарах.
Как только у Вас есть вспомогательное объект, можно получить доступ к его службам и их характеристикам, как описано в Accessing Services и Характеристиках.
Получение аксессуаров в доме
Для получения всех аксессуаров непосредственно от домашнего объекта, не перечисляя комнаты в доме (как описано в Получении Аксессуаров в Комнате) используйте accessories
метод в HMHome
класс.