デバイスを削除する

デバイスの削除とは、構造からデバイスの提供を終了することです。ユーザーは これを行うことができます。また、アプリはスマートホーム デバイスの提供をプログラムで 終了できます。Google Home app (GHA)削除できるデバイスには制限があります。また、デバイスを削除すると、アプリの構造とユーザー エクスペリエンスに影響する可能性があります。

削除できるもの

Home API を使用して、次のデバイスをプログラムで削除できます。

  • Matter アプリに権限が付与されているデバイス。
  • Matter ブリッジ。アプリがブリッジを介して接続されているすべての デバイスにアクセスできる場合。ブリッジを削除すると、ブリッジに接続されているすべての Matter デバイスが削除されます。

削除できないもの

次のデバイスは、Home API を使用してプログラムで削除することはできません。

  • アプリに ユーザー権限がない Matter デバイス。
  • Matter ブリッジの背後に接続されている個々のデバイス。
  • Cloud-to-cloud リンクされたデバイス。
  • デュアルパス デバイス(MatterCloud-to-cloudの両方を実装するデバイス)。

デバイスを削除する際の重要な考慮事項

アプリがデバイスを削除すると、デバイスは構造全体から削除され、 GHA を含むすべてのユーザーとすべてのアプリに影響します。 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()

呼び出しでエラーが発生しなかった場合は成功です。

デバイスの ID が decommissionDevice() から返された ID のリストに含まれているかどうかを確認できます。

if (decommissionedDeviceIds.contains(deviceId)) {
  println("Decommission successful!")
} else {
  println("Decommission failed!")
}

Matter 以外のデバイス

Matter 以外のデバイスは、プログラムで削除することはできません。Matter 以外のMatterデバイスを削除するには、同期リクエストを発行するか(同期を リクエストするを参照)、Cloud-to-cloud連携を削除します(リリース済みのクラウド間 連携を削除するを参照)。

Matter 以外のデバイスで decommissionDevice() を呼び出すと、HomeException がスローされます。Matter

Matter 以外の Matter デバイスを削除したら、デバイスが存在するかどうかを 確認して、正常に削除されたことを確認します。

var removedDevice: HomeDevice? = null
runBlockingCustom {
  try {
    removedDevice = homeManager.devices().get(deviceId)
  } catch (exception: Exception) {
    println("removal successful!")
  }
}
if (removedDevice != null) {
  println("removal failed!")
}