تتضمّن إزالة جهاز إيقافه نهائيًا من البنية. يمكن للمستخدم إجراء ذلك باستخدام Google Home app (GHA)، ويمكن للتطبيق إيقاف جهاز منزلي ذكي آليًا. هناك قيود على الأجهزة التي يمكن إزالتها. بالإضافة إلى ذلك، يمكن أن تؤثر إزالة جهاز في بنية تطبيقك وتجارب المستخدمين.
المحتوى الذي يمكنك إزالته
يمكنك إزالة الأجهزة التالية آليًا من خلال واجهات برمجة التطبيقات Home:
- Matter جهاز حصل تطبيقك على أذونات الوصول إلى بياناته
- يمكن استخدام جسر Matter، شرط أن يكون تطبيقك لديه إذن بالوصول إلى جميع الأجهزة المتصلة من خلال الجسر. عند إزالة الجسر، ستتم إزالة جميع أجهزة Matter المتصلة به.
ما لا يمكنك إزالته
لا يمكن إزالة الأجهزة التالية آليًا من خلال واجهات برمجة التطبيقات Home:
- Matter جهازًا لا يملك تطبيقك أذونات المستخدمين الخاصة به.
- الأجهزة الفردية المتصلة من خلال جسر Matter
- Cloud-to-cloud جهاز مرتبط
- الأجهزة ذات المسار المزدوج (الأجهزة التي تنفّذ كلاً من Matter وCloud-to-cloud)
اعتبارات مهمة قبل إزالة جهاز
عندما يزيل تطبيقك جهازًا، تتم إزالته من البنية بأكملها، ما يؤثر في جميع المستخدمين وجميع التطبيقات، بما في ذلك GHA. قد تترتّب آثار جانبية إضافية على إيقاف جهاز نهائيًا، وذلك حسب نوع الجهاز:
- الأجهزة التي تنفّذ أنواعًا متعددة من الأجهزة: إذا كان الجهاز يتضمّن وظائف متعددة، مثل مصباح ذكي يعمل أيضًا كمركز، ستؤدي إزالته إلى إزالة جميع الأجهزة المرتبطة به. يجب أن يخبر التطبيق المستخدم إذا كان سيتم التأثير في وظائف متعددة للجهاز.
- سجلّ الجهاز: قد يؤدي حذف جهاز إلى إزالة سجلّه.
- مساحات العرض المشتركة: عليك توخّي الحذر عند حذف أجهزة من مساحات العرض المشتركة، لأنّ ذلك قد يؤدي إلى عواقب غير مقصودة بالنسبة إلى المستخدمين الآخرين.
- المصادقة: يجب إزالة الأجهزة من خلال واجهات تمت المصادقة عليها فقط، مثل الهاتف الجوّال، وليس من خلال أجهزة لم تتم المصادقة عليها، مثل أجهزة التلفزيون. ويُعدّ ذلك انتهاكًا لسياسات المطوّرين في Google Home.
إزالة جهاز
إنّ التحقّق من أهلية الجهاز للإزالة أمر مكلف ويجب إجراؤه فقط عند الضرورة. للتحقّق مما إذا كان الجهاز مؤهلاً للإزالة، استخدِم الأمر التالي:
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.") }
أجهزة متوافقة مع معيار Matter
يمكنك إزالة جهاز Matter آليًا إذا لم يكن الجهاز متصلاً بجهاز Matter.
لإزالة جهاز Matter، اتّبِع الخطوات التالية:
decommissionDevice()
val decommissionedDeviceIds = device.decommissionDevice()
إذا لم يعرض الاتصال خطأ، يعني ذلك أنّه نجح.
يمكنك التحقّق مما إذا كان معرّف الجهاز من بين المعرّفات التي تعرضها decommissionDevice()
من خلال اتّباع الخطوات التالية:
if (decommissionedDeviceIds.contains(deviceId)) { println("Decommission successful!") } else { println("Decommission failed!") }
الأجهزة غير المتوافقة مع معيار Matter
لا يمكن إزالة الأجهزة التي لا تحمل العلامة Matter آليًا. لإزالة جهاز غير Matter، يمكنك إرسال طلب مزامنة (راجِع طلب المزامنة) أو حذف عملية الربط Cloud-to-cloud (راجِع حذف عملية ربط تم إطلاقها من السحابة الإلكترونية إلى السحابة الإلكترونية).
إذا اتصلت بـ decommissionDevice() على جهاز غير Matter، سيتم عرض HomeException.
بعد إزالة جهاز غير Matter، تحقَّق من عدم توفّره للتأكّد من أنّه تمت إزالته بنجاح:
var removedDevice: HomeDevice? = null runBlockingCustom { try { removedDevice = homeManager.devices().get(deviceId) } catch (exception: Exception) { println("removal successful!") } } if (removedDevice != null) { println("removal failed!") }