Onboarding mobile
Incorpori la pagina di acquisizione ospitata di Live ID in un'app nativa — configurazione della WebView e permessi della fotocamera per iOS, Android e .NET MAUI, con app di esempio pronte all'uso.
In un'app nativa incorpora la pagina di acquisizione ospitata in una WebView, invece di costruire una propria interfaccia di fotocamera. La WebView esegue lo stesso flusso del web — selfie, confronto del volto, vivacità — e la Sua app legge il verdetto interrogando la sessione.
La pagina ospitata imposta frame-ancestors 'none', quindi non può essere inserita in un iframe web. Una WebView nativa esegue un caricamento a livello principale, non un iframe, quindi va bene — ed è lo schema corretto (progettazione v1 bloccata).
Lo schema
graph TD
A[App: user taps Log in] --> B[Ask your backend to mint a session]
B --> C[Backend returns captureUrl + sessionToken]
C --> D[Open captureUrl in a WebView]
D --> E[WebView: selfie -> face match + liveness]
A --> F[Poll GET …/sessions/sessionToken every 2s]
E --> F
F --> G{status == completed?}
G -->|yes| H[Read matched -> grant or deny, close WebView]
G -->|no| F
Due cose sono necessarie su ogni piattaforma:
- Crei sul server, tenga solo il token. L'app chiama il Suo backend, che chiama
POST /sessionsdi Certivant con la chiave di identificazione. L'app riceve solocaptureUrlesessionToken. - Conceda la richiesta di fotocamera della WebView.
getUserMediaall'interno di una WebView è bloccato finché non lo concede esplicitamente — il punto di aggancio varia per piattaforma (sotto).
Permesso della fotocamera per piattaforma
iOS (WKWebView). Dichiari NSCameraUsageDescription, consenta i media inline e
conceda la richiesta di acquisizione tramite WKUIDelegate (iOS 15+):
let config = WKWebViewConfiguration()
config.allowsInlineMediaPlayback = true
config.mediaTypesRequiringUserActionForPlayback = []
// WKUIDelegate:
func webView(_ webView: WKWebView,
requestMediaCapturePermissionFor origin: WKSecurityOrigin,
initiatedByFrame frame: WKFrameInfo,
type: WKMediaCaptureType,
decisionHandler: @escaping (WKPermissionDecision) -> Void) {
decisionHandler(.grant)
}
Android (WebView). Aggiunga il permesso CAMERA nel manifest, lo richieda a
runtime e conceda la richiesta della pagina in WebChromeClient:
webView.settings.javaScriptEnabled = true
webView.settings.mediaPlaybackRequiresUserGesture = false
webView.webChromeClient = object : WebChromeClient() {
override fun onPermissionRequest(req: PermissionRequest) {
runOnUiThread { req.grant(arrayOf(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) }
}
}
.NET MAUI. Personalizzi una volta sola l'handler WebView condiviso; ogni
piattaforma collega la propria concessione (Android WebChromeClient, iOS/Mac
WKUIDelegate, Windows WebView2 PermissionRequested). Aggiunga
NSCameraUsageDescription (iOS/Mac), il permesso CAMERA (Android) e la capacità
webcam (Windows).
Microsoft.Maui.Handlers.WebViewHandler.Mapper.AppendToMapping(
"LiveIdCamera", (handler, view) => {
#if ANDROID
handler.PlatformView.SetWebChromeClient(new LiveIdChromeClient());
#elif IOS || MACCATALYST
handler.PlatformView.UIDelegate = new LiveIdUIDelegate();
#elif WINDOWS
// CoreWebView2.PermissionRequested -> Allow (Camera)
#endif
});
Lettura dell'esito
Interroghi l'endpoint di stato e si fermi quando la verifica è completata:
GET https://app.certivant.com/api/kyc/public/live-id/sessions/{sessionToken}
→ { "status": "completed", "matched": true, … }
matched === true → conceda l'accesso. Il Suo backend può anche iscriversi al webhook live_id.validation.completed per un segnale autorevole lato server — utile quando vuole che la decisione di concedere l'accesso risieda interamente sul Suo backend.
App di esempio
Riferimenti completi e funzionanti si trovano nel repository sotto samples/live-id-validation/:
| Esempio | Stack | Piattaforme |
|---|---|---|
android-kotlin/ | Kotlin | Android |
ios-swiftui/ | SwiftUI | iOS 15+ |
maui/ | .NET MAUI | Android · iOS · Windows · macOS |
Ognuna è una sola schermata: tocchi Verifica con selfie → WebView → esito. Imposti il Suo host e una fonte di sessione nella LiveIdConfig dell'esempio (il Suo endpoint backend, oppure un token creato con curl per una prova rapida), poi esegua. Consulti il README di ogni esempio per i passaggi di compilazione e per i file esatti che collegano la concessione della fotocamera e l'interrogazione.
Riferimento API di Live ID
Endpoint di Live ID Validation — emissione di una chiave di identificazione, creazione di una sessione di acquisizione, apertura della pagina di acquisizione ospitata, invio di un selfie, interrogazione dell'esito e payload del webhook di validazione.
Server MCP
Colleghi un assistente IA a Certivant tramite il Model Context Protocol — smisti la coda delle verifiche, invii e monitori i moduli, sollecitare i richiedenti fermi, spieghi le decisioni e generi report, tutto con la Sua chiave API esistente.