Operações comuns

Esta página mostra exemplos de algumas operações comuns que você pode realizar com a biblioteca Common Android Reseller, incluindo:


Criar objetos ResellerService

Use as classes de fábrica da Samsung e do Google para criar objetos ResellerService. Com objetos ResellerService, um conjunto comum de métodos está disponível para registrar Samsung e outros dispositivos Android.

Dispositivos Samsung

O exemplo abaixo mostra como criar um objeto ResellerService usando a classe SamsungResellerServiceFactory para gerenciar dispositivos Samsung.

Antes disso, é necessário integrar o Programa de Implantação do Knox (KDP, na sigla em inglês).

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

Outros dispositivos Android

O exemplo abaixo mostra como criar um objeto ResellerService usando a classe GoogleResellerServiceFactory para gerenciar outros dispositivos Android (que não sejam Samsung). Antes disso, siga as etapas em Começar a usar o registro sem toque para receber a chave da conta de serviço e o resellerId.

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

Criar objetos Customer

Um cliente que compra dispositivos Samsung e de outras marcas precisa de dois IDs de cliente.

Dispositivos Samsung

Para gerenciar dispositivos Samsung, use o ID de cliente do Knox do cliente. Para receber o ID do cliente do Knox, primeiro é necessário criar um objeto Customer. Para fazer isso, chame createCustomer usando um SamsungResellerService criado com o SamsungResellerServiceFactory. Veja um exemplo:

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

Se for bem-sucedida, a solicitação retornará um objeto CreateCustomerResponse, do qual é possível extrair o ID de cliente do Knox.

Outros dispositivos Android

Para outros dispositivos Android, o cliente precisa de um ID de cliente de registro sem toque. Se um cliente já usa a inscrição sem contato com outro revendedor, use o ID de cliente atual. Caso contrário, você precisa criar um objeto Customer. Para fazer isso, chame createCustomer usando um ResellerService criado a partir do GoogleResellerServiceFactory. Veja um exemplo:

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

Se for bem-sucedida, a solicitação retornará um objeto CreateCustomerResponse. É possível extrair o ID do cliente da resposta.


Reivindicar um lote de dispositivos

A reivindicação de um dispositivo cria uma associação entre o dispositivo e um cliente. Por exemplo, se você vender um lote de dispositivos para um cliente, reivindique os dispositivos para esse cliente.

Este exemplo mostra uma maneira de processar um lote de dispositivos que inclui pedidos de dispositivos de vários fabricantes (Samsung e outros dispositivos Android) de vários clientes.

Etapa 1: organizar dispositivos e clientes

Dada uma tabela de IMEIs, fabricantes e IDs dos clientes para quem os dispositivos foram vendidos, uma maneira de gerenciar pedidos é organizá-los em duas listas: pedidos de dispositivos Samsung e outros pedidos de dispositivos Android (não Samsung). Em seguida, para cada lista, agrupe os dispositivos por cliente. Exemplo:

Dispositivos Samsung

Nome do cliente ID de cliente do Samsung Knox Fabricante IMEI
ABC Corp 11 Samsung

1234567801

1234567802

Outros dispositivos Android

Nome do cliente ID de cliente Fabricante IMEI
Corporativa ABC 21 Google 1234567803
XYZ Corp 22 Sony

1234567804

1234567805

Etapa 2: criar um objeto ClaimDevicesRequest

Dispositivos Samsung

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

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

Etapa 3: reivindicar dispositivos para clientes

Para reivindicar dispositivos para clientes, ligue para ClaimDevicesAsync. Esses exemplos requerem duas solicitações separadas: uma do objeto ResellerService da Samsung e outra do objeto ResellerService do Google.

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

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

Uma solicitação ClaimDevicesAsync retorna uma lista de objetos Operation, que contêm o status da solicitação (em andamento, concluída, concluída com erros ou com falha). Para verificar o status de uma operação (por exemplo, se a resposta retornou IN_PROGRESS), chame 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);

Cancelar a reivindicação de um lote de dispositivos

A desistência desassocia o dispositivo de um cliente. Talvez seja necessário cancelar a reivindicação de um dispositivo se um pedido for cancelado ou se um envio de dispositivos não for concluído. Para cancelar a reivindicação de um lote de dispositivos, siga estas etapas:

Etapa 1: criar o objeto UnclaimDevicesRequest

Dispositivos Samsung

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

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

Etapa 2: remover a reivindicação dos dispositivos

Para remover a reivindicação de dispositivos, chame UnclaimDevicesAsync. Esse exemplo requer duas solicitações separadas: uma do objeto ResellerService da Samsung e outra do objeto ResellerService do Google.

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

Uma solicitação UnclaimDevicesAsync retorna uma lista de objetos Operation, que contêm o status da solicitação (em andamento, concluída, concluída com erros ou com falha). Para verificar o status de uma operação (por exemplo, se a resposta retornou IN_PROGRESS), chame getOperation.

Dispositivos Samsung

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

Outros dispositivos Android

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

Trocar um dispositivo Samsung

Se um dispositivo precisar ser substituído por qualquer motivo, você poderá fazer a troca. Neste exemplo, presumimos que você está trocando um dispositivo Samsung por outro dispositivo Samsung.

Etapa 1: criar um objeto 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();

Etapa 2: chamar UnclaimDeviceAsync

UnclaimDevicesResponse samsungResponse = samsungResellerService.unclaimDevicesAsync(unclaimSamsungDevicesRequest);

Uma solicitação UnclaimDevicesAsync retorna uma lista de objetos Operation, que contém o status da solicitação (em andamento, concluída, completa com erros ou com falha). Para verificar o status de uma operação (por exemplo, se a resposta retornou IN_PROGRESS), chame getOperation:

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

Etapa 3: criar um objeto 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();

Etapa 4: ligar para ClaimDeviceAsync

ClaimDevicesResponse samsungResponse = samsungResellerService.claimDevicesAsync(claimSamsungDevicesRequest);

Uma solicitação ClaimDevicesAsync retorna uma lista de objetos Operation, que contém o status da solicitação (em andamento, concluída, concluída com erros ou com falha). Para verificar o status de uma operação (por exemplo, se a resposta retornou IN_PROGRESS), chame getOperation:

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

Trocar um dispositivo Android (não Samsung)

Se um dispositivo precisar ser substituído por qualquer motivo, você poderá fazer a troca. Este exemplo presume que você está trocando um dispositivo Android (não Samsung) por outro dispositivo Android (não Samsung).

Etapa 1: criar um objeto UnclaimDeviceRequest

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

Etapa 2: chamar UnclaimDevice

googleResponse = googleResellerService.unclaimDevice(unclaimGoogleDeviceRequest);

Etapa 3: criar um objeto 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();

Etapa 4: ligar para ClaimDevice

ClaimDeviceResponse response = googleResellerService.claimDevice(claimGoogleDeviceRequest);

Se bem-sucedida, a chamada vai retornar um objeto ClaimDeviceResponse contendo o deviceId. Caso contrário, ele gera uma exceção comum com um código de erro.