Wenn ein Gerät entfernt wird, wird es aus der Struktur entfernt. Nutzer können dies über die Google Home app (GHA) tun. Apps können Smart-Home-Geräte auch programmatisch entfernen. Es gibt Einschränkungen hinsichtlich der Geräte, die entfernt werden können. Außerdem kann sich das Entfernen eines Geräts auf die Struktur und die Nutzererfahrung für deine App auswirken.
Was entfernt werden kann
Du kannst die folgenden Geräte programmatisch über die Home APIs entfernen:
- Matter Geräte, für die deine App Berechtigungen hat.
- Matter Bridges, sofern deine App Zugriff auf alle Geräte hat, die über die Bridge verbunden sind. Wenn du die Bridge entfernst, werden auch alle Matter damit verbundenen Geräte entfernt.
Was nicht entfernt werden kann
Die folgenden Geräte können nicht programmatisch über die Home APIs entfernt werden:
- Matter Geräte, für die deine App keine Nutzerberechtigungen hat.
- Einzelne Geräte, die hinter einer Matter Bridge verbunden sind.
- Cloud-to-cloud verknüpfte Geräte.
- Geräte mit zwei Pfaden (Geräte, die sowohl Matter als auch Cloud-to-cloudimplementieren).
Wichtige Überlegungen vor dem Entfernen eines Geräts
Wenn deine App ein Gerät entfernt, wird es aus der gesamten Struktur entfernt. Das wirkt sich auf alle Nutzer und alle Apps aus, einschließlich der GHA. Je nach Gerätetyp kann das Entfernen eines Geräts zusätzliche Nebenwirkungen haben:
- Geräte, die mehrere Gerätetypen implementieren: Wenn ein Gerät mehrere Funktionen hat, z. B. eine smarte Lampe, die auch als Hub fungiert, werden beim Entfernen auch alle zugehörigen Geräte entfernt. Die App sollte den Nutzer darüber informieren, wenn mehrere Gerätefunktionen betroffen sind.
- Geräteverlauf: Wenn du ein Gerät löschst, wird möglicherweise auch der Verlauf des Geräts entfernt.
- Gemeinsame Oberflächen: Sei vorsichtig, wenn du Geräte auf gemeinsamen Oberflächen löschst, da dies unbeabsichtigte Folgen für andere haben kann.
- Authentifizierung: Das Entfernen von Geräten sollte nur auf authentifizierten Oberflächen wie einem Mobilgerät und nicht auf nicht authentifizierten Geräten wie Fernsehern erfolgen. Andernfalls liegt ein Verstoß gegen die Google Home-Richtlinien für Entwickler vor.
Gerät entfernen
Die Prüfung, ob ein Gerät entfernt werden kann, ist aufwendig und sollte nur bei Bedarf durchgeführt werden. Verwende den folgenden Befehl, um zu prüfen, ob ein Gerät entfernt werden kann:
swift
let eligibility = try await device.decommissionEligibility
Matter-Geräte
Du kannst ein Matter Gerät programmatisch entfernen, wenn es sich nicht hinter einer Matter Bridge befindet.
Rufe
decommission() auf, um ein Matter Gerät zu entfernen:
swift
let decommissionedDeviceIDs = try await device.decommission()
Wenn der Aufruf keinen Fehler auslöst, war er erfolgreich.
Du kannst prüfen, ob die Geräte-ID zu den von decommission() zurückgegebenen IDs gehört:
swift
do {
let decommissionedDeviceIDs = try await device.decommission()
print("The following devices were decommissioned: \(decommissionedDeviceIDs)")
} catch {
print("An error occurred: \(error)")
}
Nicht-Matter-Geräte
Nicht-Matter Geräte können nicht programmatisch entfernt werden. Wenn du ein Nicht-Matter Gerät entfernen möchtest, kannst du eine Synchronisierungsanfrage senden (siehe Synchronisierung anfordern) oder die Cloud-to-cloud Integration löschen (siehe Gestartete Cloud-to-Cloud Integration löschen).
Wenn du decommission() für ein
Nicht-Matter Gerät aufrufst, wird ein HomeError
ausgelöst.
Nachdem du ein Nicht-Matter Gerät entfernt hast, prüfe, ob es noch vorhanden ist, um zu bestätigen, dass es erfolgreich entfernt wurde:
swift
guard try await !self.context.devices().list().contains(where: { $0.id == deviceID })
else {
// The device still exists in Home APIs
}