Демонтаж устройства подразумевает его вывод из эксплуатации. Пользователь может сделать это с помощью Google Home app (GHA) , а приложение может программно вывести из эксплуатации устройство умного дома. Существуют ограничения на то, какие устройства можно удалить. Кроме того, удаление устройства может повлиять на состояние здания и пользовательский опыт работы с приложением.
Что можно удалить
С помощью API Home вы можете программно удалить следующие устройства:
- Matter устройства, для которых ваше приложение имеет разрешения.
- Для подключения устройств Matter через мост необходимо, чтобы ваше приложение имело доступ ко всем устройствам, подключенным через этот мост. Удаление моста приведет к удалению всех подключенных к нему устройств Matter .
То, что нельзя удалить
Следующие устройства нельзя удалить программно через API Home:
- Matter устройств, для которых у вашего приложения отсутствуют права доступа пользователей.
- Отдельные устройства, соединенные за мостом Matter .
- Устройства, связанные между собой Cloud-to-cloud .
- Устройства с двойным каналом связи (устройства, реализующие как передачу Matter , так и Cloud-to-cloud ).
Важные моменты, которые следует учесть перед удалением устройства.
Когда ваше приложение удаляет устройство, оно удаляется из всей структуры, затрагивая всех пользователей и все приложения, включая GHA . В зависимости от типа устройства, могут возникнуть дополнительные побочные эффекты от его вывода из эксплуатации:
- Устройства, реализующие несколько типов функций: Если устройство выполняет несколько функций — например, умный светильник, который также выступает в качестве концентратора, — его удаление также приведет к удалению всех связанных с ним устройств. Приложение должно информировать пользователя, если это повлияет на работу нескольких функций устройства.
- История устройства: Удаление устройства может привести к удалению истории этого устройства.
- Общие поверхности: Будьте осторожны при удалении устройств на общих поверхностях, поскольку это может иметь непредвиденные последствия для других пользователей.
- Аутентификация: Извлечение устройства следует производить только на аутентифицированных поверхностях, таких как мобильный телефон, а не на неаутентифицированных устройствах, например, телевизорах. Это нарушает правила для разработчиков Google Home .
Извлечь устройство
Проверка возможности удаления устройства — дорогостоящий процесс, который следует проводить только в случае необходимости. Чтобы проверить возможность удаления устройства, используйте следующую команду:
swift let eligibility = try await device.decommissionEligibilityМатериальные устройства
Если устройство Matter не находится за мостом Matter , его можно удалить программным способом.
Чтобы удалить устройство Matter , вызовите для него decommission() :
swift let decommissionedDeviceIDs = try await device.decommission()Если вызов не вызывает ошибку, значит, он выполнен успешно.
Вы можете проверить, входит ли идентификатор устройства в число идентификаторов, возвращаемых функцией decommission() :
swift do { let decommissionedDeviceIDs = try await device.decommission() print("The following devices were decommissioned: \(decommissionedDeviceIDs)") } catch { print("An error occurred: \(error)") }Устройства, не являющиеся материей
Устройства, не относящиеся к Matter , нельзя удалить программным способом. Для удаления устройства, не относящегося Matter , можно отправить запрос на синхронизацию (см. раздел «Запрос на синхронизацию ») или удалить интеграцию Cloud-to-cloud (см. раздел «Удаление запущенной интеграции между облаками »).
При вызове функции decommission() на устройстве, не относящемся Matter , будет выброшено исключение HomeError .
После удаления устройства, не относящегося Matter , проверьте наличие этого устройства, чтобы убедиться в его успешном удалении:
swift guard try await !self.context.devices().list().contains(where: { $0.id == deviceID }) else { // The device still exists in Home APIs }Многоисточниковые устройства
Многоисточниковые устройства — это устройства, использующие как Cloud-to-cloud , так и API Matter . Если вы проверите возможность вывода такого устройства из эксплуатации, вы получите сообщение DecommissionIneligibleReason.multiSourceDevice , указывающее на то, что, поскольку устройство является многоисточниковым, его нельзя вывести из эксплуатации.
Для демонтажа устройства с несколькими источниками сигнала выполните следующую процедуру:
- Удалите связь Cloud-to-cloud , как описано в разделе «Устройства, не являющиеся материей» .
- Выведите из эксплуатации устройство Matter , как описано в разделе «Устройства Matter» .
Последовательность этих шагов важна. Если вы попытаетесь вывести устройство Matter из эксплуатации до удаления связи Cloud-to-cloud , будет выдана HomeError .