常见操作

本页面举例说明了您可以使用 通用 Android 转销商库,包括:


创建 ResellerService 对象

使用 Samsung 和 Google 工厂类创建 ResellerService 对象。 借助 ResellerService 对象,您可以使用一组通用方法进行注册 三星和其他 Android 设备。

三星设备

以下示例展示了如何使用ResellerService SamsungResellerServiceFactory 类来管理三星设备。

在执行这项操作之前,您需要先授权参与 Knox 部署计划 (KDP)。

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

其他 Android 设备

以下示例展示了如何使用ResellerService GoogleResellerServiceFactory 类,用于管理其他(非三星)Android 设备。在此之前,您需要先按照使用入门 用于零触摸注册 以获取您的 resellerId 和服务账号密钥。

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

创建 Customer 对象

购买三星设备和非三星设备的客户需要两个客户 ID。

三星设备

要管理三星设备,请使用客户的 Knox 客户 ID。要获取 Knox 客户 ID,您需要先创建一个 Customer 对象。为此, 使用从以下属性创建的 SamsungResellerService 来调用 createCustomerSamsungResellerServiceFactory。示例如下:

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 客户 ID。

其他 Android 设备

对于其他 Android 设备,客户要求零触摸注册 客户 ID。如果客户已在另一客户处使用零触摸注册 可以使用其现有的客户 ID。否则,您需要创建一个 Customer 对象。为此,请使用 ResellerService 调用 createCustomerGoogleResellerServiceFactory 创建。下面举例说明:

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(非三星)设备订单。 然后,针对每个列表,按客户对设备进行分组。例如:

三星设备

客户名称 Samsung 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。此示例 需要两个单独的请求:一个来自 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);

更换三星设备

如果因为任何原因需要更换设备,您可以更换设备。这个 假设您将一部三星设备换成另一部三星设备 设备。

第 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(非三星)设备。

第 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。否则,它会抛出包含错误代码的常见异常。