Удалить устройство

Удаление устройства подразумевает его вывод из эксплуатации. Пользователь может сделать это через Google Home app (GHA) , а приложение может программно вывести из эксплуатации устройство умного дома. Существуют ограничения на количество устройств, которые можно удалить. Кроме того, удаление устройства может повлиять на структуру и пользовательский опыт использования приложения.

Что можно удалить

Через Home API можно программно удалить следующие устройства:

  • Устройства Matter для которых у вашего приложения есть разрешения.
  • Мосты Matter , при условии, что ваше приложение имеет доступ ко всем устройствам, подключенным через мост. Удаление моста приведет к удалению всех подключенных к нему устройств Matter .

Что нельзя удалить

Следующие устройства невозможно удалить программно через Home API:

  • Устройства 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 (см. Удаление запущенной интеграции 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 }

Устройства с несколькими источниками

Устройства с несколькими источниками — это устройства, использующие API как Cloud-to-cloud , так и Matter . При проверке возможности списания такого устройства вы получите ошибку DecommissionIneligibleReason.multiSourceDevice , указывающую на то, что устройство не может быть списано, поскольку оно имеет несколько источников.

Чтобы удалить устройство с несколькими источниками, выполните следующую процедуру:

  1. Удалите связь Cloud-to-cloud , как описано в разделе «Устройства Non-Matter» .
  2. Выведите из эксплуатации устройство Matter , как описано в разделе Устройства Matter .

Порядок этих шагов важен. При попытке вывести устройство Matter из эксплуатации до удаления связи Cloud-to-cloud возникнет ошибка HomeError .