Saltar al contenido principal

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.

Casos de uso

Los journeys disponibles dependen del flujo configurado para su integración. Consulte Casos de uso para ver el mapeo completo de caso de uso → 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();
consejo

Los valores false/true de los métodos anteriores no cambian la experiencia de captura; se utilizan únicamente para la lógica interna del SDK.

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 obligatorios

Los 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ón
Sin datos de imagen

A 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.

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

@override
void 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.