Parcours utilisateur
Les parcours utilisateur sont des sessions de capture multi-étapes orchestrées par le SDK conjointement avec le flux configuré. Par exemple, le flux idchecktrustdocssign exécute selfie + document + signature en une seule session.
Les parcours disponibles dépendent du flux configuré pour votre intégration. Consultez Cas d'usage pour le mappage complet cas d'usage → flux → capacité.
Le plugin délègue aux SDK natifs sous-jacents :
- Le plugin ouvre la caméra (Android ou iOS) avec la superposition SmartFrame.
- Le SDK natif orchestre la séquence de captures requises pour le flux (selfie, document, signature).
- Le SDK transmet les résultats à Unico en interne — le client ne reçoit ni ne gère les données d'image directement.
- Retourne un objet
SuccessResultavec unprocessIdvia le canal de plateforme.
L'orchestration est entièrement gérée par le SDK — vous n'avez pas besoin d'implémenter la séquence d'étapes dans votre code Dart.
Le SDK a le cadrage intelligent et la capture automatique activés par défaut. Configurez le mode caméra dans votre builder comme suit :
UnicoCheckCameraOpener _opener = new UnicoCheck(this)
.setAutoCapture(autoCapture: true)
.setSmartFrame(smartFrame: true)
.build();
Les valeurs false/true pour les méthodes ci-dessus ne modifient pas l'expérience de capture ; elles sont utilisées uniquement pour la logique interne du SDK.
Étape 1 — Implémenter UnicoListener
UnicoListener gère les callbacks du cycle de vie du SDK. Implémentez les quatre méthodes obligatoires :
| Méthode | Quand elle est appelée |
|---|---|
onErrorUnico(error) | Une erreur s'est produite lors de l'opération du SDK |
onUserClosedCameraManually() | L'utilisateur a fermé la caméra manuellement |
onSystemClosedCameraTimeoutSession() | La limite de session de 40 secondes a été atteinte |
onSystemChangedTypeCameraTimeoutFaceInference() | Aucun visage détecté pendant 13 secondes — bascule vers la capture manuelle |
class _MyHomePageState extends State<MyHomePage> implements UnicoListener {
late UnicoCheckBuilder _unicoCheck;
@override
void onErrorUnico(UnicoError error) {}
@override
void onUserClosedCameraManually() {}
@override
void onSystemClosedCameraTimeoutSession() {}
@override
void onSystemChangedTypeCameraTimeoutFaceInference() {}
}
Les quatre méthodes listener ci-dessus doivent être créées dans votre projet (même sans aucune logique). Sinon, le projet ne compilera pas correctement.
Étape 2 — Implémenter les listeners de parcours sur UnicoSelfie
Ajoutez les callbacks de parcours à votre classe d'état :
| Méthode | Description |
|---|---|
onSuccess(SuccessResult result) | Capture réussie — retourne SuccessResult avec processId (Unico traite l'image en interne) |
onErrorSelfie(UnicoError error) | Capture échouée — retourne un UnicoError avec le code et la description |
Contrairement au flux Liveness, le callback User Journey ne retourne pas de base64 ni d'encrypted. Unico gère le traitement de l'image en interne et retourne uniquement un processId.
@override
void onSuccess(SuccessResult result) {
debugPrint('processId: ${result.processId}');
}
@override
void onErrorSelfie(UnicoError error) { }
Étape 3 — Appeler openCameraSelfie
La méthode openCameraSelfie ouvre la caméra. Pour les parcours utilisateur, passez le webAppToken fourni par Unico au lieu d'un fichier JSON d'identifiants :
_opener.openCameraSelfie(
listener: this,
webAppToken: token,
);
La méthode openCameraSelfie fournit une surcharge qui accepte des métadonnées via UnicoCheckPrepareInfo pour aider à identifier la session utilisateur et le flux :
externalUserId(String, obligatoire) — Identifiant de l'utilisateur dans votre système. Automatiquement haché en SHA-256 avant transmission.useCase(String, optionnel) — Identifiant du contexte ou du flux en cours d'exécution. Transmis en clair.
_opener.openCameraSelfie(
listener: this,
webAppToken: token,
prepareInfo: UnicoCheckPrepareInfo(
externalUserId: 'external_user_id',
useCase: 'use_case', // optional
),
);
Pour la gestion complète du résultat, consultez Réception du résultat.