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
}