기존 기기를 AMAPI로 이전

맞춤 DPC에서 이미 관리 중인 기기는 Android 기기 정책 (ADP)으로 이전하여 Android Management API를 활용할 수 있습니다.

기본 요건

  • 기기가 이미 맞춤 DPC를 사용하여 EMM에서 관리하고 있습니다.
  • 맞춤 DPC는 AMAPI SDK와 통합됩니다.
  • 기기가 Google Play EMM API에 등록되어 있습니다.
  • 기기가 기업용 관리 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로 기기 소유자 또는 프로필 소유자 권한을 실제로 이전하기 전에 네트워크 연결이 필요한 키 작업이 실행됩니다.

이전 토큰

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 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에서 반환된 메서드를 직접 사용하거나 getMigrationAttemptlistMigrationAttempts 메서드를 사용하여 마이그레이션 시도를 가져오고 나열할 수 있습니다.

// 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 네트워크가 기기에 구성된 Wi-Fi 네트워크와 동일한 SSID 및 보안 유형을 가진 네트워크가 일치하는 구성된 Wi-Fi 네트워크와 동일하다고 가정합니다. 따라서 맞춤 DPC에 의해 구성된 Wi-Fi 네트워크는 이전 후 네트워크에 해당하는 ONC 정책이 변경될 때까지 변경되지 않습니다. 그러나 이전 후 맞춤 DPC가 제거되면 맞춤 DPC에 의해 구성된 Wi-Fi 네트워크가 자동으로 삭제됩니다. Android Device Policy는 계속해서 정책을 적용하며, 이러한 네트워크 중 하나가 정책에 구성되면 정책에 구성된 네트워크가 평소처럼 추가됩니다.

개인 기기의 직장 프로필

기술적인 이유로, Android Device Policy에서 이러한 Wi-Fi 네트워크 관리를 시작하려면 맞춤 DPC가 맞춤 DPC에 의해 구성된 Wi-Fi 네트워크를 삭제해야 합니다. 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 네트워크가 자동으로 삭제됩니다. 또한 맞춤 DPC는 개인 소유 기기의 직장 프로필에 관한 Android 12의 ACCESS_WIFI_STATE 권한을 보유해야 하며, 그렇지 않으면 이전이 실패합니다.

주의사항

다음은 이 기능과 관련된 주의사항입니다.

기업용 ID

Android 12 이상의 직장 프로필의 경우 DevicePolicyManager.getEnrollmentSpecificId에서 액세스할 수 있는 엔터프라이즈별 ID는 이전 시점에 변경되지 않습니다. 그러나 Android Device Policy에서 관리하는 직장 프로필이 기기에서 다시 생성되면 (예: 이전 프로필을 삭제한 후 또는 기기를 초기화한 후) 이 시점에서 엔터프라이즈 ID가 변경됩니다.

완전 관리형 기기의 직장 프로필

이 기능은 Android 9 또는 10을 실행하는 직장 프로필이 있는 완전 관리형 기기에서는 지원되지 않습니다. 이러한 기기의 이전을 시도해서는 안 되며, 오류 발생 여부와 상관없이 이러한 기기는 DPC 이전이 지원되지 않습니다.