ChatGPT Image 25 feb 2026, 07_05_50 a.m..png

1.1. PASO: FLUJO BLACKBOX (Caja Negra) - NUEVO

1.1.1. ¿Qué es BlackBox?

BlackBox es un flujo unificado que orquesta en un solo proceso la biometría facial y, opcionalmente, la captura de documento, devolviendo un resultado final consolidado. Se utiliza cuando quieres que el SDK maneje internamente la secuencia (tutorial -> captura -> resultado) y la trazabilidad del proceso ("caja negra").

1.1.2. ¿Cuándo usarlo?

1.1.3. Datos requeridos (BlackBoxDataIn)

Debes construir el objeto BlackBoxDataIn con la información del asesor, sede, tipo y número de documento, correo, celular y credenciales de servicio. Recomendación: usa los datos reales que vienen del formulario de tu app y NO valores fijos en producción.

1.1.4. Ejemplo de implementación iOS (Swift)

let animation = LottieAnimation.named("Loader")
        let tutorialConfig = TutorialConfiguration(animation: animation)

        //Marca Blanca (Colorimetria)
        let customTheme = SDKTheme()
            .setCompanyLogo("Olimpia-IT ")
            .setPrimaryBackgroundColor("("#036A1B ")
            .setSecondaryBackgroundColor("("#01580D ")
            .setPrimaryTextColor("#01580D")
            .setSecondaryTextColor("("#01580D ")
            .setPrimaryButtonColor("#036A1B")
            .setSecondaryButtonColor("#047B28")
            .setSecondaryButtonTextColor("("#036A1B ")

        let identification = UserDefaults.standard.string(forKey: userDocumentKey)?
            .trimmingCharacters(in: .whitespacesAndNewlines) ?? ""

        //Objeto Datos para BlackBox
        let data = BlackBoxDataIn(adviser: "SDK_iOS",
                                  sede: "Sede",
                                  vaidationType: 4,
                                  documenType: "CC",
                                  documenNumber: "12345678",//identification viene del formulario...
                                  email: "dfdf@sdfdf.com",
                                  cellPhone: "123456789",
                                  prefCellPhone: "+57",
                                  user: "usuario",
                                  password: "Contraseña",)
        
        guard let rootViewController = getRootViewController() else {
            DispatchQueue.main.async {
                self.onFaceError?(Message(type: .system(code: MessageType.sdkError)), 0)
            }
            return
        }

//llamado caja negra....
        BlackBoxConfiguration() 
                    .saveDocument(true) // si esta activo se invoca documento en validarBiometria
                    .biometric( //llamado a Biometria Facial
                        BiometricConfiguration()
                            .tutorialConfiguration(tutorialConfig)
                            .enableView(BiometricConfiguration.tutorial, isEnabled: true)
                            .enableView(BiometricConfiguration.preview, isEnabled: true)
                            .enableView(BiometricConfiguration.result, isEnabled: true)
                            .enableAccessibility(true) //lectura de textos...
                            .processTime(30)
                            .attempts(3)
                            .theme(customTheme)
                    )
                    .document( //llamado a Biometria Documento
                        DocumentConfiguration()
                            .enableView(DocumentConfiguration.tutorial, isEnabled: true) //parametrizacion de las vistas
                            .enableView(DocumentConfiguration.preview, isEnabled: true)
                            .enableView(DocumentConfiguration.result, isEnabled: true)
                            .attempts(3) //reintentos
                            .processTime(30) // tiempod e procesamiento
                            .initialTime(5) //tiempo de espera para iniciar captura
                            .theme(customTheme) //customizacion...
                            .enableAccessibility(true) //lectura de textos...
                    )
            .startProcess(from: rootViewController, data: data) {(result, error) in //se inicia todo...
                
                print("[SDK] startProcess invoked. Waiting for response...")
                
                if let error = error {
                    print("[SDK Response] Error received: \\(error)")
                    DispatchQueue.main.async {
                        self.onFaceError?(Message(type: .system(code: MessageType.sdkError)), 0)
                    }
                    return
                }
                //Respuesta de BlackBox...
                print("[SDK Response] Result received: \\(String(describing: result?.data))")

            }
}

1.1.5. Notas importantes

<aside> 💡

continue con el siguiete paso de la integracion. Paso 3b - Consumo primer servicio (Solicitud Validación Estado)

</aside>