Rimuovere un dispositivo

La rimozione di un dispositivo comporta la sua disattivazione dalla struttura. Un utente può farlo utilizzando Google Home app (GHA), e un'app può disattivare a livello di programmazione un dispositivo per la smart home. Esistono limitazioni relative ai dispositivi che possono essere rimossi. Inoltre, la rimozione di un dispositivo può influire sulla struttura e sulle esperienze utente per la tua app.

Cosa puoi rimuovere

Puoi rimuovere a livello di programmazione i seguenti dispositivi tramite le API Home:

  • Matter dispositivi per i quali la tua app dispone delle autorizzazioni.
  • Matter bridge, 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 Matter dispositivi a esso collegati.

Cosa non puoi rimuovere

I seguenti dispositivi non possono essere rimossi a livello di programmazione tramite le API Home:

  • Matter dispositivi per i quali la tua app non dispone delle autorizzazioni utente.
  • Singoli dispositivi connessi dietro un Matter bridge.
  • Cloud-to-cloud dispositivi collegati.
  • Dispositivi a doppio percorso (dispositivi che implementano sia Matter sia Cloud-to-cloud).

Considerazioni importanti da leggere 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, inclusa la GHA. A seconda del tipo di dispositivo, potrebbero esserci effetti collaterali aggiuntivi della disattivazione di un dispositivo:

  • Dispositivi che implementano più tipi di dispositivi: se un dispositivo ha più funzioni, ad esempio una luce intelligente che funge anche da hub, la sua rimozione comporta anche la rimozione di tutti i dispositivi associati. L'app deve informare l'utente se verranno interessate più funzioni del dispositivo.
  • Cronologia dei dispositivi: l'eliminazione di un dispositivo potrebbe comportare la rimozione della cronologia del dispositivo.
  • Superfici condivise: fai attenzione quando elimini i dispositivi sulle superfici condivise, perché questa operazione può avere conseguenze impreviste per gli altri.
  • Autenticazione: la rimozione del dispositivo deve essere eseguita solo su superfici autenticate, come un cellulare, non su dispositivi non autenticati come le TV. In caso contrario, si violano le Norme per gli sviluppatori di Google Home.

Rimuovere un dispositivo

Verificare l'idoneità di un dispositivo alla rimozione è costoso e deve essere eseguito solo quando necessario. Per verificare se un dispositivo è idoneo alla rimozione, utilizza il seguente comando:

swift let eligibility = try await device.decommissionEligibility

Dispositivi Matter

Puoi rimuovere un Matter dispositivo a livello di programmazione se il dispositivo non si trova dietro un bridge Matter.

Per rimuovere un Matter dispositivo, chiama decommission() su di esso:

swift let decommissionedDeviceIDs = try await device.decommission()

Se la chiamata non genera un errore, l'operazione è andata a buon fine.

Puoi verificare se l'ID del dispositivo è tra quelli restituiti da decommission():

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

Dispositivi non Matter

I dispositivi non-Matter non possono essere rimossi a livello di programmazione. Per rimuovere un dispositivo non-Matter puoi inviare una richiesta di sincronizzazione (vedi Richiedere la sincronizzazione) o eliminare l'integrazione Cloud-to-cloud (vedi Eliminare un'integrazione da cloud a cloud lanciata).

Se chiami decommission() su un non-Matter dispositivo, viene generato un HomeError.

Dopo aver rimosso un dispositivo non-Matter Matter, verifica la presenza del dispositivo per assicurarti che sia stato rimosso correttamente:

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