既存のデバイスを AMAPI に移行する

すでにカスタム DPC で管理されているデバイスを Android Device Policy に移行して、Android Management API を利用できます。

注: このプロセスはエンドユーザーに対して透過的です。これは一方向のみのプロセスであり(完了後は元に戻せません)、ある EMM から別の EMM にデバイスを移行するために使用することはできません。

前提条件

  • デバイスがすでにカスタム DPC を使用して EMM によって管理されている。
  • カスタム DPC は AMAPI SDK と統合されています。
  • デバイスが Google Play EMM API に登録されている。
  • デバイスが managed Google Play アカウント エンタープライズに属している。
  • デバイスに Android 9 以降が搭載されている。
  • 会社所有デバイスで仕事用プロファイルを使用する場合、デバイスに Android 11 以降が搭載されている必要があります。

カスタム DPC で AMAPI SDK と統合する

移行プロセスでは、AMAPI SDK を統合するためのカスタム DPC アプリが必要です。このライブラリと、このライブラリをアプリに追加する方法について詳しくは、AMAPI SDK 統合ガイドをご覧ください。

注: このプロセスには、AMAPI SDK ライブラリのバージョン 1.1.4 以降が必要です。

デバイスの移行手順

  1. AMAPI に移行されたデバイスで使用するポリシーを設定します。最適なユーザー エクスペリエンスを実現するには、DPC によってデバイスにすでに適用されているポリシーと同等にする必要があります。
  2. enterprises.migrationTokens.create を呼び出して、デバイスの移行トークンを作成します。
  3. この移行トークンの value をカスタム DPC に送信します。
  4. Play EMM API を使用して、Android Device Policy がデバイスにインストールされていることを確認します。
  5. DpcMigrationClientFactory を使用して DpcMigrationClient を作成します。
  6. DpcMigrationClientmigrateDeviceManagementToAndroidManagementApi メソッドを呼び出します。これで移行は完了です。
  7. deviceStateACTIVE に変更され、Pub/Sub チャネルを介して STATUS_REPORT メッセージを受信します。

移行が完了すると、呼び出し元アプリは、デバイス所有者またはプロファイル所有者の権限が Android Device Policy に移行されるため、権限を失います。

注: 移行を開始するには、デバイスをインターネットに接続する必要があります。 このプロセスは、移行プロセス中にネットワークの切断が発生しても復元できるように設計されています。そのため、ネットワーク接続を必要とする主要な操作は、デバイス所有者またはプロファイル所有者の権限が DPC から Android Device Policy に実際に移行される前に行われます。

移行トークン

EMM サーバーは移行トークンをリクエストし、カスタム DPC によって管理されている特定のデバイスを移行する意思を通知します。移行トークンは、移行が正常に完了するまで、または期限切れになるまで使用できます。

カスタム DPC の統合

まず、DpcMigrationRequest を作成し、トークンと、必要に応じて設定済みの Wi-Fi ネットワークのリストをビルダーに渡す必要があります。

// Create a DpcMigrationRequest
DpcMigrationRequest request =
        DpcMigrationRequest.builder()
            .setMigrationToken(token)
            .build();

次に、DpcMigrationClient を取得し、migrateDeviceManagementToAndroidManagementApi で移行プロセスを開始します。

// Create a DpcMigrationClient
DpcMigrationClient dpcMigrationClient = DpcMigrationClientFactory.create(context);
try {
  // Use helper functiong to retrieve Admin component name
  var adminComponentName = getAdminComponent(context);
  }

  ListenableFuture<DpcMigrationAttempt> futureAttempt =
          dpcMigrationClient.migrateDeviceManagementToAndroidManagementApi(
              new ComponentName(context, DpcMigrationNotificationReceiver.class),
              adminComponentName,
              request);
  // handle futureAttempt
} catch (RuntimeException e) {
  // send failure feedback: "Error: " + e
}

移行の進行状況を追跡する

移行プロセスは、デバイス上で DpcMigrationAttempt を通じて追跡されます。

migrateDeviceManagementToAndroidManagementApi から返されたものを直接使用するか、getMigrationAttempt メソッドと listMigrationAttempts メソッドを使用して移行の試行を取得して一覧表示できます。

// Passing an empty name, we retrieve the last attempt 
var request = GetDpcMigrationAttemptRequest.builder().build();

var attempt = client.getMigrationAttempt(request);

