הסרת מכשיר כוללת הוצאה שלו משימוש במבנה. משתמש יכול לעשות זאת באמצעות Google Home app (GHA), ואפליקציה יכולה להוציא משימוש מכשיר לבית חכם באופן פרוגרמטי. יש מגבלות לגבי המכשירים שאפשר להסיר. בנוסף, הסרת מכשיר יכולה להשפיע על המבנה ועל חוויית המשתמש באפליקציה.
מה אפשר להסיר
אפשר להסיר את המכשירים הבאים באופן אוטומטי באמצעות ממשקי ה-API של Home:
- Matter מכשירים שלגביהם לאפליקציה שלכם יש הרשאות.
- גשרים של Matter, בתנאי שלאפליקציה שלכם יש גישה לכל המכשירים שמחוברים דרך הגשר. הסרת הגשר מסירה את כל המכשירים של Matter שמחוברים אליו.
מה אי אפשר להסיר
אי אפשר להסיר את המכשירים הבאים באופן פרוגרמטי באמצעות ממשקי ה-API של Home:
- Matter מכשירים שבהם לאפליקציה שלך חסרות הרשאות משתמש.
- מכשירים פרטניים שמחוברים מאחורי גשר Matter.
- Cloud-to-cloud מכשירים מקושרים.
- מכשירים עם נתיב כפול (מכשירים שמטמיעים גם את Matter וגם את Cloud-to-cloud).
שיקולים חשובים לפני הסרת מכשיר
כשמסירים מכשיר מהאפליקציה, הוא מוסר מכל המבנה, וזה משפיע על כל המשתמשים וכל האפליקציות, כולל GHA. בהתאם לסוג המכשיר, יכול להיות שיהיו תופעות לוואי נוספות להוצאה משימוש של מכשיר:
- מכשירים שמיישמים כמה סוגי מכשירים: אם למכשיר יש כמה פונקציות – למשל, נורת תאורה חכמה שמשמשת גם כרכזת – הסרת המכשיר תגרום להסרה של כל המכשירים המשויכים. האפליקציה צריכה להודיע למשתמש אם יושפעו כמה פונקציות במכשיר.
- היסטוריית המכשיר: מחיקת מכשיר עלולה לגרום להסרת ההיסטוריה של המכשיר.
- אזורי עבודה משותפים: חשוב להיזהר כשמוחקים מכשירים באזורי עבודה משותפים, כי לפעולה כזו יכולות להיות השלכות לא רצויות על משתמשים אחרים.
- אימות: צריך להסיר מכשירים רק בממשקים מאומתים, כמו טלפון נייד, ולא במכשירים לא מאומתים כמו טלוויזיות. פעולה כזו מהווה הפרה של המדיניות למפתחים של Google Home.
הסרת מכשיר
בדיקת הזכאות של מכשיר להסרה היא פעולה יקרה, ולכן צריך לבצע אותה רק כשצריך. כדי לבדוק אם מכשיר זכאי להסרה, משתמשים בפקודה הבאה:
swift
let eligibility = try await device.decommissionEligibility
מכשירים בתקן Matter
אפשר להסיר מכשיר Matter באופן אוטומטי אם המכשיר לא נמצא מאחורי גשר Matter.
כדי להסיר מכשיר Matter, מתקשרים אליו:
decommission()
swift
let decommissionedDeviceIDs = try await device.decommission()
אם לא מוחזרת שגיאה מהשיחה, היא הצליחה.
אפשר לבדוק אם מזהה המכשיר מופיע בין המזהים שמוחזרים על ידי decommission():
swift
do {
let decommissionedDeviceIDs = try await device.decommission()
print("The following devices were decommissioned: \(decommissionedDeviceIDs)")
} catch {
print("An error occurred: \(error)")
}
מכשירים שלא תומכים בתקן Matter
אי אפשר להסיר מכשירים שאינם Matter באופן אוטומטי. כדי להסיר מכשיר שאינו Matter, אפשר לשלוח בקשת סנכרון (ראו בקשת סנכרון) או למחוק את השילוב של Cloud-to-cloud (ראו מחיקת שילוב שהופעל בין ענן לענן).
אם מתקשרים אל decommission() במכשיר שהוא לא Matter, מתקבלת שגיאה HomeError.
אחרי שמסירים מכשיר שאינו Matter, בודקים אם המכשיר מופיע כדי לוודא שהוא הוסר בהצלחה:
swift
guard try await !self.context.devices().list().contains(where: { $0.id == deviceID })
else {
// The device still exists in Home APIs
}