vove_id_flutter 1.7.0
vove_id_flutter: ^1.7.0 copied to clipboard
VOVE ID - Instant, seamless identity verification. Designed for trust, user-centric, fully compliant with AML/KYC. Optimized for the MEA region.
Vove Flutter SDK Guide #
Based on the official Vove documentation at docs.voveid.com/docs/sdks/flutter.
Overview #
The vove_id_flutter plugin wraps the native Vove iOS and Android SDKs to deliver a single, idiomatic Dart API for ID verification, KYC, and AML compliance. It supports:
- Sandbox and production environments
- Full-screen or custom UI flows
- Locale overrides
- Vocal guidance
- Per-step exits and next-step routing
- Max-attempt callbacks
Installation #
Add the dependency to your pubspec.yaml:
dependencies:
vove_id_flutter: ^1.7.0
Then run flutter pub get.
Initialization #
Call Vove.initialize as soon as your verification UI loads—before you invoke Vove.start—to ensure the native SDK is ready. For most apps this happens when the screen that initiates verification is displayed:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Vove.initialize(
environment: VoveEnvironment.sandbox, // or production
publicKey: 'YOUR_PUBLIC_KEY',
);
runApp(const MyApp());
}
Starting a Verification Session #
Generate a session token on your backend (see Vove’s REST API docs) and pass it to Vove.start. The call returns a VoveVerificationResult describing the current status and the next required step (when exitAfterEachStep is enabled).
final config = VoveStartConfiguration(
showUI: true,
exitAfterEachStep: false,
onMaxAttemptsReached: () {
// e.g., prompt the user to contact support
},
);
final result = await Vove.start(
sessionToken: 'SESSION_TOKEN_FROM_BACKEND',
configuration: config,
locale: VoveLocale.fr,
enableVocalGuidance: true,
);
switch (result.status) {
case VoveVerificationStatus.success:
// Journey signal only: show an awaiting-confirmation state. Grant
// access only after your backend verifies the webhook and fetches
// GET /v2/users/{refId} — never from this payload alone.
showAwaitingServerConfirmation();
break;
case VoveVerificationStatus.pending:
// wait for manual review
showPendingReview();
break;
case VoveVerificationStatus.maxAttempts:
// show support options
showSupportOptions();
break;
default:
// handle other outcomes (canceled, inProgress, failure, unknown)
reportIntegrationError();
}
Configuration Options #
| Field | Type | Default | Description |
|---|---|---|---|
showUI |
bool |
true |
Displays Vove’s built-in welcome/summary screens. Disable to provide your own UI. |
exitAfterEachStep |
bool |
false |
Returns control after each step (e.g., ID_DOCUMENT, LIVENESS) so you can interleave your own flows. |
onMaxAttemptsReached |
VoidCallback? |
null |
Invoked when the user reaches the maximum verification attempts. |
locale |
VoveLocale? |
en |
Overrides the SDK UI language (en, fr, ar, de, arMA). |
enableVocalGuidance |
bool? |
false |
Plays voice instructions during the 3D liveness step. |
Result Values #
VoveVerificationStatus can be:
success(journey signal only — confirm via backend webhook +GET /v2/users/{refId})pendingcanceledinProgressmaxAttemptsfailureunknown(fail safe: treat as pending/error, never as success)
When exitAfterEachStep is true, result.nextStep indicates the next action (ID_DOCUMENT, LIVENESS, ADDRESS_PROOF, CAR_REGISTRATION_DOCUMENT (also CAR_REGISTRATION_CARD), DRIVING_LICENSE, DONE, or unknown). Unsupported future steps surface as unknown — treat them as pending/error, never as success.
Failures surface as VoveException with the native error code (ACTIVITY_UNAVAILABLE, INVALID_PARAMETERS, INITIALIZATION_FAILED, VERIFICATION_FAILED, VOVE_ERROR).
Compatibility #
See COMPATIBILITY.md for the tested Flutter/Dart/native matrix.
This line pins Android vove-id-android:1.9.0 and iOS VoveSDK 1.7.0; both were
API-verified as drop-in upgrades over the 1.6.x pins.
Troubleshooting #
| Issue | Fix |
|---|---|
VoveStartConfiguration not found (iOS) |
Run pod repo update && pod install so VoveSDK ≥ 1.7.0 is fetched. |
Crash on iOS: mprotect failed |
Ensure the Runner target uses the provided entitlements (Runner/DebugProfile.entitlements). |
maxAttempts callback never fires |
Supply onMaxAttemptsReached in VoveStartConfiguration; the native bridges invoke it immediately when the SDK raises the event. |
| Session token rejected | Confirm your backend uses Vove’s Verification Session API and you’re passing the fresh token unmodified. |
For additional guidance, contact Vove support via the dashboard or reference the official Flutter documentation (docs.voveid.com/docs/sdks/flutter).