إزالة جهاز

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

الأجهزة المتعدّدة المصادر

أجهزة المصادر المتعددة هي الأجهزة التي تستخدم كلاً من واجهات برمجة التطبيقات Cloud-to-cloud وMatter. إذا تحقّقت من أهلية إيقاف جهاز من هذا النوع، سيظهر لك الرمز DecommissionIneligibleReason.multiSourceDevice، ما يشير إلى أنّه لا يمكن إيقاف الجهاز لأنّه يتضمّن مصادر متعددة.

لإزالة جهاز متعدد المصادر، اتّبِع الإجراء التالي:

  1. أزِل عملية الربط Cloud-to-cloud كما هو موضّح في مقالة الأجهزة غير المتوافقة مع Matter.
  2. أوقِف جهاز Matter نهائيًا كما هو موضّح في مقالة أجهزة Matter.

من المهم اتّباع هذه الخطوات بالترتيب. إذا حاولت إيقاف جهاز Matter قبل إزالة ربط Cloud-to-cloud، سيتم عرض HomeException.