Cómo quitar un dispositivo

Quitar un dispositivo implica darlo de baja de la estructura. Un usuario puede hacerlo con la Google Home app (GHA), y una app puede dar de baja de forma programática un dispositivo para el hogar inteligente. Existen limitaciones en cuanto a qué dispositivos se pueden quitar. Además, quitar un dispositivo puede afectar la estructura y las experiencias del usuario de tu app.

Qué puedes quitar

Puedes quitar los siguientes dispositivos de forma programática a través de las APIs de Home:

  • Matter dispositivos para los que tu app tiene permisos
  • Matter puentes, siempre que tu app tenga acceso a todos los dispositivos conectados a través del puente Si quitas el puente, se quitarán todos los Matter dispositivos conectados a él.

Qué no puedes quitar

Los siguientes dispositivos no se pueden quitar de forma programática a través de las APIs de Home:

  • Matter dispositivos para los que tu app no tiene permisos de usuario
  • Dispositivos individuales conectados detrás de un Matter puente.
  • Cloud-to-cloud dispositivos vinculados.
  • Dispositivos de ruta doble (dispositivos que implementan Matter y Cloud-to-cloud)

Consideraciones importantes antes de quitar un dispositivo

Cuando tu app quita un dispositivo, se quita de toda la estructura, lo que afecta a todos los usuarios y a todas las apps, incluida la GHA. Según el tipo de dispositivo, puede haber efectos secundarios adicionales de dar de baja un dispositivo:

  • Dispositivos que implementan varios tipos de dispositivos: Si un dispositivo tiene varias funciones (por ejemplo, una luz inteligente que también funciona como un centro), quitarlo también quita todos los dispositivos asociados. La app debe informar al usuario si se verán afectadas varias funciones del dispositivo.
  • Historial del dispositivo: Borrar un dispositivo puede provocar que se quite su historial.
  • Superficies compartidas: Ten cuidado cuando borres dispositivos en superficies compartidas, ya que esto puede tener consecuencias no deseadas para otras personas.
  • Autenticación: La eliminación de dispositivos solo debe realizarse en superficies autenticadas, como un teléfono celular, no en dispositivos no autenticados como TVs. Si lo haces, incumples las Políticas para Desarrolladores de Google Home.

Cómo quitar un dispositivo

Verificar si un dispositivo es apto para quitarse es costoso y solo debe hacerse cuando sea necesario. Para verificar si un dispositivo es apto para quitarse, usa el siguiente comando:

swift let eligibility = try await device.decommissionEligibility

Dispositivos de Matter

Puedes quitar un dispositivo Matter de forma programática si el dispositivo no está detrás de un puente Matter.

Para quitar un Matter dispositivo, llama decommission() en él:

swift let decommissionedDeviceIDs = try await device.decommission()

Si la llamada no arroja un error, se realizó correctamente.

Puedes verificar si el ID del dispositivo se encuentra entre los que muestra decommission():

swift do { let decommissionedDeviceIDs = try await device.decommission() print("The following devices were decommissioned: \(decommissionedDeviceIDs)") } catch { print("An error occurred: \(error)") }

Dispositivos que no son de Matter

Los dispositivos que no son de Matter no se pueden quitar de forma programática. Para quitar un dispositivo que no es de Matter puedes emitir una solicitud de sincronización (consulta Solicitar sincronización), o borrar la integración de Cloud-to-cloud (consulta Borrar una integración de nube a nube lanzada).

Si llamas a decommission() en un dispositivo que no es Matter, se arroja un HomeError.

Una vez que quites un dispositivo que no es Matter, verifica la presencia del dispositivo para comprobar que se quitó correctamente:

swift guard try await !self.context.devices().list().contains(where: { $0.id == deviceID }) else { // The device still exists in Home APIs }