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

用户旅程（User Journeys）是由 SDK 与已配置流程协同编排的多步骤采集会话。例如，`idchecktrustdocssign` 流程将在单个会话中依次执行自拍、证件拍摄和签名。

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

## 工作原理

该插件委托底层原生 SDK 执行：

1. 插件通过 SmartFrame 叠加层打开摄像头（Android 或 iOS）。
2. 原生 SDK 编排流程所需的采集序列（自拍、证件、签名）。
3. SDK 在内部将结果转发给 Unico——客户端不会直接接收或管理图像数据。
4. 通过平台通道返回包含 `processId` 的 `SuccessResult` 对象。

编排完全由 SDK 处理——您无需在 Dart 代码中实现步骤序列。

## 摄像头模式（智能采集）

SDK 默认启用**智能取景**和**自动采集**。在构建器中按如下方式配置摄像头模式：

```dart
UnicoCheckCameraOpener _opener = new UnicoCheck(this)
    .setAutoCapture(autoCapture: true)
    .setSmartFrame(smartFrame: true)
    .build();
```

## 启动用户旅程

****步骤 2** — 在 `UnicoSelfie` 上实现旅程监听器**

将旅程回调添加到您的状态类中：

  | 方法 | 描述 |
  |---|---|
  | `onSuccess(SuccessResult result)` | 采集成功——返回包含 `processId` 的 `SuccessResult`（Unico 在内部处理图像） |
  | `onErrorSelfie(UnicoError error)` | 采集失败——返回包含代码和描述的 `UnicoError` |

  :::warning[无图像数据]
  与 Liveness 流程不同，用户旅程回调**不**返回 `base64` 或 `encrypted`。Unico 在内部处理图像，仅返回 `processId`。
  :::

  ```dart
  @override
  void onSuccess(SuccessResult result) {
    debugPrint('processId: ${result.processId}');
  }

  @override
  void onErrorSelfie(UnicoError error) { }
  ```

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

`openCameraSelfie` 方法用于打开摄像头。对于用户旅程，请传入 Unico 提供的 `webAppToken`，而非 JSON 凭证文件：

  ```dart
  _opener.openCameraSelfie(
    listener: this,
    webAppToken: token,
  );
  ```

## 监控数据收集

`openCameraSelfie` 方法提供了一个重载，可通过 `UnicoCheckPrepareInfo` 接受元数据，以协助识别用户会话和流程：

- `externalUserId`（String，**必填**）——您系统中的用户标识符。传输前自动使用 SHA-256 进行哈希处理。
- `useCase`（String，可选）——当前运行的上下文或流程标识符。以明文方式传输。

```dart
_opener.openCameraSelfie(
  listener: this,
  webAppToken: token,
  prepareInfo: UnicoCheckPrepareInfo(
    externalUserId: 'external_user_id',
    useCase: 'use_case', // optional
  ),
);
```

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