La rimozione di un dispositivo comporta la sua disattivazione dalla struttura. Un utente può eseguire questa operazione utilizzando Google Home app (GHA) e un'app può ritirare in modo programmatico un dispositivo per la smart home. Esistono limitazioni in merito ai dispositivi che possono essere rimossi. Inoltre, la rimozione di un dispositivo può influire sulla struttura e sulle esperienze utente della tua app.
Cosa puoi rimuovere
Puoi rimuovere i seguenti dispositivi a livello di programmazione tramite le API Home:
- Matter dispositivi per i quali la tua app dispone delle autorizzazioni.
- Matter, a condizione che la tua app abbia accesso a tutti i dispositivi connessi tramite il bridge. La rimozione del bridge comporta la rimozione di tutti i dispositivi Matter ad esso connessi.
- Videocamere e campanelli supportati, incluse le videocamere e i campanelli Google Nest compatibili con Matter e le videocamere partner compatibili. Per informazioni dettagliate sui modelli supportati e non supportati, vedi Videocamere e campanelli.
Elementi che non puoi rimuovere
I seguenti dispositivi non possono essere rimossi in modo programmatico tramite le API Home:
- Matter dispositivi per i quali la tua app non dispone delle autorizzazioni utente.
- Singoli dispositivi connessi dietro un bridge Matter.
- Cloud-to-cloud dispositivi collegati.
- Dispositivi dual-path non videocamere (dispositivi che implementano sia Matter che Cloud-to-cloud, diversi da videocamere e campanelli supportati).
- Videocamere e campanelli non supportati, inclusi gli smart display con videocamere integrate e le videocamere legacy che non supportano Matter (vedi Videocamere e campanelli).
Considerazioni importanti prima di rimuovere un dispositivo
Quando la tua app rimuove un dispositivo, questo viene rimosso dall'intera struttura, interessando tutti gli utenti e tutte le app, incluso GHA. A seconda del tipo di dispositivo, potrebbero verificarsi ulteriori effetti collaterali della disattivazione di un dispositivo:
- Se un dispositivo offre più funzioni, ad esempio una luce smart che funge anche da hub, la sua rimozione comporta anche la rimozione di tutti i dispositivi associati. L'app deve informare l'utente se sono interessate più funzioni del dispositivo.
- La rimozione di una videocamera o di un campanello elimina definitivamente tutta la cronologia video 24/7, la cronologia video degli eventi, i clip registrati e i dati della raccolta di volti riconosciuti associati a quella videocamera nell'intera casa.
- Il ritiro di una videocamera non annulla gli abbonamenti attivi, ad esempio Google Home Premium o i servizi di monitoraggio dei partner. Gli abbonamenti continuano fino all'annullamento da parte dell'utente.
- Quando viene ritirata una videocamera o un campanello, la piattaforma Home APIs mostra all'utente una schermata di conferma gestita da Google che spiega che la cronologia video verrà eliminata definitivamente. L'utente deve confermare questo prompt prima che il dispositivo venga rimosso.
- Fai attenzione quando elimini i dispositivi dalle superfici condivise, perché ciò può avere conseguenze impreviste per gli altri.
- La rimozione del dispositivo deve essere eseguita solo su piattaforme autenticate, ad esempio un cellulare, non su dispositivi non autenticati come le TV. In questo modo, violi le Norme per gli sviluppatori di Google Home.
Rimuovere un dispositivo
La verifica dell'idoneità di un dispositivo alla rimozione è costosa e deve essere eseguita solo quando necessario. Per verificare se un dispositivo è idoneo per la rimozione, utilizza il seguente comando:
val eligibility = device.checkDecommissionEligibility() if (eligibility is DecommissionEligibility.Ineligible) { println("The device cannot be decommissioned.") } else if (eligibility is DecommissionEligibility.EligibleWithSideEffects) { println("The device can be decommissioned but there will be side effects on other devices.") } else if (eligibility is DecommissionEligibility.Eligible) { println("The device can be decommissioned.") }
Dispositivi Matter
Puoi rimuovere un dispositivo Matter a livello di programmazione se il dispositivo non si trova dietro un bridge Matter.
Per rimuovere un dispositivo Matter, chiama
decommissionDevice()
dal dispositivo:
val decommissionedDeviceIds = device.decommissionDevice()
Se la chiamata non genera un errore, l'operazione è riuscita.
Puoi verificare se l'ID del dispositivo è tra quelli restituiti da
decommissionDevice()
:
if (decommissionedDeviceIds.contains(deviceId)) { println("Decommission successful!") } else { println("Decommission failed!") }
Videocamere e campanelli
Puoi rimuovere le videocamere e i campanelli supportati in modo programmatico utilizzando
decommissionDevice()
.
I modelli supportati includono:
- Google Nest Cam (indoor, wired)
- Google Nest Cam (outdoor or indoor, battery)
- Google Nest Cam with floodlight
- Google Nest Doorbell (battery)
- Google Nest Doorbell (wired)
- Videocamere e campanelli partner compatibili (ad esempio Walmart onn.)
I seguenti dispositivi videocamera e campanello non possono essere ritirati programmaticamente:
- Smart display con videocamere integrate, come Google Nest Hub Max.
- Videocamere e campanelli Nest legacy che non supportano Matter e si connettono solo tramite servizi cloud, come Nest Cam Indoor (1ª gen.), Nest Cam Outdoor (1ª gen.), Nest Cam IQ e Nest Doorbell (con cavo, 1ª gen.).
- Videocamere e campanelli di terze parti Cloud-to-cloud collegati.
Quando la tua app avvia il ritiro di una videocamera o di un campanello, la piattaforma mostra all'utente una schermata di conferma gestita da Google. Questa schermata informa l'utente che la rimozione della videocamera elimina definitivamente tutta la cronologia video 24/7, la cronologia degli eventi, i clip e i dati della raccolta di volti riconosciuti associati al dispositivo nell'intera struttura.
Se l'utente ignora o annulla la schermata di conferma,decommissionDevice() genera un HomeException.
Il ritiro di una videocamera non annulla gli abbonamenti attivi (ad esempio Google Home Premium). Gli utenti devono annullare gli abbonamenti separatamente tramite il fornitore dell'abbonamento.
kotlin
try {
val decommissionedDeviceIds = device.decommissionDevice()
if (decommissionedDeviceIds.contains(device.id)) {
// Camera was successfully decommissioned
}
} catch (e: HomeException) {
// Handle cancellation or decommission error
}
Dispositivi non Matter
I dispositivi non Matter (diversi da videocamere e campanelli supportati) non possono essere rimossi a livello di programmazione. Per rimuovere altri dispositivi non-Matter, puoi inviare una richiesta di sincronizzazione (vedi Richiedi sincronizzazione) o eliminare l'integrazione Cloud-to-cloud (vedi Eliminare un'integrazione cloud-to-cloud avviata).
Se chiami decommissionDevice()
su un dispositivo
non Matter non supportato, viene generata un'eccezione
HomeException.
Dopo aver rimosso un dispositivo non Matter, verifica la presenza del dispositivo per accertarti che sia stato rimosso correttamente:
var removedDevice: HomeDevice? = null runBlockingCustom { try { removedDevice = homeManager.devices().get(deviceId) } catch (exception: Exception) { println("removal successful!") } } if (removedDevice != null) { println("removal failed!") }