---
title: 用户旅程
canonical: https://developer.unico.io/zh-CN/dual-api/developers/sdks-and-tools/android/capture-flow/capture-types/user-journeys
locale: zh-CN
generated_by: markdown-export
---

用户旅程是由 SDK 结合所配置的流程编排的多步骤采集会话。例如，包含 活体检测 + 风险评分 + 文档采集与重用 + 电子签名的流程将在单个会话中依次执行自拍、文件采集和签名。

:::secondary[产品]
可用的旅程取决于为您的集成配置的流程。请参阅[产品](/products)，了解产品 → 流程 → 能力的完整映射关系。
:::

## 工作原理

SDK 的处理流程如下：

1. 读取初始化时提供的流程配置。
2. 编排流程所需的采集序列（自拍、文件、签名）。
3. 当旅程完成时，通过 `onSuccess` 返回 `processId`。对于自拍步骤，图像数据（`base64` / `encrypted`）也通过 `onSuccessSelfie` 返回。文件和签名捕获由SDK在内部处理——不会向客户端暴露每步的工件。

整个编排过程完全由 SDK 处理——您无需在应用中自行实现步骤序列。

## 启动用户旅程

****步骤 2** — 实现 `iAcessoBioSelfie`**

`iAcessoBioSelfie` 处理旅程采集结果的回调：

  | 方法 | 描述 |
  |---|---|
  | `onSuccessSelfie(result)` | 图像采集成功——返回 `ResultCamera`，用于后续 REST API 调用 |
  | `onSuccess(result)` | 旅程成功完成——返回含 `processId` 的 `SuccessResult`，用于查询验证结果 |
  | `onErrorSelfie(errorBio)` | 采集失败——返回含错误详情的 `ErrorBio` |

  ### Kotlin

    ```kotlin
    val cameraListener: iAcessoBioSelfie = object : iAcessoBioSelfie {
      override fun onSuccessSelfie(result: ResultCamera?) { }
      override fun onSuccess(result: SuccessResult) { }
      override fun onErrorSelfie(errorBio: ErrorBio?) { }
    }
    ```

### Java

    ```java
    iAcessoBioSelfie cameraListener = new iAcessoBioSelfie() {
      @Override
      public void onSuccessSelfie(ResultCamera result) { }

      @Override
      public void onSuccess(SuccessResult result) { }

      @Override
      public void onErrorSelfie(ErrorBio errorBio) { }
    };
    ```

****步骤 3** — 调用 `prepareCamera`**

完成 `unicoCheckCamera` 初始化并实现两个监听器后，调用 `prepareCamera`，传入 SDK 配置、`CameraListener` 以及您的 `webAppToken`：

  :::note[webAppToken]
  `webAppToken` 是在后端调用 `POST /client/v1/process` 创建流程时，响应中返回的 `process.webAppToken` 字段。请参阅[创建流程](/dual-api/developers/api-reference/web-sdk/post-process)。
  :::

  - `onCameraReady` — 摄像头已就绪；调用 `open`，传入 `cameraListener` 和您的 `webAppToken`。
  - `onCameraFailed` — 摄像头准备失败；处理错误信息。

  ### Kotlin

    ```kotlin
    unicoCheckCamera.prepareCamera(unicoConfig, object : CameraListener {
      override fun onCameraReady(cameraOpener: UnicoCheckCameraOpener.Camera?) {
        cameraOpener?.open(cameraListener, "your_web_app_token")
      }

      override fun onCameraFailed(message: String?) {
        Log.e(TAG, message)
      }
    })
    ```

### Java

    ```java
    unicoCheckCamera.prepareCamera(unicoConfig, new CameraListener() {
      @Override
      public void onCameraReady(UnicoCheckCameraOpener.Camera cameraOpener) {
        cameraOpener.open(cameraListener, "your_web_app_token");
      }

      @Override
      public void onCameraFailed(String message) {
        Log.e(TAG, message);
      }
    });
    ```

有关完整的结果处理说明，请参阅[接收结果](/developers/sdks-and-tools/android/capture-flow/receiving-the-result)。