Incorporación móvil
Integre la página alojada de captura de Live ID en una aplicación nativa: configuración del WebView y permisos de cámara para iOS, Android y .NET MAUI, además de aplicaciones de ejemplo listas para ejecutar.
En una aplicación nativa, integra la página alojada de captura en un WebView en lugar de construir su propia interfaz de cámara. El WebView ejecuta el mismo flujo que en la web (selfi, comparación facial y prueba de vida), y su aplicación lee el veredicto consultando la sesión.
La página alojada establece frame-ancestors 'none', por lo que no puede
incrustarse en un iframe web. Un WebView nativo realiza una carga de nivel superior,
no un iframe, así que esto no es un problema, y es el patrón correcto (diseño v1 bloqueado).
El patrón
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
Dos cosas que toda plataforma necesita:
- Cree la sesión en el servidor y conserve solo el token. La aplicación llama a su backend,
que llama al
POST /sessionsde Certivant con la clave de identificación. La aplicación recibe únicamentecaptureUrlysessionToken. - Conceda la solicitud de cámara del WebView.
getUserMediadentro de un WebView está bloqueado hasta que lo conceda explícitamente; el punto de enganche varía según la plataforma (más abajo).
Permiso de cámara por plataforma
iOS (WKWebView). Declare NSCameraUsageDescription, permita la reproducción
multimedia en línea y conceda la solicitud de captura mediante 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). Añada el permiso de manifiesto CAMERA, solicítelo en
tiempo de ejecución y conceda la solicitud de la página en 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. Personalice una vez el manejador compartido de WebView; cada plataforma
conecta su propia concesión (Android WebChromeClient, iOS/Mac WKUIDelegate,
PermissionRequested de WebView2 en Windows). Añada NSCameraUsageDescription
(iOS/Mac), el permiso CAMERA (Android) y la capacidad de 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
});
Lectura del resultado
Consulte el endpoint de estado periódicamente y deténgase cuando se complete:
GET https://app.certivant.com/api/kyc/public/live-id/sessions/{sessionToken}
→ { "status": "completed", "matched": true, … }
matched === true → conceda el inicio de sesión. Su backend también puede suscribirse al webhook
live_id.validation.completed para obtener una señal autoritativa en el servidor, lo que resulta útil
si quiere que la decisión de conceder el acceso resida por completo en su backend.
Aplicaciones de ejemplo
Hay referencias completas y ejecutables en el repositorio, en samples/live-id-validation/:
| Ejemplo | Stack | Destinos |
|---|---|---|
android-kotlin/ | Kotlin | Android |
ios-swiftui/ | SwiftUI | iOS 15+ |
maui/ | .NET MAUI | Android · iOS · Windows · macOS |
Cada una es una sola pantalla: toque Verificar con selfi → WebView → resultado. Configure su host y una
fuente de sesiones en el LiveIdConfig del ejemplo (su endpoint de backend, o un token creado con curl
para una prueba rápida), y ejecútela. Consulte el README de cada ejemplo para los pasos de compilación y los
archivos exactos que conectan la concesión de la cámara y el sondeo.
Referencia de la API de Live ID
Endpoints de Live ID Validation: emitir una clave de identificación, crear una sesión de captura, abrir la página alojada de captura, enviar un selfi, consultar el resultado y el payload del webhook de validación.
Servidor MCP
Conecte un asistente de IA a Certivant mediante el Model Context Protocol: gestione la cola de verificación, envíe y siga formularios, reclame a los solicitantes inactivos, explique decisiones e informe, todo con su clave de API existente.