إزالة جهاز

تتضمّن إزالة جهاز إيقاف تشغيله من البنية. يمكن للمستخدم أن يفعل ذلك باستخدام 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!")
}