Verification Channels
Choose the right communication channel for your mDL verification use case.
The mDL SDK supports three verification channels as defined by ISO 18013-5. Each channel has different characteristics suited to various use cases.
| Channel | Best For | Range | Setup Complexity |
|---|---|---|---|
| QR Code | Most scenarios, easy UX | Visual range | Low |
| NFC | Quick tap verification | < 4cm | Medium |
| Bluetooth LE | Hands-free, larger data | ~10m | Medium |
QR Code Verification
QR code verification is the most common and easiest to implement. Your app displays a QR code that the mDL holder scans with their wallet app, which then responds with their credential data.
When to Use
- General-purpose age or identity verification
- Retail and hospitality environments
- When NFC/BLE hardware isn't available
- Remote or contactless verification
Implementation
NFC Verification
NFC verification allows the holder to tap their phone against your device. This provides a quick, intuitive experience similar to contactless payments.
When to Use
- Point-of-sale terminals
- Access control systems
- Quick repeated verifications
- When both devices have NFC
Check NFC Availability
Implementation
Bluetooth LE Verification
Bluetooth Low Energy (BLE) verification allows wireless communication over a longer range than NFC. This is useful for hands-free scenarios or when transferring larger amounts of data.
When to Use
- Hands-free verification scenarios
- When requesting large data like photos
- Vehicle-based verification (drive-through)
- When NFC isn't practical
Check BLE Availability
Implementation
ACCESS_FINE_LOCATION at runtime before starting BLE verification.Channel Selection Best Practices
Consider these factors when choosing a verification channel:
| Factor | QR | NFC | BLE |
|---|---|---|---|
| Device requirements | Camera only | NFC hardware | BLE hardware |
| User action | Scan QR code | Tap devices | Proximity |
| Data transfer speed | Limited | Moderate | Fast |
| Power consumption | Low | Very low | Moderate |
| Implementation effort | Simple | Moderate | Moderate |
Multi-Channel Support
Your app can support multiple channels and let users choose, or automatically select based on device capabilities: