Skip to content

Guía de integración de biometría - SDK Android

SDK Identia Flow - Android


Descripción

El SDK Identia Flow tiene como propósito capturar una selfie y ambos lados de un documento de identidad para verificar la identidad del usuario.

Cómo Integrar el SDK

Configuración del Gradle

Añade la dependencia y el repositorio maven en el archivo build.gradle de tu módulo:

dependencies {
    implementation 'identia:flow:0.0.6'
}

repositories {
    maven {
        url "https://repo.repsy.io/mvn/identia/identia"
    }
}

Importaciones necesarias

En tu actividad o fragmento donde desees utilizar el SDK, asegúrate de importar:

import pe.identia.flow.FlowActivity

Actualización del AndroidManifest.xml

Añade la actividad FlowActivity a tu AndroidManifest.xml:

<activity android:name="pe.identia.flow.FlowActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="pe.identia.camera.OPEN_FLOW" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

Obtención del Token de Acceso desde el Backend

Es esencial que la obtención del token de acceso se realice en el backend de tu aplicación para no exponer las credenciales. Una vez que tu backend haya obtenido el token, puede enviarlo al frontend (tu aplicación Android) de manera segura para que pueda ser utilizado en solicitudes subsiguientes al servidor.

Uso del SDK

Una vez que hayas recibido el token de acceso desde tu backend se deberá crear un proceso biométrico el Id resultante se deberá asignar al valor YOUR_OBTAINED_ID en tu aplicación Android.

Crea un Intent para FlowActivity y pasa los datos necesarios como extras:

val intent = Intent(this@MainActivity, FlowActivity::class.java)
intent.putExtra("idSession", YOUR_OBTAINED_ID)
intent.putExtra("endPoint", "https://apifacialdev.identia.pe/")

if (intent.resolveActivity(packageManager) != null) {
    startActivity(intent)
} else {
    // Maneja el caso en el que no se encuentra la actividad
}

Personalización gráfica

Si has creado una personalización de la interfaz en tu Backoffice, puedes agregarla a tu FlowActivity mediante el parámetro style. El PERSONALIZATION_ID se obtiene directamente del Backoffice. Para hacerlo, agrega el ID de tu personalización como valor de este parámetro en el Intent que inicia la actividad, como se muestra en el siguiente ejemplo:

val intent = Intent(this@MainActivity, FlowActivity::class.java)
intent.putExtra("idSession", YOUR_OBTAINED_ID)  // Corregido a "idSession" para claridad.
intent.putExtra("endPoint", "https://apifacialdev.identia.pe/")
intent.putExtra("style", PERSONALIZATION_ID)

if (intent.resolveActivity(packageManager) != null) {
    startActivity(intent)
} else {
    // Maneja el caso en el que no se encuentra la actividad
}

Manejo de Respuestas

Utiliza el ActivityResultLauncher para recibir y manejar las respuestas de FlowActivity.

resultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
    val jsonResponse = JSONObject(result.data?.getStringExtra("response"))
    if (jsonResponse.getBoolean("result")) {
        // Procesa respuestas exitosas aquí
    } else {
        // Maneja errores aquí
    }
}

El SDK de Identia Flow retornará respuestas que tu aplicación debe manejar adecuadamente para proporcionar retroalimentación al usuario:

Respuestas Exitosas

Cuando el proceso concluye de manera exitosa, recibirás la siguiente estructura:

{
  "result": true,
  "message": "El proceso ha concluido satisfactoriamente",
  "code": 200,
  "data": {
    "selfie": "BASE64_DATA_FOR_SELFIE",
    "document": {
      "A": "BASE64_DATA_FOR_SIDE_A",
      "B": "BASE64_DATA_FOR_SIDE_B"
    }
  }
}

Con esta respuesta, puedes extraer y procesar la selfie y la imagenes del documento según sea necesario en tu aplicación.

Errores por verificación negativa

{
  "result": false,
  "message": "Proceso de verificación concluido, sin respuesta satisfactoria",
  "code": 300,
  "data": null
}

Errores por falta de permisos

Si el usuario no otorga permisos para acceder a la cámara, recibirás la siguiente respuesta:

{
  "result": false,
  "message": "Por favor, otorga permisos de cámara para continuar.",
  "code": 401,
  "data": null
}

Es importante informar al usuario sobre la necesidad de otorgar estos permisos para continuar con el proceso.

Errores por timeout

Si el usuario excede el tiempo máximo permitido para capturar una selfie o el DNI, recibirás esta respuesta:

{
  "result": false,
  "message": "Se agotó el tiempo de espera. Por favor, intenta de nuevo más tarde.",
  "code": 408,
  "data": null
}

Debes informar al usuario sobre el tiempo agotado y considerar darle opciones para reiniciar el proceso o intentarlo más tarde.

Errores Frecuentes y Soluciones

1. Problemas de Sincronización del Gradle

Error: Cambios en el build.gradle no se reflejan, o la dependencia del SDK no se resuelve correctamente.

Solución: - Ejecuta "Clean Project" y luego "Rebuild Project" en Android Studio. - Verifica que tu conexión a Internet esté activa y funcione correctamente. - Asegúrate de que la URL del repositorio Maven esté escrita correctamente en el build.gradle.

2. Errores de Importación

Error: La clase FlowActivity no se encuentra o no se puede importar.

Solución: - Confirma que la dependencia del SDK se ha añadido correctamente en el build.gradle. - Realiza una sincronización del Gradle y reconstruye el proyecto.

3. Problemas de Ejecución de FlowActivity

Error: La aplicación se cierra o no inicia FlowActivity al intentar ejecutar el Intent.

Solución: - Verifica que FlowActivity esté declarada correctamente en el AndroidManifest.xml. - Asegúrate de que todos los datos necesarios se pasan correctamente al Intent.

4. Errores de Permiso de Cámara

Error: La aplicación no solicita permiso para usar la cámara o falla al intentar acceder a ella.

Solución: - Confirma que los permisos de cámara están declarados en el AndroidManifest.xml. - Implementa una comprobación de permisos en tiempo de ejecución antes de iniciar FlowActivity.

5. Problemas de Conectividad con el Backend

Error: No se recibe el token de acceso desde el backend.

Solución: - Verifica la conectividad de red de la aplicación. - Asegúrate de que el endpoint del backend esté operativo y accesible. - Revisa la implementación del servicio que obtiene el token para identificar posibles errores.

6. Problemas de Respuesta del SDK

Error: Respuestas inesperadas o nulas del SDK.

Solución: - Asegúrate de que estás manejando correctamente todas las posibles respuestas del SDK en el ActivityResultLauncher. - Verifica que los datos enviados al SDK son correctos y están en el formato esperado.

7. Problemas de Rendimiento o Inestabilidad

Error: La aplicación se vuelve lenta o inestable después de integrar el SDK.

Solución: - Revisa el uso de memoria y CPU de tu aplicación para identificar posibles fugas de memoria o bucles infinitos. - Actualiza a la última versión del SDK, ya que puede incluir optimizaciones y correcciones de errores.

8. Errores de Compilación Después de Actualizaciones

Error: Errores de compilación después de actualizar el SDK.

Solución: - Limpia el proyecto (Clean Project) y reconstrúyelo (Rebuild Project). - Revisa las notas de la versión del SDK para cualquier cambio en la API o en las dependencias.

Incluir esta sección en la documentación o FAQ de tu SDK ayudará a los desarrolladores a resolver rápidamente problemas comunes, mejorando la experiencia general de integración del SDK Identia Flow.