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 do hub remove todos os dispositivos Matter conectados a ele.
O que você não pode remover
Os seguintes dispositivos não podem ser removidos de forma programática pelas APIs Home:
- Matter dispositivos para os quais seu aplicativo não possui 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, a desativação de um aparelho pode ter efeitos colaterais adicionais:
- Dispositivos que implementam vários tipos de dispositivos: se um dispositivo tiver várias funções, por exemplo, uma luz inteligente que também funciona como um hub, a remoção dele também remove todos os dispositivos associados. O aplicativo deve informar o usuário caso várias funções do dispositivo sejam 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
Você pode remover um dispositivo Matter programaticamente se o dispositivo 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.
Você pode verificar se o ID do dispositivo está entre os retornados por 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 não-Matter, você pode emitir uma solicitação de sincronização (consulte Solicitar sincronização) ou excluir a integração Cloud-to-cloud (consulte Excluir uma integração nuvem-para-nuvem iniciada).
Se você chamar decommission() em um dispositivo
não 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
}
Dispositivos com várias fontes
Os dispositivos de várias origens usam as APIs Cloud-to-cloud e Matter. Se você verificar a qualificação para desativação
de um dispositivo desse tipo, vai receber um
DecommissionIneligibleReason.multiSourceDevice,
indicando que, como o dispositivo é de várias fontes, ele não pode ser desativado.
Para remover um dispositivo de várias origens, siga este procedimento:
- Remova a associação Cloud-to-cloud conforme descrito em Dispositivos não-matéria.
- Desative o dispositivo Matter conforme descrito em Dispositivos Matter.
A ordem dessas etapas é importante. Se você tentar
desativar o dispositivo Matter antes de remover a
associação Cloud-to-cloud, um HomeError
será gerado.