本页面举例说明了您可以使用 通用 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
来调用 createCustomer
:
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 客户 ID。
其他 Android 设备
对于其他 Android 设备,客户要求零触摸注册
客户 ID。如果客户已在另一客户处使用零触摸注册
可以使用其现有的客户 ID。否则,您需要创建一个
Customer
对象。为此,请使用 ResellerService
调用 createCustomer
从 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
对象。您可以
从响应中检索客户 ID。
批量领取设备
认领设备会在该设备与客户之间建立关联。对于 例如,如果您向客户出售一批设备, 所有可用设备
此示例显示了处理包含 从多个制造商(三星和其他 Android) 设备)。
第 1 步:整理设备和客户
根据设备 IMEI、制造商和客户 ID 表格, 那么,管理订单的方法之一是 列表:三星设备订单和其他 Android(非三星)设备订单。 然后,针对每个列表,按客户对设备进行分组。例如:
三星设备
客户名称 | Samsung Knox 客户 ID | 制造商 | IMEI |
---|---|---|---|
ABC 公司 | 11 |
Samsung |
|
其他 Android 设备
客户名称 | 客户 ID | 制造商 | IMEI |
---|---|---|---|
ABC 公司 | 21 |
Google |
1234567803 |
XYZ 公司 | 22 |
Sony |
|
第 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
。否则,它会抛出包含错误代码的常见异常。