1

我们一直在使用 Android 管理 API 在企业中注册设备并向我们的用户提供受限环境。我们有一个要求,我们需要通过使用此 API 发出补丁请求来批量更新所有设备:https ://developers.google.com/android/management/reference/rest/v1/enterprises.devices/patch

我正在寻找的是,不是以任意方式一一发送请求,有什么方法可以发送批量请求并在所有设备更新时接收响应?

注意:我已经知道如何做到这一点。

感谢帮助,谢谢。

4

3 回答 3

1

使用AndroidManagement.batch()API 将多个请求排队等待执行并减少客户端建立的连接。现已弃用的Google EMM API 文档包含有关此的更多信息。

这是一个关于如何创建批处理请求、将设备补丁调用排队并随后执行请求的伪示例。

AndroidManagement amapi;
var batchRequest = amapi.batch();
amapi.enterprises().devices().patch(deviceName, content).queue(batchRequest, new JsonBatchCallback<>() {

                    @Override
                    public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders) throws IOException {
                    }

                    @Override
                    public void onSuccess(com.google.api.services.androidmanagement.v1.model.Device device, HttpHeaders responseHeaders) throws IOException {
                        updateDevice(device);
                    }
                });

// queue another device patch request...

// execute all queued requests
batchRequest.execute();

请注意,如果您想进行批量更新以节省API 使用限制,这对您没有帮助。当涉及到限制时,您的批次中的所有请求都将单独计算。没有办法解决这个问题。

于 2020-05-06T07:24:32.727 回答
0

“您可以在 AndroidEnterprise 上使用 batch() 调用,通过调用 BatchRequest.execute() 来执行批量请求。请注意,单个批量请求中的调用次数限制为 1000 次,因此如果您需要进行更多调用,请使用多个批处理请求。

以下是您可以参考的格式:EMM API 批处理格式。附带一个示例:EMM API 批处理示例。”

于 2020-10-16T15:10:12.713 回答
0

您能否提供更多有关您要实现的目标的背景信息?也许你想做的事情可以通过一个策略来实现。例如,要在多个设备上安装应用程序,您可以将相同的策略应用于这些设备,然后将这些行添加到策略中:

"applications": [
  {
    "packageName": "com.google.samples.apps.iosched",
    "installType": "FORCE_INSTALLED"
  }
]

关于批处理请求,这里有一个关于如何在 Android Management API 中执行批处理请求的示例代码。

def list_devices(request_id, response, exception):
    """Do something with the devices list response."""
    if exception is not None:
      # Do something with the exception.
      pass
    else:
      # Do something with the response.
      pass

get_device1 = androidmanagement.enterprises().devices().get(name=deviceName)
get_device2 = androidmanagement.enterprises().devices().get(name=deviceName)

batch = androidmanagement.new_batch_http_request();
batch.add(get_device1, list_devices)
batch.add(get_device2, list_devices)
batch.execute()

您还可以查看此链接以获取有关 new_batch_http_request 的更多详细信息。

于 2020-07-29T05:55:49.227 回答