일반적인 작업

이 페이지에서는 일반 Android 리셀러 라이브러리를 사용하여 실행할 수 있는 몇 가지 일반적인 작업의 예를 제공합니다.


ResellerService 객체 만들기

삼성 및 Google 팩토리 클래스를 사용하여 ResellerService 객체를 만듭니다. ResellerService 객체를 사용하면 삼성과 기타 Android 기기를 등록하는 데 공통의 메서드를 사용할 수 있습니다.

삼성 기기

아래 예는 SamsungResellerServiceFactory 클래스를 사용하여 ResellerService 객체를 만들어 삼성 기기를 관리하는 방법을 보여줍니다.

이렇게 하려면 먼저 Knox 배포 프로그램 (KDP)에 온보딩해야 합니다.

ResellerService samsungResellerService = SamsungResellerServiceFactory.createResellerService(resellerId, serviceAccountKeyFilePath, clientIdentifier);

기타 Android 기기

아래 예는 GoogleResellerServiceFactory 클래스를 사용하여 다른 (Android가 아닌) Android 기기를 관리하는 ResellerService 객체를 만드는 방법을 보여줍니다. 이렇게 하려면 제로터치 등록 시작하기의 단계에 따라 resellerId 및 서비스 계정 키를 가져와야 합니다.

ResellerService googleResellerService = GoogleResellerServiceFactory.createResellerService(resellerId, serviceAccountKeyFilePath);

Customer 객체 만들기

삼성과 삼성 이외의 기기를 구매하는 고객에게는 두 개의 고객 ID가 필요합니다.

삼성 기기

삼성 기기를 관리하려면 고객의 Knox 고객 ID를 사용합니다. Knox 고객 ID를 가져오려면 먼저 Customer 객체를 만들어야 합니다. 그렇게 하려면 SamsungResellerServiceFactory에서 만든 SamsungResellerService를 사용하여 createCustomer를 호출합니다. 예를 들면 다음과 같습니다.

CreateCustomerRequest request = CreateCustomerRequest.newBuilder()
    .setCustomerName("TestCustomer") .addPrimaryEmails("superAdmin@gmail.com")
    .putVendorParams("country", "US") .putVendorParams("firstName", "Avery")
    .putVendorParams("lastName", "Yamada") .putVendorParams("service", "KME")
    .build();
CreateCustomerResponse response = samsungResellerService.createCustomer(request);
String companyId = response.getCustomer().getCompanyReference().getCompanyId();

요청에 성공하면 Knox 고객 ID를 추출할 수 있는 CreateCustomerResponse 객체가 반환됩니다.

기타 Android 기기

다른 Android 기기의 경우 고객에게 제로터치 등록 고객 ID가 필요합니다. 고객이 이미 다른 리셀러에게 제로터치 등록을 사용하고 있다면 기존 고객 ID를 사용합니다. 그렇지 않으면 Customer 객체를 만들어야 합니다. 그렇게 하려면 GoogleResellerServiceFactory에서 만든 ResellerService를 사용하여 createCustomer를 호출합니다. 예를 들면 다음과 같습니다.

CreateCustomerRequest request = CreateCustomerRequest.newBuilder()
    .setCustomerName("TestCustomer")
    .addPrimaryEmails("owner@gmail.com")
    .addSecondaryEmails("admin@gmail.com")
    .build();
CreateCustomerResponse response = googleResellerService.createCustomer(request);
String companyId = response.getCustomer().getCompanyReference().getCompanyId();

성공하면 요청이 CreateCustomerResponse 객체를 반환합니다. 응답에서 고객 ID를 검색할 수 있습니다.


기기 일괄 등록

기기의 소유권을 주장하면 기기와 고객이 연결됩니다. 예를 들어 고객에게 기기를 일괄적으로 판매하는 경우 고객의 기기에 대한 소유권을 주장하게 됩니다.

이 예에서는 여러 제조업체의 기기 (삼성 및 기타 Android 기기) 주문이 포함된 기기 배치를 처리하는 한 가지 방법을 보여줍니다.

1단계: 기기 및 고객 정리하기

기기 IMEI, 제조업체, 기기가 판매된 고객의 ID가 주어지면 주문을 관리하는 한 가지 방법은 삼성 기기 주문과 다른 Android (삼성 외) 주문으로 두 가지 목록으로 정리하는 것입니다. 그런 다음 각 목록에서 고객별로 기기를 그룹화합니다. 예를 들면 다음과 같습니다.

삼성 기기

고객 이름 삼성 Knox 고객 ID 제조업체 IMEI
ABC 기업 11 Samsung

1234567801

1234567802

기타 Android 기기

고객 이름 고객 ID 제조업체 IMEI
ABC 기업 21 Google 1234567803
XYZ 회사 22 Sony

1234567804

1234567805

2단계: ClaimDevicesRequest 객체 만들기

삼성 기기

