Skip to content

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

SDK Identia Flow - iOS

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. Está diseñado con SwiftUI.

Cómo Integrar el SDK

Descarga del SDK

  • El SDK estará disponible como un archivo .zip. Deberás descargar y descomprimir este archivo para obtener el .framework.
  • Ofrecemos dos variantes del SDK Identia Flow, una con Bitcode habilitado y otra sin Bitcode. Elige la opción que mejor se ajuste a las necesidades de tu proyecto.

Configuración del SDK

Con Bitcode Habilitado:

Este paquete incluye Bitcode, lo cual es recomendable si deseas que Apple recompile tu aplicación para futuros dispositivos sin necesidad de subir una nueva versión.

Sin Bitcode:

Elige esta opción si prefieres una compilación más rápida de tu aplicación durante el desarrollo o si no necesitas la compatibilidad con Bitcode.

Importar en Xcode

  • Una vez que tengas el archivo .framework descomprimido, abre tu proyecto en Xcode.
  • Arrastra el archivo .framework al área del navegador del proyecto, preferiblemente dentro del grupo Frameworks.
  • Asegúrate de marcar la opción Copy items if needed.

Configuración del Framework

  • Selecciona tu proyecto en el navegador del proyecto.
  • Selecciona tu target y ve a la pestaña General.
  • Desplázate hacia abajo hasta la sección Frameworks, Libraries, and Embedded Content.
  • Encuentra identiaFlow.framework en la lista y cambia la opción Do Not Embed a Embed & Sign.

Solicitar permisos de cámara

  • Asegúrate de que tu Info.plist para solicitar acceso a la cámara del dispositivo y geolocalización.

NSLocationWhenInUseUsageDescription:

  • Haz clic con el botón derecho en cualquier espacio en blanco dentro del editor de Info.plist.
  • Selecciona Add Row.
  • Introduce NSLocationWhenInUseUsageDescription como la clave.
  • En el tipo, selecciona String.
  • En el valor, introduce un mensaje descriptivo que le dirá al usuario por qué tu aplicación necesita acceso a su ubicación cuando está en uso. Por ejemplo: Necesitamos acceder a tu ubicación para mostrarte lugares cercanos.

NSCameraUsageDescription:

  • De la misma manera, haz clic con el botón derecho y selecciona Add Row.
  • Introduce NSCameraUsageDescription como la clave.
  • En el tipo, selecciona String.
  • En el valor, introduce un mensaje descriptivo que le dirá al usuario por qué tu aplicación necesita acceso a su cámara. Por ejemplo: Necesitamos acceso a tu cámara para que puedas tomar fotos dentro de la app.

Tu archivo Info.plist debería tener ahora algo similar a:

<key>NSLocationWhenInUseUsageDescription</key>
<string>Necesitamos acceder a tu ubicación para ...</string>

<key>NSCameraUsageDescription</key>
<string>Necesitamos acceso a tu cámara para que puedas ...</string>

Uso del SDK

IdentiaFlowView

Este componente es la interfaz principal que deberás implementar en tu aplicación:

IdentiaFlowView(
    idSession: "xxxxxxxxx.xxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxx",
    endPoint: "https://apifacialdev.identia.pe/") { jsonString in
    // Aquí puedes manejar el jsonString que se retornó desde el sdk
    print(jsonString)
}

Parámetros

Parámetro Tipo Descripción Obligatorio
idSession String Una cadena que identifica la sesión actual. Debe seguir el formato de dos cadenas hexadecimales de longitud 64 separadas por un punto.
endPoint String URL del servidor. Debe pertenecer al dominio identia.pe.

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

Personalización gráfica

Para incorporar una personalización de la interfaz en tu implementación, utiliza el parámetro style en el constructor de IdentiaFlowView. El PERSONALIZATION_ID se obtiene directamente del Backoffice. Simplemente asigna este ID de tu personalización a este parámetro, como se muestra en el siguiente ejemplo:

IdentiaFlowView(
    idSession: "xxxxxxxxx.xxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxx",
    endPoint: "https://apifacialdev.identia.pe/",
    style: PERSONALIZATION_ID) { jsonString in
    // Aquí puedes manejar el jsonString que se retornó desde el sdk
    print(jsonString)
}

Parámetros adicionales

Parámetro Tipo Descripción Obligatorio
style String ID de personalización obtenido del Backoffice para customizar la interfaz. No

Respuestas del SDK

El SDK retorna respuestas en formato JSON con la siguiente estructura general:

Campo Tipo Descripción
result Boolean Indica si el proceso fue exitoso (true) o falló (false).
message String Mensaje descriptivo del resultado.
code Integer Código de estado HTTP o personalizado.
data Object o null Datos del resultado (imágenes en BASE64) o null en caso de error.

Tabla de códigos de respuesta

Código Tipo Descripción
200 Éxito El proceso concluyó satisfactoriamente.
300 Verificación negativa Proceso concluido sin respuesta satisfactoria.
401 Error de permisos El usuario no otorgó permisos de cámara.
408 Timeout Se agotó el tiempo de espera.

Respuestas Exitosas (Código 200)

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

Estructura de respuesta:

{
  "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"
    }
  }
}

Campos de data:

Campo Tipo Descripción
selfie String Imagen de selfie codificada en BASE64.
document.A String Imagen del lado A del documento codificada en BASE64.
document.B String Imagen del lado B del documento codificada en BASE64.

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

Errores por verificación negativa (Código 300)

Estructura de respuesta:

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

Acción recomendada: Informar al usuario que el proceso no fue exitoso y ofrecer opciones para reintentar.

Errores por falta de permisos (Código 401)

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

Estructura de respuesta:

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

Acción recomendada: Informar al usuario sobre la necesidad de otorgar permisos de cámara y proporcionar instrucciones para habilitarlos en la configuración del dispositivo.

Errores por timeout (Código 408)

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

Estructura de respuesta:

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

Acción recomendada: Informar al usuario sobre el tiempo agotado y considerar ofrecerle opciones para reiniciar el proceso o intentarlo más tarde.