Caja Negra - ReconoSERID/SDK-ReconoSERID-Android GitHub Wiki
Descripción
BlackBoxActivity es una actividad que funciona como un flujo cerrado con todas las vistas pre-renderizadas, diseñada para operaciones biométricas seguras y de alto rendimiento. Controla completamente su entorno de ejecución para garantizar consistencia en las validaciones.
¿Qué es BlackBox?
BlackBox es un flujo unificado que orquesta la biometría facial y, opcionalmente, la captura de documento en un solo proceso. Devuelve un resultado final consolidado. Úsalo cuando quieras que el SDK maneje internamente la secuencia completa (tutorial → captura → resultado) y la trazabilidad del proceso.
¿Cuándo usarlo?
- Cuando necesitas un flujo cerrado de extremo a extremo con una única llamada de inicio.
- Cuando debes registrar o guardar el documento como parte del proceso.
- Cuando quieres aplicar personalización de marca (logo y colores) en todas las pantallas del SDK.
Datos requeridos (BlackBoxDataIn)
Construye 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 del formulario de tu app. No uses valores fijos en producción.
### Ejemplo de implementación Android (Kotlin)
val documentType ="CC"val documentNumber = "94448976"val blackBoxData = BlackBoxDataIn( adviser = "BancoAgrarioMovil_2022", ciudadanoData = "Banco Agrario", validationType = 4, documentType = documentType, documentNumber = documentNumber, email = null, cellPhone = null, prefCellPhone = "Colombia", user = "BancoAgrarioMovil_2022", password = "BancoAgrarioMovil.2022*", guidConv = "e997fc39-a84d-44ef-afdb-3dc2537e9165", consultaFuentes = true, infCandidato = "{\"company\": \"OlimpiaIt\"}", procesoWhatsapp = false, processType = 0, branch = "Banco Agrario")val intent = Intent(context, BlackBoxActivity::class.java)intent.putExtra("BLACK_BOX_DATA", blackBoxData)intent.putExtra(IntentExtras.GUID_CIUDADANO, "")intent.putExtra(IntentExtras.SAVE_DOCUMENT, false)intent.putExtra(IntentExtras.SOUND, false)intent.putExtra(IntentExtras.NUM_EXPRESION, 3)intent.putExtra(IntentExtras.NUM_ATTEMPTS, 3)intent.putExtra(IntentExtras.TIME, 15) //SecondstartActivity(intent)
val blackBoxData = BlackBoxDataIn(
adviser = "SDK_Android",
ciudadanoData = "XXXX ",
validationType = 4,
documentType = "CC",
documentNumber = "12345678",
email = "",
cellPhone = "",
prefCellPhone = "Colombia",
user = "usuario_convenio",
password = "Contraseña_convenio",
guidConv = "GUI_CONVENIO",
consultaFuentes = false,
infCandidato = "{\"company\": \"OlimpiaIt\"}",
procesoWhatsapp = false,
processType = 0,
branch = "XXX "
)
//Ejemplo de customizacion....
val defaultUi = UiCustomization(
biometricTutorialView = BiometricTutorialView(
titleCustomization = TextUiCustomization(
textColor = ColorTheme(mainColor = R.color.colorPrimaryText)
),
subtitleCustomization = TextUiCustomization(
textColor = ColorTheme(mainColor = R.color.colorPrimaryText)
),
contentTextColor = TextUiCustomization(
textColor = ColorTheme(mainColor = R.color.colorPrimaryText)
),
dialogSecondaryButtonCustomization = ButtonUiCustomization(
textSize = 24F,
buttonText = "Hola mundo",
buttonTextColor = ColorTheme(
mainColor = R.color.colorPrimaryText
),
buttonBackgroundColor = ColorTheme(
mainColor = R.color.metroWhite,
darkColor = R.color.metroWhite
)
),
screenBackgroundColor = ColorTheme(
R.color.btnBg,
R.color.btnBg
),
closeButtonColor = ColorTheme(
R.color.blueButton
)
), customLogo = LogoTheme(
R.drawable.logo,
R.drawable.logo),
documentPreviewView = DocumentPreviewView(
titleCustomization = TextUiCustomization(
textColor = ColorTheme(
mainColor = R.color.colorPrimaryText)
),
secondaryButtonCustomization = ButtonUiCustomization(
textSize = 24F,
buttonText = "Hola mundo",
buttonTextColor = ColorTheme(
mainColor = R.color.colorPrimaryText
),
buttonBackgroundColor = ColorTheme(
mainColor = R.color.metroWhite,
darkColor = R.color.metroWhite
)
),
primaryButtonCustomization = ButtonUiCustomization(
textSize = 24F,
buttonText = "Hola mundo",
buttonTextColor = ColorTheme(
mainColor = R.color.colorPrimaryText
),
buttonBackgroundColor = ColorTheme(
mainColor = R.color.metroWhite,
darkColor = R.color.metroWhite
)
),
screenBackgroundColor = ColorTheme(
R.color.metroWhite,
R.color.metroWhite),
)
)
val documentConfig = DocumentConfigurationModel(
tutorialEnabled = true,
previewEnabled = true,
resultEnabled = true,
attempts = 3,
processTime = 15,
initialTime = 15,
uiCustomization = defaultUi,
accessibilityEnabled = false
)
val biometricConfig = BiometricConfigurationModel(
tutorialEnabled = true,
previewEnabled = true,
resultEnabled = true,
accessibilityEnabled = false,
processTime = 15,
attempts = 3,
uiCustomization = defaultUi
)
val intent = Intent(requireActivity(), BlackBoxActivity::class.java).apply {
putExtra("BLACK_BOX_DATA", blackBoxData as Parcelable)
putExtra("DOCUMENT_CONFIGURATION_DATA", documentConfig as Parcelable)
putExtra("BIOMETRIC_CONFIGURATION_DATA", biometricConfig as Parcelable)
putExtra(IntentExtras.SAVE_DOCUMENT, false)
}
startActivity(intent)
Notas importantes
- (IntentExtras.SAVEDOCUMENT, true): activa la captura de documento dentro del flujo tanto en validacion como enrolamiento.
- Datos sensibles: user/password deben venir de un mecanismo seguro (Keychain/Remote Config). Evita valores fijos en el código.
- Accesibilidad: (IntentExtras.SOUND, true) habilita lectura de textos (VoiceOver/TTS) según el SDK.
- Colores/Logo: los nombres deben existir como assets o colores en tu proyecto iOS.
Características Clave
-
Entorno controlado: Todas las vistas están precargadas
-
Flujo autónomo: No depende de otras actividades
-
Alto rendimiento: Optimizado para procesos biométricos
-
Modo seguro: Previene interferencias externas
Parámetros de Configuración
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
| IntentExtras.PREVIEW | Boolean | Variable | Habilita vista previa biométrica |
| IntentExtras.RECOMMENDATIONS_TUTORIAL | Boolean | Variable | Muestra tutorial de recomendaciones |
| IntentExtras.RESULT | Boolean | Variable | Muestra resultados del proceso |
| IntentExtras.TIME_OUT_BIOMETRIC | Long | Variable | Tiempo máximo en milisegundos (ms) |
| IntentExtras.RETRY_BIOMETRIC_NUMBER | Int | Variable | Número máximo de reintentos |
| IntentExtras.ATDP | Boolean | False | Habilita modo ATDP |
| IntentExtras. RETOS | Boolean | False | Habilita modo de retos |
| IntentExtras. BLACK_BOX | Boolean | True | Activa el modo BlackBox (flujo cerrado) |
| IntentExtras. SOUND | Boolean | True | Habilita sonidos del sistema |
| IntentExtras. UI_CUSTOMIZATION | Parcelable | Variable | Personalización de interfaz |