Skip to main content

Captura de Selfie

Esta guía está diseñada para ayudarlo a implementar el SDK iOS de forma rápida y fácil. Se proporcionan conceptos básicos, ejemplos de implementación de SDK y de cómo interactuar con las API REST del motor biométrico.

A través de esta guía, se puede:

  • Implementar la apertura de la cámara y la captura de imágenes;
  • Manipular los datos de devolución;
  • Utilizar la devolución del SDK con las API del motor biométrico.

Antes de comenzar, asegúrese de haber seguido las instrucciones paso a paso para instalar e importar el SDK en esta guía.

RECURSOS DISPONIBLES

El SDK Flutter ofrece un componente de captura de selfies que contiene una silueta que ayuda al usuario a posicionarse de manera correcta para la foto. La captura de selfie se puede hacer de maneras diferentes, cada una con un modo de cámara diferente:

CAPTURA MANUAL

En este tipo de experiencia existe una silueta de captura para ayudar al usuario a posicionar correctamente el rostro. Luego de posicionar correctamente, el usuario debe hacer clic en un botón para capturar el selfie.

El SDK no realiza ningún tipo de validación de lo que se está capturando. Si la imagen capturada no tiene un rostro biométricamente válida, las API de backend del motor biométrico rechazan el encrypted.

Captura Manual

CAPTURA AUTOMÁTICA

En este tipo de experiencia, el rostro del usuario se identifica automáticamente a través de algoritmos de visión computacional y se le ayuda a posicionarse correctamente dentro de la silueta de captura. Después de posicionarse correctamente, la imagen se captura automáticamente.

Al ayudar al usuario a encuadrar su rostro en el área de captura, esta opción puede reducir los problemas al enviar el encrypted a las API del backend del motor biométrico.

Captura Manual

SMARTLIVE CON INTERACCIÓN FACETEC

En este tipo de experiencia, luego de centrar el rostro en la silueta de captura, se le indica al usuario que realice un simple movimiento de acercamiento al rostro, el cual va acompañado de algoritmos de visión computacional para garantizar que realmente está tomando la foto en ese momento.

Como requiere el movimiento del usuario, este tipo de captura tiene una capa extra de seguridad contra el fraude. Al igual que con la captura automática, la imagen se captura sin necesidad de que el usuario presione un botón. De esta forma se tiende a reducir los problemas a la hora de enviar el encrypted a las API backend del motor biométrico.

ACTIVACIÓN DE SMARTLIVE CON INTERACCIÓN FACETEC

La activación de la funcionalidad se puede verificar en el portal del cliente, como se explica en este artículo.

IMPLEMENTACIÓN

