A remoção de um dispositivo envolve a desativação dele na estrutura. Um usuário pode fazer isso usando o Google Home app (GHA), e um app pode desativar programaticamente um dispositivo de casa inteligente. Há limitações quanto aos dispositivos que podem ser removidos. Além disso, a remoção de um dispositivo pode afetar sua estrutura e as experiências do usuário no app.
O que você pode remover
É possível remover programaticamente os seguintes dispositivos pelas APIs Home:
- Matter dispositivos para os quais seu app tem permissões.
- Matter bridges, desde que seu app tenha acesso a todos os dispositivos conectados pelo bridge. A remoção do bridge remove todos os Matter dispositivos conectados a ele.
O que não é possível remover
Os seguintes dispositivos não podem ser removidos programaticamente pelas APIs Home:
- Matter dispositivos para os quais seu app não tem permissões de usuário.
- Dispositivos individuais conectados atrás de um Matter bridge.
- Cloud-to-cloud dispositivos vinculados.
- Dispositivos de caminho duplo (dispositivos 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 da desativação:
- Dispositivos que implementam vários tipos de dispositivo: 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.
- Superfícies compartilhadas: tenha cuidado ao excluir dispositivos em superfícies compartilhadas, porque isso pode ter consequências indesejadas para outras pessoas.
- Autenticação: a remoção do dispositivo só pode ser realizada em superfícies 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 pode ser removido, use o seguinte comando:
swift
let eligibility = try await device.decommissionEligibility
Dispositivos Matter
É possível remover um dispositivo Matter programaticamente se o dispositivo não estiver atrás de um bridge Matter.
Para remover um Matter dispositivo, 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 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
Dispositivos não-Matter não podem ser removidos programaticamente. Para remover um dispositivo não Matter Matter, você pode emitir uma solicitação de sincronização (consulte Solicitar sincronização), ou excluir a integração Cloud-to-cloud de nuvem para nuvem (consulte Excluir uma integração de nuvem para nuvem lançada).
Se você chamar decommission() em um
dispositivo não-Matter, um HomeError
será gerado.
Depois de remover um dispositivo não-Matter verifique a presença dele para confirmar se a remoção foi bem-sucedida:
swift
guard try await !self.context.devices().list().contains(where: { $0.id == deviceID })
else {
// The device still exists in Home APIs
}