기존 기기를 AMAPI로 이전

맞춤 DPC에서 이미 관리하는 기기를 Android Device Policy로 이전하고 Android Management API를 활용할 수 있습니다.

참고: 이 프로세스는 최종 사용자에게 투명하게 공개됩니다. 이는 단방향 프로세스이며(완료되면 실행취소할 수 없음) 한 EMM에서 다른 EMM으로 기기를 이전하는 데 사용할 수 없습니다.

기본 요건

  • 기기가 이미 맞춤 DPC를 통해 EMM에서 관리하고 있습니다.
  • 맞춤 DPC는 AMAPI SDK와 통합됩니다.
  • 기기가 Google Play EMM API에 등록되어 있습니다.
  • 기업용 관리 Google Play 계정에 속한 기기입니다.
  • 기기에서 Android 9 이상을 실행합니다.
  • 회사 소유 기기에 직장 프로필의 경우 기기가 Android 11 이상을 실행해야 합니다.

맞춤 DPC에서 AMAPI SDK와 통합

이전 프로세스를 진행하려면 맞춤 DPC 애플리케이션을 통해 AMAPI SDK를 통합해야 합니다. 이 라이브러리 및 애플리케이션에 이 라이브러리를 추가하는 방법에 대한 자세한 내용은 AMAPI SDK 통합 가이드를 참조하세요.

참고: 이 프로세스에는 버전 1.1.4 이상의 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 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에서 반환된 메서드를 직접 사용하거나 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 ONC 정책은 AMAPI가 원활한 관리를 시작할 수 있도록 이러한 네트워크의 구성과 일치해야 합니다. DPC 이전과 Wi-Fi 관리의 상호작용은 관리 모드에 따라 다릅니다.

회사 소유 기기의 완전 관리형 기기 및 직장 프로필

이전하는 동안 Android Device Policy에서는 기기에 구성된 Wi-Fi 네트워크의 SSID와 보안 유형이 동일한 정책에 구성된 모든 Wi-Fi 네트워크가 일치하는 구성된 Wi-Fi 네트워크와 동일하다고 가정합니다. 따라서 맞춤 DPC에 의해 구성된 Wi-Fi 네트워크는 이전 후에도 네트워크에 상응하는 ONC 정책이 변경될 때까지 변경되지 않습니다. 그러나 맞춤 DPC가 이전 후에 제거되면 맞춤 DPC에 의해 구성된 Wi-Fi 네트워크가 자동으로 삭제됩니다. Android Device Policy는 정책을 계속 시행하며, 이러한 네트워크 중 하나라도 정책에 구성된 경우 정책에 구성된 네트워크가 평소와 같이 추가됩니다.

개인 기기의 직장 프로필

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

주의사항

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

기업별 ID

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

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

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