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