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

- [/es/](/es/)
- [SDKs y Herramientas](/es/developers/sdks-and-tools/overview)
- [Flutter SDK](/es/developers/sdks-and-tools/flutter/requirements)
- Flujo de captura
- Recorridos de usuario

# Recorridos de usuario

Los User Journeys son sesiones de captura de múltiples pasos orquestadas por el SDK en conjunto con el flujo configurado. Por ejemplo, el flujo `idchecktrustdocssign` ejecuta selfie + documento + firma en una sola sesión.

ProductosLos journeys disponibles dependen del flujo configurado para su integración. Consulte [Productos](/es/products) para ver el mapeo completo de producto → flujo → capacidad.

Cómo funciona
El plugin delega a los SDKs nativos subyacentes:

1. El plugin abre la cámara (Android o iOS) con la superposición SmartFrame.
2. El SDK nativo orquesta la secuencia de capturas requeridas por el flujo (selfie, documento, firma).
3. El SDK reenvía los resultados internamente a Unico — el cliente nunca recibe ni gestiona los datos de imagen directamente.
4. Devuelve un objeto `SuccessResult` con un `processId` a través del canal de plataforma.

La orquestación es gestionada completamente por el SDK — no es necesario implementar la secuencia de pasos en su código Dart.

Modo de cámara (captura inteligente)
El SDK tiene **encuadre inteligente** y **captura automática** habilitados por defecto. Configure el modo de cámara en su builder de la siguiente manera:

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

Iniciar un User Journey
**Paso 1** — Implementar `UnicoListener``UnicoListener` gestiona los callbacks del ciclo de vida del SDK. Implemente los cuatro métodos obligatorios:MétodoCuándo se llama`onErrorUnico(error)`Ocurrió un error durante la operación del SDK`onUserClosedCameraManually()`El usuario cerró la cámara manualmente`onSystemClosedCameraTimeoutSession()`Se alcanzó el límite de sesión de 40 segundos`onSystemChangedTypeCameraTimeoutFaceInference()`No se detectó ningún rostro durante 13 segundos — cambia a captura manual```
class _MyHomePageState extends State<MyHomePage> implements UnicoListener {  late UnicoCheckBuilder _unicoCheck;  @override  void onErrorUnico(UnicoError error) {}  @override  void onUserClosedCameraManually() {}  @override  void onSystemClosedCameraTimeoutSession() {}  @override  void onSystemChangedTypeCameraTimeoutFaceInference() {}}
```

Métodos de listener obligatoriosLos cuatro métodos de listener anteriores deben crearse en su proyecto (incluso sin ninguna lógica). De lo contrario, el proyecto no compilará correctamente.
**Paso 2** — Implementar los listeners del journey en `UnicoSelfie`Agregue los callbacks del journey a su clase de estado:MétodoDescripción`onSuccess(SuccessResult result)`Captura exitosa — devuelve `SuccessResult` con `processId` (Unico procesa la imagen internamente)`onErrorSelfie(UnicoError error)`Captura fallida — devuelve un `UnicoError` con código y descripciónSin datos de imagenA diferencia del flujo Liveness, el callback de User Journey **no** devuelve `base64` ni `encrypted`. Unico gestiona el procesamiento de imagen internamente y devuelve únicamente un `processId`.```
@overridevoid onSuccess(SuccessResult result) {  debugPrint('processId: ${result.processId}');}@overridevoid onErrorSelfie(UnicoError error) { }
```

**Paso 3** — Llamar a `openCameraSelfie`El método `openCameraSelfie` abre la cámara. Para los User Journeys, pase el `webAppToken` proporcionado por Unico en lugar de un archivo JSON de credenciales:```
_opener.openCameraSelfie(  listener: this,  webAppToken: token,);
```

Recopilación de datos de monitoreo
El método `openCameraSelfie` proporciona una sobrecarga que acepta metadatos a través de `UnicoCheckPrepareInfo` para ayudar a identificar la sesión del usuario y el flujo:

`externalUserId` (String, **requerido**) — Identificador del usuario dentro de su sistema. Se hashea automáticamente con SHA-256 antes de la transmisión.
`useCase` (String, opcional) — Identificador del contexto o flujo que se está ejecutando actualmente. Se transmite en texto plano.

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

Para el manejo completo del resultado, consulte [Recibir el resultado](/es/developers/sdks-and-tools/flutter/capture-flow/receiving-the-result).Última actualización el 8 oct 2026**