Общие операции

На этой странице приведены примеры некоторых распространенных операций, которые вы можете выполнять с общей библиотекой реселлеров Android, в том числе:


Создание объектов ResellerService

Используйте фабричные классы Samsung и Google для создания объектов ResellerService . С объектами ResellerService доступен общий набор методов для регистрации Samsung и других устройств Android.

устройства Самсунг

В приведенном ниже примере показано, как создать объект ResellerService с помощью класса SamsungResellerServiceFactory для управления устройствами Samsung.

Прежде чем вы сможете это сделать, вам необходимо подключиться к программе развертывания Knox (KDP).

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

Другие Android-устройства

В приведенном ниже примере показано, как создать объект ResellerService с помощью класса GoogleResellerServiceFactory для управления другими (не Samsung) устройствами Android. Прежде чем вы сможете это сделать, вам необходимо выполнить шаги, описанные в разделе Начало работы для автоматической регистрации , чтобы получить resellerId и ключ сервисной учетной записи.

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

Создание объектов Customer

Покупателю, приобретающему устройства Samsung и других производителей, требуется два идентификатора клиента.

устройства Самсунг

Для управления устройствами Samsung вы используете идентификатор клиента Knox Customer ID. Чтобы получить идентификатор клиента Knox, вам необходимо сначала создать объект Customer . Для этого вызовите createCustomer , используя SamsungResellerService , созданный из SamsungResellerServiceFactory . Вот пример:

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();

В случае успеха запрос возвращает объект CreateCustomerResponse , из которого можно извлечь идентификатор клиента Knox.

Другие Android-устройства

Для других устройств Android клиенту требуется идентификатор клиента для автоматической регистрации. Если клиент уже использует автоматическую регистрацию у другого реселлера, вы используете его существующий идентификатор клиента. В противном случае вам необходимо создать объект Customer . Для этого вызовите createCustomer , используя ResellerService созданный из GoogleResellerServiceFactory . Вот пример:

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 . Вы можете получить идентификатор клиента из ответа.


Заявка на партию устройств

Заявка на устройство создает связь между устройством и клиентом. Например, если вы продаете покупателю партию устройств, вы должны требовать устройства для этого клиента.

В этом примере показан один из способов обработки партии устройств, включающей заказы устройств от нескольких производителей (Samsung и другие устройства Android) от нескольких клиентов.

Шаг 1. Организуйте устройства и клиентов

При наличии таблицы IMEI устройств, производителей и идентификаторов клиентов, которым были проданы устройства, одним из способов управления заказами является организация их в два списка: заказы устройств Samsung и заказы других устройств Android (не Samsung). Затем для каждого списка сгруппируйте устройства по клиентам. Например:

устройства Самсунг

Имя Клиента Идентификатор клиента Samsung Knox Производитель IMEI
ABC корп. 11 Samsung

1234567801

1234567802

Другие Android-устройства

Имя Клиента Пользовательский ИД Производитель 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 . Для этого примера требуется два отдельных запроса: один от объекта Samsung 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 . В этом примере требуются два отдельных запроса: один от объекта Samsung 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);

Обменять устройство Samsung

Если по какой-либо причине устройство необходимо заменить, вы можете обменять его. В этом примере предполагается, что вы обмениваете устройство Samsung на другое устройство Samsung.

Шаг 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 (не Samsung)

Если по какой-либо причине устройство необходимо заменить, вы можете обменять его. В этом примере предполагается, что вы обмениваете устройство Android (не Samsung) на другое устройство Android (не Samsung).

Шаг 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);

В случае успеха вызов возвращает объект ClaimDeviceResponse , содержащий deviceId . В противном случае выдается обычное исключение, содержащее код ошибки.