// Note: You can only claim devices for a single customer in each request.
ClaimDevicesRequest claimSamsungDevicesRequest = ClaimDevicesRequest.newBuilder()
   .addClaims(
       DeviceClaim.newBuilder()
           .setCustomer(
               CompanyReference.newBuilder()
                   .setVendor(Vendor.SAMSUNG)
                   .setCompanyId("11")
                   .build())
           .setDeviceIdentifier(
               DeviceIdentifier.newBuilder()
                   .setImei("1234567801")
                   .setManufacturer("Samsung")
                   .build())
       .build())
   .addClaims(
       DeviceClaim.newBuilder()
           .setCustomer(
               CompanyReference.newBuilder()
                   .setVendor(Vendor.SAMSUNG)
                   .setCompanyId("11")
                   .build())
           .setDeviceIdentifier(
               DeviceIdentifier.newBuilder()
                   .setImei("1234567802")
                   .setManufacturer("Samsung")
                   .build())
           .build())
   .build();

기타 Android 기기

ClaimDevicesRequest claimGoogleDevicesRequest = ClaimDevicesRequest.newBuilder()
    .addClaims(
        DeviceClaim.newBuilder()
            .setCustomer(
                CompanyReference.newBuilder()
                    .setVendor(Vendor.GOOGLE)
                    .setCompanyId("21")
                    .build())
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567803")
                    .setManufacturer("Google")
                    .build())
            .build())
    .addClaims(
        DeviceClaim.newBuilder()
            .setCustomer(
                CompanyReference.newBuilder()
                    .setVendor(Vendor.GOOGLE)
                    .setCompanyId("22")
                    .build())
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567804")
                    .setManufacturer("Sony")
                    .build())
            .build())
    .addClaims(
         DeviceClaim.newBuilder()
             .setCustomer(
                 CompanyReference.newBuilder()
                     .setVendor(Vendor.GOOGLE)
                     .setCompanyId("22")
                     .build())
             .setDeviceIdentifier(
                 DeviceIdentifier.newBuilder()
                     .setImei("1234567805")
                     .setManufacturer("Sony")
                     .build())
             .build())
    .build();

3단계: 고객의 기기 보증받기

고객을 위해 기기 소유권을 주장하려면 ClaimDevicesAsync에 전화하세요. 이 예시에서는 삼성 ResellerService 객체와 Google ResellerService 객체의 요청을 각각 하나씩해야 합니다.

// Samsung devices
ClaimDevicesResponse samsungResponse = samsungResellerService.claimDevicesAsync(claimSamsungDevicesRequest);

// Other Android devices
ClaimDevicesResponse googleResponse = googleResellerService.claimDevicesAsync(claimGoogleDevicesRequest);

ClaimDevicesAsync 요청은 요청 상태 (진행 중, 완료, 오류 완료, 실패)가 포함된 Operation 객체 목록을 반환합니다. 작업 상태를 확인하려면 (예: 응답에서 IN_PROGRESS가 반환된 경우) getOperation를 호출합니다.

// Samsung devices
GetOperationRequest samsungOperationRequest = GetOperationRequest.newBuilder().setOperationId(samsungOperationId).build();
Operation samsungOperation = samsungResellerService.getOperation(samsungOperationRequest);

// Other Android devices
GetOperationRequest googleOperationRequest = GetOperationRequest.newBuilder().setOperationId(googleOperationId).build();
Operation googleOperation = googleResellerService.getOperation(googleOperationRequest);

기기 일괄 등록 취소

기기 등록을 해제하면 고객과의 연결이 해제됩니다. 기기 주문이 취소되었거나 기기 배송을 완료할 수 없는 경우 기기의 보증을 취소해야 할 수 있습니다. 기기 배치를 등록 취소하려면 다음 단계를 따르세요.

1단계: UnclaimDevicesRequest 객체 만들기

삼성 기기

// Each request can only unclaim devices belonging to a single customer. The request must also
// include the customer's Samsung Knox customer ID.
UnclaimDevicesRequest unclaimSamsungDevicesRequest = UnclaimDevicesRequest.newBuilder()
    .putVendorParams("customerId", "11")
    .addUnclaims(
        DeviceUnclaim.newBuilder()
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567801")
                    .build())
        .build())
    .addUnclaims(
        DeviceUnclaim.newBuilder()
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567802")
                    .build())
            .build())
    .build();

기타 Android 기기

UnclaimDevicesRequest unclaimGoogleDevicesRequest = UnclaimDevicesRequest.newBuilder()
    .addUnclaims(
        DeviceUnclaim.newBuilder()
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567803")
                    .build())
            .build())
    .addUnclaims(
        DeviceUnclaim.newBuilder()
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567804")
                    .build())
            .build())
    .addUnclaims(
        DeviceUnclaim.newBuilder()
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567805")
                    .build())
            .build())
    .build();

2단계: 기기 소유권 주장 취소

기기의 소유권을 주장하려면 UnclaimDevicesAsync를 호출합니다. 이 예시에서는 삼성 ResellerService 객체와 Google ResellerService 객체의 요청을 각각 하나씩해야 합니다.

