跳转到内容

异步操作

部分 MoreLogin 操作会在底层浏览器、云手机、文件、应用或 RPA 执行到达最终状态之前就接受请求。提交成功的响应只代表请求已被接受,并不总是代表目标状态已经达成。

客户端状态模型

状态含义客户端应做什么
已提交接口已接受命令或已创建任务保存返回的 ID 与 requestId;不要立刻重复提交同一次写操作
等待中或执行中下游操作仍在推进以递增间隔轮询文档指定的状态/结果接口
已成功目标资源或任务到达成功终态停止轮询,继续后续流程
已失败状态/结果接口报告失败或终态业务错误停止自动重试;保留 ID、失败详情与 requestId
结果未知写操作超时,或连接断开且没有可用响应先查询资源/任务当前状态,再决定是否重试

轮询规则

  • 从约 1 秒开始,逐步增加到 2、4、8 秒,上限 15–30 秒。
  • 加入抖动,避免并发客户端在同一瞬间轮询。
  • 到达文档定义的终态即停止;不要无限轮询。
  • 只有接口明确说明该行为时,才把 data: null 当作等待中。
  • 写操作的传输超时并不证明失败。

已记录的工作流

工作流提交操作观察操作终态
云浏览器开启/关闭POST /cloudbrowser/start/cloudbrowser/stopPOST /cloudbrowser/page运行实例达到预期状态,或关闭后消失
云手机开关机POST /cloudphone/powerOn/cloudphone/powerOffPOST /cloudphone/pageenvStatus=4 已开机或 envStatus=2 已关机;1 表示创建失败
云手机文件上传上传到签名 URL,然后 POST /cloudphone/uploadFilePOST /cloudphone/uploadFileResultstatus=1 成功或 status=2 失败;data: nullstatus=0 表示等待中
云手机下载POST /cloudphone/downloadPOST /cloudphone/download/resultstatus=20 成功、30 失败、40 已取消;10 表示执行中
应用安装POST /cloudphone/app/installPOST /cloudphone/app/installedList目标包名出现在已安装应用列表中
RPA 计划/执行POST /cloudphone/rpa/task/save/onceTask/savePOST /cloudphone/rpa/task/page/subTask/page/subTask/detail/{id}taskState=2 已完成或 3 已取消;再看 handleResult0 失败,1 成功)
直播POST /cloudphone/live/start/live/endPOST /cloudphone/live/status状态确认已开始或已停止推流
云存储上传POST /cloudstorage/upload/init,随后对对象存储发 PUT全部必需 PUT 成功后调用 POST /cloudstorage/upload/complete完成请求返回成功;对象上传成功前绝不要调用 complete

Local API 的对应接口在文档标注处使用 /api 前缀。逐个操作的指引见端点重试与完成矩阵

超时恢复示例

try:
    submit_operation()
except TimeoutError:
    # The write may already have succeeded.
    current = query_current_state()
    if current.is_terminal_success:
        pass
    elif current.is_pending:
        poll_until_terminal()
    else:
        decide_whether_retry_is_safe(current)

公开接口目前没有定义通用的幂等键请求头。因此资源 ID、任务 ID、状态查询与 requestId 是安全恢复的关键。