기존 기기를 AMAPI로 이전

이미 맞춤 DPC로 관리되는 기기는 Android Device Policy (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 이전 시퀀스 다이어그램

참고: 이전을 시작하려면 기기가 인터넷에 연결되어 있어야 합니다. 이 프로세스는 이전 프로세스 중에 네트워크 연결이 끊겨도 견딜 수 있도록 설계되어 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 기기 정책은 기기에서 구성된 Wi-Fi 네트워크와 SSID 및 보안 유형이 동일한 정책에 구성된 Wi-Fi 네트워크가 일치하는 구성된 Wi-Fi 네트워크와 동일하다고 가정합니다. 따라서 커스텀 DPC로 구성된 Wi-Fi 네트워크는 네트워크에 해당하는 ONC 정책이 변경될 때까지 이전 후에도 변경되지 않습니다. 그러나 이전 후 맞춤 DPC가 제거되면 맞춤 DPC로 구성된 Wi-Fi 네트워크가 자동으로 삭제됩니다. Android Device Policy는 계속해서 정책을 시행하며, 이러한 네트워크가 정책에 구성된 경우 정책에 구성된 대로 네트워크가 평소와 같이 추가됩니다.

개인 기기의 직장 프로필

기술적 이유로 Android Device Policy에서 이러한 Wi-Fi 네트워크를 관리하려면 커스텀 DPC로 구성된 Wi-Fi 네트워크를 커스텀 DPC에서 삭제해야 합니다. AMAPI SDK는 이 작업을 처리하고 맞춤 DPC에서 Android 기기 정책으로 소유권을 이전하기 전에 이러한 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 이전에 지원되지 않습니다.