UnclaimDevicesResponse samsungResponse = samsungResellerService.unclaimDevicesAsync(unclaimSamsungDevicesRequest);
UnclaimDevicesResponse googleResponse = googleResellerService.unclaimDevicesAsync(unclaimGoogleDevicesRequest);

UnclaimDevicesAsync 요청은 요청 상태 (진행 중, 완료, 오류 완료, 실패)가 포함된 Operation 객체 목록을 반환합니다. 작업의 상태를 확인하려면 (예: 응답이 IN_PROGRESS를 반환한 경우) getOperation를 호출합니다.

삼성 기기

GetOperationRequest samsungOperationRequest = GetOperationRequest.newBuilder().setOperationId(samsungOperationId).build();
Operation samsungOperation = samsungResellerService.getOperation(samsungOperationRequest);

기타 Android 기기

GetOperationRequest googleOperationRequest = GetOperationRequest.newBuilder().setOperationId(googleOperationId).build();
Operation googleOperation = googleResellerService.getOperation(googleOperationRequest);

삼성 기기 교환

어떤 이유로든 기기를 교체해야 하는 경우 교체할 수 있습니다. 이 예에서는 삼성 기기를 다른 삼성 기기로 교환하고 있다고 가정합니다.

1단계: UnclaimDeviceRequest 객체 만들기

// Note: The request must include the customer's Samsung Knox customer ID.
UnclaimDevicesRequest unclaimSamsungDevicesRequest = UnclaimDevicesRequest.newBuilder()
    .putVendorParams("customerId", "11")
    .addUnclaims(
        DeviceUnclaim.newBuilder()
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567801")
                    .build())
        .build())
    .build();

2단계: UnclaimDeviceAsync에 전화 걸기

UnclaimDevicesResponse samsungResponse = samsungResellerService.unclaimDevicesAsync(unclaimSamsungDevicesRequest);

UnclaimDevicesAsync 요청은 요청 상태 (진행 중, 완료, 오류 완료, 실패)가 포함된 Operation 객체 목록을 반환합니다. 작업 상태를 확인하려면 (예: 응답에서 IN_PROGRESS가 반환된 경우) getOperation를 호출합니다.

GetOperationRequest samsungOperationRequest = GetOperationRequest.newBuilder().setOperationId(samsungOperationId).build();
Operation samsungOperation = samsungResellerService.getOperation(samsungOperationRequest);

3단계: ClaimDeviceRequest 객체 만들기

ClaimDevicesRequest claimSamsungDevicesRequest = ClaimDevicesRequest.newBuilder()
   .addClaims(
       DeviceClaim.newBuilder()
           .setCustomer(
               CompanyReference.newBuilder()
                   .setVendor(Vendor.SAMSUNG)
                   .setCompanyId("11")
                   .build())
           .setDeviceIdentifier(
               DeviceIdentifier.newBuilder()
                   .setImei("1234567806")
                   .setManufacturer("Samsung")
                   .build())
       .build())
   .build();

4단계: ClaimDeviceAsync 호출

ClaimDevicesResponse samsungResponse = samsungResellerService.claimDevicesAsync(claimSamsungDevicesRequest);

ClaimDevicesAsync 요청은 요청 상태 (진행 중, 완료, 오류 완료, 실패)가 포함된 Operation 객체 목록을 반환합니다. 작업 상태를 확인하려면 (예: 응답에서 IN_PROGRESS가 반환된 경우) getOperation를 호출합니다.

GetOperationRequest samsungOperationRequest = GetOperationRequest.newBuilder().setOperationId(samsungOperationId).build();
Operation samsungOperation = samsungResellerService.getOperation(samsungOperationRequest);

Android가 아닌 Android 기기 교환

어떤 이유로든 기기를 교체해야 하는 경우 교체할 수 있습니다. 이 예에서는 Android가 아닌 다른 Android (삼성 외) 기기와 Android (삼성 외) 기기를 교환하고 있다고 가정합니다.

1단계: UnclaimDeviceRequest 객체 만들기

UnclaimDeviceRequest unclaimGoogleDeviceRequest = UnclaimDeviceRequest.newBuilder()
    .setUnclaim(
        DeviceUnclaim.newBuilder()
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567803")
                    .build())
            .build())
    .build();

2단계: UnclaimDevice에 전화 걸기

googleResponse = googleResellerService.unclaimDevice(unclaimGoogleDeviceRequest);

3단계: ClaimDeviceRequest 객체 만들기

ClaimDeviceRequest claimGoogleDeviceRequest = ClaimDeviceRequest.newBuilder()
    .setClaim(
        DeviceClaim.newBuilder()
            .setCustomer(
                CompanyReference.newBuilder()
                    .setVendor(Vendor.GOOGLE)
                    .setCompanyId("21")
                    .build())
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567807")
                    .setManufacturer("Google")
                    .build())
            .build())
       .build();

4단계: ClaimDevice 호출

ClaimDeviceResponse response = googleResellerService.claimDevice(claimGoogleDeviceRequest);

성공하면 deviceId가 포함된 ClaimDeviceResponse 객체가 반환됩니다. 그렇지 않으면 오류 코드가 포함된 일반 예외가 발생합니다.