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
Bitcodehabilitado y otra sinBitcode. 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.
-
Descargar SDK en xcode 14.2 con Bitcode
MD5:
7e6ea6c87f91dda8adacf82ac7be015d -
Descargar SDK en xcode 15.4 con Bitcode
MD5:
a2b6de6638f6e848ac8b9aaf606adf78 -
Descargar SDK en xcode 16.3 con Bitcode
MD5:
1881f8ad4049d7c8c363154257c69f57
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.
-
Descargar SDK en xcode 14.2 sin Bitcode
MD5:
eb78b1ea21060dfee332b56cd45b4baa -
Descargar SDK en xcode 15.4 sin Bitcode
MD5:
57fe0b9a82bddfdaaa6af8bf9a1385d -
Descargar SDK en xcode 16.3 sin Bitcode
MD5:
c72cd2b22f0b09c41dfbec725eab1051 -
Descargar SDK en xcode 16.4 sin Bitcode
MD5:
29eedef306efe14ab8614afacc647c62Nota: Este es un archivo
.xcframeworken lugar de.framework
Importar en Xcode
- Una vez que tengas el archivo
.frameworkdescomprimido, abre tu proyecto enXcode. - Arrastra el archivo
.frameworkal área del navegador del proyecto, preferiblemente dentro del grupoFrameworks. - 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
targety ve a la pestañaGeneral. - Desplázate hacia abajo hasta la sección
Frameworks, Libraries, and Embedded Content. - Encuentra
identiaFlow.frameworken la lista y cambia la opciónDo Not EmbedaEmbed & Sign.
Solicitar permisos de cámara
- Asegúrate de que tu
Info.plistpara 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
NSLocationWhenInUseUsageDescriptioncomo 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
NSCameraUsageDescriptioncomo 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. | Sí |
endPoint |
String |
URL del servidor. Debe pertenecer al dominio identia.pe. |
Sí |
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.