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

- [/zh-CN/](/zh-CN/)
- [SDK 与工具](/zh-CN/developers/sdks-and-tools/overview)
- [iOS SDK](/zh-CN/developers/sdks-and-tools/ios/requirements)
- 采集流程
- 用户旅程

# 用户旅程

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

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

工作原理
SDK：

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

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

启动用户旅程
**步骤 1** — 实现 `AcessoBioManagerDelegate``AcessoBioManagerDelegate` 负责处理 SDK 生命周期回调。实现以下四个必须的方法：

| 方法 | 调用时机 |
| --- | --- |
| `onErrorAcessoBioManager(error)` | SDK 操作过程中发生错误 |
| `onUserClosedCameraManually()` | 用户手动关闭了摄像头 |
| `onSystemClosedCameraTimeoutSession()` | 达到 40 秒会话时间限制 |
| `onSystemChangedTypeCameraTimeoutFaceInference()` | 13 秒内未检测到人脸 — 切换为手动捕获 |

- Swift
- Objective-C

```
class ViewController: UIViewController, AcessoBioManagerDelegate {**  var unicoCheck: AcessoBioManager!  override func viewDidLoad() {    super.viewDidLoad()    unicoCheck = AcessoBioManager(viewController: self)  }  func onErrorAcessoBioManager(_ error: ErrorBio!) { }  func onUserClosedCameraManually() { }  func onSystemClosedCameraTimeoutSession() { }  func onSystemChangedTypeCameraTimeoutFaceInference() { }}
```

```
@implementation ViewController: UIViewController- (void)viewDidLoad {    [super viewDidLoad];    unicoCheck = [[AcessoBioManager alloc]initWithViewController:self];}- (void)onErrorAcessoBioManager:(ErrorBio *)error { }- (void)onSystemChangedTypeCameraTimeoutFaceInference { }- (void)onSystemClosedCameraTimeoutSession { }- (void)onUserClosedCameraManually { }@end
```

必须实现的委托方法上述四个委托方法必须在您的项目中创建（即使不包含任何逻辑）。否则，项目将无法成功编译。
**步骤 2** — 实现 `AcessoBioSelfieDelegate`重写方法以处理旅程采集结果  回调：方法描述`onSuccessSelfie(result)`图像采集成功——返回用于后续 REST API 调用的 `SelfieResult``onSuccess(result)`旅程成功完成——返回用于查询验证结果的 `processId``onErrorSelfie(errorBio)`采集失败——返回包含错误详情的 `ErrorBio`SwiftObjective-C```
class ViewController: UIViewController, AcessoBioManagerDelegate,  SelfieCameraDelegate, AcessoBioSelfieDelegate {  func onSuccessSelfie(_ result: SelfieResult!) { }  func onSuccess(_ result: SuccessResult!) { }  func onErrorSelfie(_ errorBio: ErrorBio!) { }}
```

```
@interface ViewController: UIViewController <AcessoBioManagerDelegate,  SelfieCameraDelegate, AcessoBioSelfieDelegate>@end@implementation ViewController- (void)onSuccessSelfie:(SelfieResult *)result { }- (void)onSuccess:(SuccessResult *)result { }- (void)onErrorSelfie:(ErrorBio *)errorBio { }@end
```

**步骤 3** — 调用 `prepareSelfieCamera` 和 `open`调用 `prepareSelfieCamera` 并传入 SDK 配置。摄像头就绪后，`onCameraReady` 事件将触发——通过 `open()` 方法传入 `webAppToken` 打开摄像头：webAppToken`webAppToken` 是在后端创建流程时，`POST /client/v1/process` 返回的 `process.webAppToken` 字段。请参阅创建流程。
`onCameraReady(cameraOpener)` — 摄像头已就绪；调用 `open(self, webAppToken:)`。
`onCameraFailed(message)` — 摄像头准备失败（`ErrorPrepare` 是 `ErrorBio` 的扩展）。
SwiftObjective-C```
@IBAction func openCamera(_ sender: Any) {  unicoCheck.build().prepareSelfieCamera(self, config: YourUnicoConfigClass())}func onCameraReady(_ cameraOpener: AcessoBioCameraOpenerDelegate!) {  cameraOpener.open(self, webAppToken: "your_web_app_token")}func onCameraFailed(_ message: ErrorPrepare!) { }
```

```
- (IBAction)openCamera:(UIButton *)sender {    [[unicoCheck build] prepareSelfieCamera:self config:[YourUnicoConfigClass new]];}- (void)onCameraReady:(id)cameraOpener {    [cameraOpener open:self webAppToken:@"your_web_app_token"];}- (void)onCameraFailed:(ErrorPrepare *)message { }
```

有关完整的结果处理，请参阅[接收结果](/zh-CN/developers/sdks-and-tools/ios/capture-flow/receiving-the-result)。最后更新 于 2026年10月8日**