Live ID ValidationMobiles Onboarding

Mobiles Onboarding

Betten Sie die gehostete Aufnahmeseite von Live ID in eine native App ein — WebView-Einrichtung und Kameraberechtigungen für iOS, Android und .NET MAUI sowie sofort lauffähige Beispiel-Apps.

In einer nativen App betten Sie die gehostete Aufnahmeseite in eine WebView ein, statt eine eigene Kameraoberfläche zu bauen. Die WebView durchläuft denselben Ablauf wie im Web — Selfie, Gesichtsabgleich, Lebenderkennung —, und Ihre App liest das Ergebnis aus, indem sie die Sitzung abfragt.

Die gehostete Seite setzt frame-ancestors 'none', daher kann sie nicht in ein Web-iframe eingebettet werden. Eine native WebView ist ein Laden auf oberster Ebene und kein iframe, daher funktioniert dies — und es ist das richtige Muster (festgelegtes v1-Design).

Das Muster

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

Zwei Dinge braucht jede Plattform:

  1. Serverseitig erzeugen, nur das Token halten. Die App ruft Ihr Backend auf, das bei Certivant POST /sessions mit dem Identifikationsschlüssel aufruft. Die App erhält nur captureUrl + sessionToken.
  2. Die Kameraanfrage der WebView gewähren. getUserMedia innerhalb einer WebView ist blockiert, bis Sie sie ausdrücklich gewähren — der Ansatzpunkt unterscheidet sich je Plattform (siehe unten).

Kameraberechtigung je Plattform

iOS (WKWebView). Deklarieren Sie NSCameraUsageDescription, erlauben Sie Medienwiedergabe inline und gewähren Sie die Aufnahmeanfrage über 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). Fügen Sie die Manifest-Berechtigung CAMERA hinzu, fordern Sie sie zur Laufzeit an und gewähren Sie die Anfrage der Seite in der 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. Passen Sie den gemeinsamen WebView-Handler einmal an; jede Plattform verdrahtet ihre eigene Gewährung (Android WebChromeClient, iOS/Mac WKUIDelegate, Windows WebView2 PermissionRequested). Fügen Sie NSCameraUsageDescription (iOS/Mac), die Berechtigung CAMERA (Android) und die Fähigkeit Webcam (Windows) hinzu.

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
    });

Das Ergebnis auslesen

Fragen Sie den Statusendpunkt ab und beenden Sie die Abfrage, sobald die Sitzung abgeschlossen ist:

GET https://app.certivant.com/api/kyc/public/live-id/sessions/{sessionToken}
→ { "status": "completed", "matched": true, … }

matched === true → Anmeldung gewähren. Ihr Backend kann außerdem den Webhook live_id.validation.completed abonnieren, um ein maßgebliches Signal auf Serverseite zu erhalten — nützlich, wenn die Entscheidung über den Zugang vollständig auf Ihrem Backend liegen soll.

Beispiel-Apps

Vollständige, lauffähige Referenzen finden Sie im Repository unter samples/live-id-validation/:

BeispielStackZielplattformen
android-kotlin/KotlinAndroid
ios-swiftui/SwiftUIiOS 15+
maui/.NET MAUIAndroid · iOS · Windows · macOS

Jedes Beispiel besteht aus einem einzigen Bildschirm: Tippen Sie auf Mit Selfie verifizieren → WebView → Ergebnis. Legen Sie Ihren Host und eine Sitzungsquelle in der LiveIdConfig des Beispiels fest (Ihr Backend-Endpunkt oder ein per curl erzeugtes Token für einen schnellen Test) und starten Sie die App. Die Schritte zum Erstellen und die genauen Dateien, die die Kameragewährung und die Abfrage verdrahten, finden Sie in der README des jeweiligen Beispiels.