Skip to main content

Documentation Index

Fetch the complete documentation index at: https://jdev-e8db0569.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Installation Issues

Pod Install Fails (iOS)

Symptom:
[!] CocoaPods could not find compatible versions for pod "SEONOrchSDK"
Solutions:
  1. Ensure your minimum iOS version is 13.0 or higher in your Podfile:
platform :ios, '13.0'
  1. Update your CocoaPods repository:
cd ios
pod repo update
pod install
cd ..
  1. If still failing, try clearing the cache:
cd ios
rm -rf Pods
rm Podfile.lock
pod cache clean --all
pod install
cd ..

Gradle Sync Fails (Android)

Symptom:
Could not find io.seon:orchestration-android-sdk
Solutions:
  1. Ensure mavenCentral() is in your repositories in android/build.gradle:
allprojects {
    repositories {
        mavenCentral()
        google()
    }
}
  1. Check that your minSdkVersion is at least 26:
android {
    defaultConfig {
        minSdkVersion 26
    }
}
  1. Try cleaning and rebuilding:
cd android
./gradlew clean
./gradlew build
cd ..

Plugin Not Found

Symptom:
Could not resolve package 'seon_orchestration_flutter'
Solutions:
  1. Verify your pubspec.yaml dependency is correct
  2. Run flutter pub get again
  3. If using a path dependency, verify the path is correct

Runtime Errors

”SEON SDK not initialized” Error

Symptom:
SeonException(eNotInitialized): SEON SDK has not been initialized. Call initialize() first.
Solution: You must call initialize() before calling startVerification(). The SDK remains initialized across multiple verification flows until dispose() is called:
// Initialize once
await SeonOrchestration.initialize(config);

// Can call startVerification() multiple times
final result = await SeonOrchestration.startVerification();

// When done, clean up resources
await SeonOrchestration.dispose();
Make sure initialization completes successfully before starting verification:
Future<void> _handleVerify() async {
  try {
    await SeonOrchestration.initialize(config);
    final result = await SeonOrchestration.startVerification();
    // Handle result...
  } on SeonException catch (e) {
    debugPrint('Error: $e');
  }
}

Missing Permissions

Symptom: Verification fails immediately or SDK requests permissions that crash the app.
Ensure all required keys are in ios/Runner/Info.plist:
<key>NSCameraUsageDescription</key>
<string>We need camera access for identity verification</string>
<key>NSMicrophoneUsageDescription</key>
<string>We need microphone access for identity verification</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>We need location access for identity verification</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>We need photo library access for identity verification</string>
Missing any of these will cause the app to crash when the SDK requests that permission.

Device Testing Issues

Camera/Location Not Working on Device

Symptom: Verification starts but camera or location features don’t work. Solutions:
  1. Handle permission denial in code:
final result = await SeonOrchestration.startVerification();
if (result.status == SeonVerificationStatus.missingLocationPermission) {
  showDialog(
    context: context,
    builder: (ctx) => AlertDialog(
      title: const Text('Permission Required'),
      content: const Text('Please enable location services in Settings'),
      actions: [
        TextButton(onPressed: () => Navigator.pop(ctx), child: const Text('Cancel')),
        TextButton(
          onPressed: () => openAppSettings(),
          child: const Text('Open Settings'),
        ),
      ],
    ),
  );
}
  1. Check device settings:
    • iOS: Settings > Your App > Permissions
    • Android: Settings > Apps > Your App > Permissions
  2. Test on a different device — some devices may have hardware or OS limitations.

Build Fails on Simulator

Symptom: App builds and runs fine on device but fails on simulator. Solution: The SEON SDKs require real device hardware. They are not designed to work on simulators or emulators.
Always test on real physical devices (iPhone/iPad for iOS, Android phone/tablet for Android).
If you need to develop without a device, you can mock the plugin in your app:
// In your test/development code
if (kDebugMode) {
  debugPrint('Skipping verification in development');
  // Return mock result
}

Debugging Tips

Enable Verbose Logging

debugPrint('Initializing SEON SDK...');
await SeonOrchestration.initialize(config);
debugPrint('SEON SDK initialized');

debugPrint('Starting verification...');
final result = await SeonOrchestration.startVerification();
debugPrint('Verification result: ${result.status}');

Check Native Logs

  1. Open your project in Xcode
  2. Run on device
  3. Check Console for native logs

Test Initialization Separately

Isolate initialization to narrow down issues:
try {
  await SeonOrchestration.initialize(config);
  debugPrint('SUCCESS: Initialization completed');
} on SeonException catch (e) {
  debugPrint('FAILED: Initialization error: $e');
}

Getting Help

If you’re still experiencing issues:
  1. Check the API Reference for correct usage
  2. Review Platform Notes for platform-specific requirements
  3. Check the Architecture doc to understand how the bridge works
  4. Open an issue on GitHub with:
    • Flutter version
    • iOS/Android version
    • Error messages
    • Steps to reproduce