Remover um dispositivo

Remover um dispositivo envolve desativá-lo da estrutura. Um usuário pode fazer isso usando o Google Home app (GHA), e um app pode desativar um dispositivo de casa inteligente de forma programática. Há limitações quanto aos dispositivos que podem ser removidos. Além disso, a remoção de um dispositivo pode afetar a estrutura e as experiências do usuário no app.

O que você pode remover

É possível remover programaticamente os seguintes dispositivos usando as APIs Home:

  • Matter dispositivos em que seu app tem permissões.
  • Matter, desde que o app tenha acesso a todos os dispositivos conectados por ela. A remoção da ponte remove todos os dispositivos Matter conectados a ela.

O que não é possível remover

Os seguintes dispositivos não podem ser removidos de forma programática pelas APIs Home:

  • Matter dispositivos em que o app não tem permissões de usuário.
  • Dispositivos individuais conectados a uma ponte Matter.
  • Cloud-to-cloud dispositivos vinculados.
  • Dispositivos de caminho duplo (que implementam Matter e Cloud-to-cloud).

Considerações importantes antes de remover um dispositivo

Quando seu app remove um dispositivo, ele é removido de toda a estrutura, afetando todos os usuários e apps, incluindo o GHA. Dependendo do tipo de dispositivo, pode haver outros efeitos colaterais ao desativar um dispositivo:

  • Dispositivos que implementam vários tipos de dispositivos: se um dispositivo tiver várias funções, por exemplo, uma iluminação inteligente que também funciona como um hub, a remoção dele também remove todos os dispositivos associados. O app precisa informar ao usuário se várias funções do dispositivo serão afetadas.
  • Histórico do dispositivo: a exclusão de um dispositivo pode resultar na remoção do histórico dele.
  • Plataformas compartilhadas: tenha cuidado ao excluir dispositivos em plataformas compartilhadas, porque isso pode ter consequências indesejadas para outras pessoas.
  • Autenticação: a remoção de dispositivos só deve ser feita em plataformas autenticadas, como um smartphone, e não em dispositivos não autenticados, como TVs. Isso viola as políticas para desenvolvedores do Google Home.

Remover um dispositivo

Verificar a qualificação de um dispositivo para remoção é caro e só deve ser feito quando necessário. Para verificar se um dispositivo está qualificado para remoção, use o comando a seguir:

swift let eligibility = try await device.decommissionEligibility

Dispositivos Matter

É possível remover um dispositivo Matter de forma programática se ele não estiver atrás de uma ponte Matter.

Para remover um dispositivo Matter, chame decommission() nele:

swift let decommissionedDeviceIDs = try await device.decommission()

Se a chamada não gerar um erro, ela foi bem-sucedida.

Verifique se o ID do dispositivo está entre os retornados pelo decommission():

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

Dispositivos não Matter

Não é possível remover dispositivos que não são Matter de forma programática. Para remover um dispositivo que não é Matter, você pode emitir uma solicitação de sincronização (consulte Solicitar sincronização) ou excluir a integração do Cloud-to-cloud (consulte Excluir uma integração lançada de nuvem para nuvem).

Se você chamar decommission() em um dispositivo que não seja Matter, uma HomeError será gerada.

Depois de remover um dispositivo que não é Matter, verifique se ele foi removido:

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