---
title: Recorridos de usuario
canonical: https://developer.unico.io/es/dual-api/developers/sdks-and-tools/ios/capture-flow/capture-types/user-journeys
locale: es
generated_by: markdown-export
---

Los recorridos de usuario son sesiones de captura de múltiples pasos orquestadas por el SDK en conjunto con el flujo configurado. Por ejemplo, un flujo con Detección de Vida + Score de Riesgo + Captura de Documentos + Firma Electrónica ejecuta selfie, captura de documento y firma en una sola sesión.

:::secondary[Productos]
Los recorridos disponibles dependen del flujo configurado para tu integración. Consulta [Productos](/products) para ver el mapeo completo de producto → flujo → capacidad.
:::

## Cómo funciona

El SDK:

1. Lee la configuración del flujo proporcionada durante la inicialización.
2. Orquesta la secuencia de capturas requeridas para el flujo (selfie, documento, firma).
3. Devuelve un `processId` mediante `onSuccess` cuando el journey finaliza. Para el paso de selfie, los datos de imagen (`base64` / `encrypted`) también se devuelven mediante `onSuccessSelfie`. Las capturas de documentos y firma son procesadas internamente por el SDK — no se expone ningún artefacto por paso al cliente.

La orquestación es gestionada completamente por el SDK — no es necesario implementar la secuencia de pasos en tu aplicación.

## Inicio de un recorrido de usuario

****Paso 2** — Implementar `AcessoBioSelfieDelegate`**

Sobrescribe los métodos para gestionar los callbacks del resultado de captura del recorrido:

  | Método | Descripción |
  |---|---|
  | `onSuccessSelfie(result)` | Imagen capturada correctamente — devuelve `SelfieResult` para llamadas posteriores a la API REST |
  | `onSuccess(result)` | Journey completado exitosamente — devuelve un `processId` utilizado para consultar los resultados de validación |
  | `onErrorSelfie(errorBio)` | Captura fallida — devuelve un `ErrorBio` con detalles del error |

  ### Swift

    ```swift
    class ViewController: UIViewController, AcessoBioManagerDelegate,
      SelfieCameraDelegate, AcessoBioSelfieDelegate {

      func onSuccessSelfie(_ result: SelfieResult!) { }
      func onSuccess(_ result: SuccessResult!) { }
      func onErrorSelfie(_ errorBio: ErrorBio!) { }
    }
    ```

### Objective-C

    ```objectivec
    @interface ViewController: UIViewController <AcessoBioManagerDelegate,
      SelfieCameraDelegate, AcessoBioSelfieDelegate>
    @end

    @implementation ViewController
    - (void)onSuccessSelfie:(SelfieResult *)result { }
    - (void)onSuccess:(SuccessResult *)result { }
    - (void)onErrorSelfie:(ErrorBio *)errorBio { }
    @end
    ```

****Paso 3** — Llamar a `prepareSelfieCamera` y `open`**

Llama a `prepareSelfieCamera` pasando la configuración del SDK. Cuando la cámara esté lista, el evento `onCameraReady` se dispara — abre la cámara mediante el método `open()`, pasando el `webAppToken`:

  :::info[webAppToken]
  El `webAppToken` es el campo `process.webAppToken` devuelto por `POST /client/v1/process` al crear el proceso en tu backend. Ver [Crear Proceso](/dual-api/developers/api-reference/web-sdk/post-process).
  :::

  - `onCameraReady(cameraOpener)` — la cámara está lista; llama a `open(self, webAppToken:)`.
  - `onCameraFailed(message)` — la preparación de la cámara falló (`ErrorPrepare` es una extensión de `ErrorBio`).

  ### Swift

    ```swift
    @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!) { }
    ```

### Objective-C

    ```objectivec
    - (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 { }
    ```

Para el manejo completo del resultado, consulta [Recibir el resultado](/developers/sdks-and-tools/ios/capture-flow/receiving-the-result).