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

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

前提条件

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

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

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

デバイスの移行手順

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

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

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

移行トークン

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

カスタム 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 function 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 がスムーズに管理できるようにするには、AMAPI ONC ポリシーをそのネットワークの設定と一致させる必要があります。DPC 移行と Wi-Fi 管理のやり取りは、管理モードによって異なります。

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

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

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

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

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

  • アクティブなネットワークが、カスタム DPC によって構成された Wi-Fi ネットワークである場合、移行中にデバイスが一時的にオフラインになることがあります。
  • DpcMigrationRequest で渡す必要があるのは、カスタム DPC で構成された Wi-Fi ネットワークのみです。これを行わないと、AMAPI SDK でネットワークを削除できない場合(ユーザーが追加した Wi-Fi ネットワークなど)は移行に失敗します。
  • カスタム DPC が個人所有デバイスのプロファイル所有者である場合にのみ、Wi-Fi ネットワークを 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 の移行でサポートされていません。