必要に応じて、NotificationReceiverService を使用して DpcMigrationListener を設定し、DpcMigrationAttempt のステータス更新をリッスンできます。

// DpcMigrationNotificationReceiver for callback handling
public class DpcMigrationNotificationReceiver extends NotificationReceiverService
    implements DpcMigrationListener {

  @Override
  protected DpcMigrationListener getDpcMigrationListener() {
    // getDpcMigrationListener"
    return this;
  }

  @Override
  public void onMigrationStateChanged(DpcMigrationAttempt migrationAttempt) {
    // send success feedback
  }
}

Wi-Fi ネットワークを処理する

カスタム DPC によって管理されている Wi-Fi ネットワークがある場合は、AMAPI ONC ポリシーをこれらのネットワークの構成と一致させることで、AMAPI がスムーズに管理を開始できるようにする必要があります。DPC 移行と Wi-Fi 管理の相互作用は、管理モードによって異なります。

完全管理対象デバイスと会社所有デバイス上の仕事用プロファイル

移行中、Android Device Policy は、ポリシーで設定された Wi-Fi ネットワーク(デバイス上に設定されている Wi-Fi ネットワークと同じ SSID とセキュリティ タイプを持つ)が、一致する設定済みの Wi-Fi ネットワークと同じであると想定します。したがって、カスタム DPC によって構成された Wi-Fi ネットワークは、移行後、ネットワークに対応する ONC ポリシーが変更されるまで変更されません。ただし、移行後にカスタム DPC をアンインストールすると、カスタム DPC によって構成された Wi-Fi ネットワークは自動的に削除されます。Android Device Policy は引き続きポリシーを適用し、これらのネットワークのいずれかがポリシーで構成されている場合、ポリシーで構成されているネットワークが通常どおりに追加されます。

個人用デバイスの仕事用プロファイル

技術的な理由から、これらの Wi-Fi ネットワークの管理を開始するには、カスタム DPC で設定された Wi-Fi ネットワークを、Android Device Policy のカスタム DPC によって削除する必要があります。AMAPI SDK がこの処理を行い、所有権をカスタム DPC から Android Device Policy に移行する前にこのような Wi-Fi ネットワークを削除しますが、カスタム DPC は DpcMigrationRequest でこれらのネットワークに関する情報を渡す必要があります。移行後は、ポリシーで構成されたネットワークは通常どおり追加されるため、カスタム DPC によって追加されたネットワークもポリシーで構成することをおすすめします。

次の点に注意してください。

  • アクティブなネットワークがカスタム DPC によって構成された Wi-Fi ネットワークである場合、移行中はデバイスが一時的にオフラインになることがあります。
  • カスタム DPC によって構成された Wi-Fi ネットワークのみを DpcMigrationRequest に渡す必要があります。そうしないと、AMAPI SDK でネットワークを削除できない場合(ユーザーが追加した Wi-Fi ネットワークなど)は移行に失敗します。
  • Wi-Fi ネットワークは、カスタム DPC が個人所有デバイスのプロファイル所有者である場合にのみ、DpcMigrationRequest で渡す必要があります。それ以外の場合、移行は失敗します。
  • 技術的な理由から、Android 12 では DpcMigrationRequest で渡されたネットワークが無視され、カスタム DPC によって構成されたすべての Wi-Fi ネットワークが自動的に削除されます。さらに、Android 12 では、個人所有デバイスの仕事用プロファイルに対してカスタム DPC に ACCESS_WIFI_STATE 権限が必要です。この権限があると、移行は失敗します。

注意点

この機能に関する注意事項は次のとおりです。

企業固有の ID

Android 12 以降の仕事用プロファイルの場合、DevicePolicyManager.getEnrollmentSpecificId からアクセスできるエンタープライズ固有の ID は移行時には変更されません。ただし、Android Device Policy で管理されている仕事用プロファイルがデバイス上で再度作成されると(以前のプロファイルを削除した後や、デバイスを出荷時の設定にリセットした後など)、その時点で企業固有の ID が変更されます。

完全管理対象デバイスの仕事用プロファイル

この機能は、Android 9 または 10 を搭載した仕事用プロファイルを持つ完全管理対象デバイスではサポートされていません。これらのデバイスの移行は行えません。また、エラーが発生したかどうかにかかわらず、そのようなデバイスは DPC 移行でサポートされません。