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.
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.
El plugin delega a los SDKs nativos subyacentes:
- El plugin abre la cámara (Android o iOS) con la superposición SmartFrame.
- El SDK nativo orquesta la secuencia de capturas requeridas por el flujo (selfie, documento, firma).
- El SDK reenvía los resultados internamente a Unico — el cliente nunca recibe ni gestiona los datos de imagen directamente.
- Devuelve un objeto
SuccessResultcon unprocessIda 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.
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();
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.
Paso 1 — Implementar UnicoListener
UnicoListener gestiona los callbacks del ciclo de vida del SDK. Implemente los cuatro métodos obligatorios:
| Método | Cuá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() {}
}
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étodo | Descripció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 |
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,
);
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.