Al seguir esta guía paso a paso, tendrá todo el potencial del SDK integrado en su aplicación Flutter.

  1. INICIALIZAR EL SDK

    Para iniciar, cree una instancia del builder generado a través de la interfaz UnicoCheckBuilder, proporcionando como parámetro el contexto en cuestión y la implementación de la clase UnicoListener.

    La implementación de esta clase es muy simple y se puede hacer con pocas líneas de código. Todo lo que necesita hacer es anular los métodos de callback con las lógicas comerciales de su aplicación.

    class _MyHomePageState extends State<MyHomePage> implements UnicoListener {

    late UnicoCheckBuilder _unicoCheck;


    @override
    void onErrorUnico(UnicoError error) {}

    @override
    void onUserClosedCameraManually() {}

    @override
    void onSystemChangedTypeCameraTimeoutFaceInference() {}

    @override
    void onSystemClosedCameraTimeoutSession() {}
    }

    IMPLEMENTAR LAS FUNCIONES DE CALLBACK

    Tenga en cuenta que, según el ejemplo anterior, el trabajo de implementar la clase UnicoListener es, en gran medida, configurar los métodos de callback. Cada método se llama en una situación específica de devolución del SDK.

    Simplemente sobrescriba los métodos ejemplificados en el paso anterior con las lógicas comerciales de su aplicación:

    onErrorUnico(UnicoError error)

    Este método se invoca cuando ocurre algún error de implementación al utilizar cualquiera de los métodos, por ejemplo, al informar un tipo de documento incorrecto para la funcionalidad de captura de documentos.

    Cuando se invoca, el método recibe un parámetro de tipo UnicoError que contiene detalles del error. Más informaciones sobre el tipo UnicoError en el documento de referencias del SDK.

    onUserClosedCameraManually()

    Este método se invoca cada vez que el usuario cierra la cámara manualmente, como por ejemplo, al hacer clic en el botón "Volver".

    onSystemClosedCameraTimeoutSession()

    Este método se invoca una vez que se ha alcanzado el tiempo máximo de sesión (sin capturar ninguna imagen).

    TIEMPO MÁXIMO DE LA SESIÓN

    El tiempo máximo de la sesión se puede configurar en el builder a través del método setTimeoutSession. Este método debe recibir el tiempo máximo de sesión en segundos.

    onSystemChangedTypeCameraTimeoutFaceInference()

    Este método se invoca una vez que se ha alcanzado el tiempo máximo para la detección del rostro de un usuario (no se detecta nada). En este caso, el modo de la cámara cambia automáticamente al modo manual (sin smart frame).

    Alerta

    Todos los métodos anteriores deben crearse como se indica en su proyecto (Incluso sin ninguna lógica). De lo contrario, el proyecto no se compila con éxito.

  2. CONFIGURAR EL MODO DE LA CÁMARA

    Como se explicó anteriormente, hay tres modos de cámaras de captura disponibles. Si no está utilizando el modo Smartlive con la interacción FaceTec, en este paso puede elegir entre el modo de captura Manual o Automático.

    SUGERENCIA

    Si está utilizando el modo Smartlive con la interacción FaceTec, la configuración del tipo de cámara es irrelevante, ya que este modo ofrece una experiencia predefinida que no se puede cambiar.

    Sin embargo, se recomienda que configure un tipo de cámara en su builder (como se describe en este paso), porque si deshabilita el modo Liveness con la interacción FaceTec en su portal de clientes (y genera un nuevo JSON), no necesita cambiar su código.

    SDK ha configurado y habilitado por defecto el encuadre inteligente y la captura automática. Para usar la cámara en modo normal, deshabilite ambas funcionalidades a través de los métodos setAutoCapture y setSmartFrame.

    Los siguientes ejemplos demuestran cómo puede configurar cada uno de los modos de cámara.

    Modo inteligente (Captura automática - Smart Camera)

    Por defecto, SDK tiene el encuadre inteligente y la captura automática habilitados. Si usa este modo de cámara, no necesita cambiar ninguna configuración.

    Si la configuración de la cámara se cambia previamente en su aplicación, se puede restaurarlos a través de los métodos setAutoCapture Y setSmartFrame:


    UnicoCheckCameraOpener _opener = new UnicoCheck (this)
    .setAutoCapture(autoCapture: true)
    .setSmartFrame(smartFrame: true)
    .build();

    Alerta

    No es posible implementar el método setAutoCapture(true) con el método setSmartFrame(false), es decir, no es posible mantener la captura automática sin el Smart Frame, ya que es él quien realiza el encuadre inteligente.

    Modo manual

    Por defecto, SDK tiene el encuadre inteligente y la captura automática habilitados. En este caso, para usar el modo manual, ambas configuraciones relacionadas con la Smart Camera deben desactivarse a través de los métodos setAutoCapture e setSmartFrame:

    UnicoCheckCameraOpener _opener = new UnicoCheck (this)
    .setAutoCapture(autoCapture: false)
    .setSmartFrame(smartFrame: false)
    .build();
    SUGERENCIA - SmartFrame

    Incluso en modo manual es posible utilizar el Smart Frame. En este caso, se muestra la silueta para identificar el encuadre y luego habilitar el botón. Para esto, simplemente configure setAutoCapture(autoCapture: false) Y setSmartFrame(smartFrame: true)

  3. PERSONALIZAR EL PROCESO DE CAPTURA

    Este es un paso opcional, pero muy recomendado para que el proceso de captura tenga la identidad visual de su empresa.

    Es posible personalizar algunos objetos del frame de acuerdo con el modo de cámara utilizado a través del método setTheme().

    Entienda un poco más sobre el método setTheme(), ejemplos de uso y lo que se puede personalizar en la página de Referencias de este SDK.

  4. CONFIGURAR LA APERTURA DE CÁMARA

    El último paso es disparar la apertura de la cámara. Este proceso está dividido en algunas etapas:

    Implementar listeners para eventos de la cámara ​

    El método de apertura de la cámara necesita saber qué hacer cuando logra capturar una imagen o cuando tiene un error en el proceso. Se informa "qué hacer" al método de apertura de la cámara a través de la implementación de listeners que se llaman en situaciones de éxito o error.

    A través de la implementación de los listeners, puede especificar qué sucede en su aplicación en situaciones de error (método onErrorSelfie) o éxito (método onSuccessSelfie) en la captura de imágenes.

    Método onSuccessSelfie
    @override
    void onSuccessSelfie(ResultCamera result) { }

    Al efectuar la captura de imagen con éxito, se invoca este método y devuelve un resultado del tipo ResultCamera que luego se usa en la llamada de las API REST:

    Método onErrorSelfie
    @override
    void onErrorSelfie(UnicoError error) { }

    Cuando se produce un error en la captura de imagen, se invoca este método y devuelve un objeto de tipo UnicoError.

    IMPLEMENTACIÓN DE LOS LISTENERS

    La implementación de estos métodos (listeners) debe hacerse a través de una instancia de la clase UnicoSelfie.

    Abrir la cámara

    El método openCameraSelfie es utilizado para abrir la cámara. Este método recibe como parámetro la implementación de la clase UnicoSelfie y el JSON con las credenciales, generado en esta etapa.

    El siguiente ejemplo ilustra los pasos para configurar los listeners y abrir la cámara:

    _opener.openCameraSelfie(jsonFileName: androidJsonFileName, listener: this)

    El objeto ResultCamera devuelve 2 atributos: Base64 y Encrypted:

    • El atributo Base64 se puede usar si desea mostrar una vista previa de la imagen en su aplicación;
    • El atributo Encrypted debe enviarse en la llamada de las API REST de Unico Check.
  5. LLAMAR LAS APIS​

    La captura de las imágenes es solo la primera parte del viaje. Después de capturar la imagen, es necesario enviar el Encrypted generado a las API, seleccionando uno de los flujos disponibles detallados en Flujos.

    Atención

    Por motivos de seguridad, el intervalo entre la generación del Encriptado y su envío a través de uno de los flujos disponibles debe ser de un máximo de 10 minutos. Los envíos realizados más allá de este período serán rechazados automáticamente por la API.

¿Dudas?

¿No encontró algo o aún necesita ayuda? Si ya es cliente o asociado, puede contactarnos a través del Centro de Ayuda.