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
SDK iOS ofrece un componente de captura de selfies que contiene una silueta que ayuda al usuario a posicionarse correctamente para la foto. La captura de selfie se puede realizar de dos maneras, que son:
CAPTURA MANUAL
En este tipo de experiencia existe un frame de captura para ayudar al usuario a posicionar su rostro correctamente. Luego de posicionar correctamente, el usuario debe hacer clic en un botón para capturar la imagen.
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álido, las API rechazan el encrypted del motor biométrico.
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 del área 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 motor biométrico.
SMARTLIVE CON INTERACCIÓN FACETEC
En este tipo de experiencia, se instruye al usuario para que realice unos simples movimientos durante la captura, los cuales van acompañados de algoritmos de visión computacional para garantizar que en ese momento está tomando una foto.
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.
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 iOS.
INICIALIZAR EL SDK
Para comenzar con SDK iOS de Unico Check, importe el SDK e implemente la interfaz
AcessoBioManagerDelegate
dentro de ViewController que desea utilizar.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 instanciar al builder informando el contexto en cuestión y anular los métodos de callback con las lógicas comerciales de su aplicación:
- Objective-C
- Swift
.m:
#import "ViewController.h"
#import <AcessoBio/AcessoBio.h>
@implementation ViewController: UIViewController
- (void)viewDidLoad {
[super viewDidLoad];
unicoCheck = [[AcessoBioManager alloc]initWithViewController:self];
}
- (void)onErrorAcessoBioManager:(ErrorBio *)error {
// your code
}
- (void)onSystemChangedTypeCameraTimeoutFaceInference {
// your code
}
- (void)onSystemClosedCameraTimeoutSession {
// your code
}
- (void)onUserClosedCameraManually {
// your code
}
@endimport UIKit
import AcessoBio
class ViewController: UIViewController, AcessoBioManagerDelegate {
var unicoCheck: AcessoBioManager!
override func viewDidLoad() {
super.viewDidLoad()
unicoCheck = AcessoBioManager(viewController: self)
}
func onErrorAcessoBioManager(_ error: ErrorBio!) {
// your code
}
func onUserClosedCameraManually() {
// your code
}
func onSystemClosedCameraTimeoutSession() {
// your code
}
func onSystemChangedTypeCameraTimeoutFaceInference() {
// your code
}
}CONFIGURACIÓN DE AMBIENTES
Configura el entorno que se utilizará en la ejecución del SDK. Utiliza el enumerado
Environment
que contiene los siguientes enumerados:PROD
: para el entorno de ProducciónUAT
: para el entorno de HomologaciónMira cómo implementarlo en el siguiente ejemplo:
- objectivec
- swift
[unicoCheck setEnvironment:UAT];
unicoCheck.setEnvironment(.UAT)
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:
Método
onErrorAcessoBioManager(_ error: ErrorBio!)
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 recibirá un parámetro de tipo
ErrorBio
que contiene detalles del error. Más informaciones sobre el tipoErrorBio
en el artículo de Referencias de este SDK.Método
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".
Método
onSystemClosedCameraTimeoutSession()
Este método se invoca una vez que se ha alcanzado el tiempo máximo de sesión (Sin capturar ninguna imagen).
Método
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).
AlertaTodos 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.
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.
SUGERENCIASi 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 la cámara con solo presionar un botón en su UI:
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
YsetSmartFrame
:- Objective-C
- Swift
.m:
- (IBAction)configureSmartCamera:(UIButton *)sender {
// Objeto unicoCheck da classe AcessoBioManager
[unicoCheck setSmartFrame:true];
[unicoCheck setAutoCapture:true];
}@IBAction func configureSmartCamera(_ sender: Any) {
// Objeto unicoCheck da classe AcessoBioManager
unicoCheck.setSmartFrame(true)
unicoCheck.setAutoCapture(true)
}AlertaNo 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
esetSmartFrame
:- Objective-C
- Swift
.m:
- (IBAction)configureSmartCamera:(UIButton *)sender {
// Objeto unicoCheck da classe AcessoBioManager
[unicoCheck setSmartFrame:false];
[unicoCheck setAutoCapture:false];
}@IBAction func configureSmartCamera(_ sender: Any) {
// Objeto unicoCheck da classe AcessoBioManager
unicoCheck.setSmartFrame(false)
unicoCheck.setAutoCapture(false)
}SUGERENCIA - SmartFrameIncluso 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)
YsetSmartFrame(smartFrame: true)
IMPLEMENTAR DELEGATES PARA EVENTOS DE LA CÁMARA
El método de apertura de la cámara necesita saber qué hacer cuando logra capturar una imagen con éxito 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 configuración de delegates que se llaman en situaciones de éxito o error.
A través de la configuración de los delegates, puede especificar qué sucede en su aplicación en situaciones de error (método
onErrorSelfie
) o éxito (métodoonSuccessSelfie
) en la captura de imágenes.Para la configuración de los delegates, debe implementar las interfaces
SelfieCameraDelegate
YAcessoBioSelfieDelegate
:- Objective-C
- Swift
.h:
#import <UIKit/UIKit.h>
#import <AcessoBio/AcessoBio.h>
#import "SelfieCameraDelegate.h"
@interface ViewController: UIViewController <AcessoBioManagerDelegate, SelfieCameraDelegate,
AcessoBioSelfieDelegate> {
AcessoBioManager *unicoCheck;
// Your code from previous and next steps here
}import UIKit
import AcessoBio
class ViewController: UIViewController, AcessoBioManagerDelegate,
SelfieCameraDelegate, AcessoBioSelfieDelegate {
//Your code from previous and next steps here
}Método
onSuccessSelfie
Al efectuar una captura de imagen con éxito, se invoca este método y devuelve un objeto del tipo
SelfieResult
que se usa más tarde para llamar a las API REST.- Objective-C
- Swift
- (void)onSuccessSelfie:(SelfieResult *)result {
NSLog(@"%@", result.base64);
}func onSuccessSelfie(_ result: AcessoBio.SelfieResult!) {
// Your code
}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.
CONVERSIÓN DEL BASE64 PARA BITMAPSi es necesario convertir base64 en bitmap, la forma predeterminada no funciona para Android. Es necesario realizar el split a partir de la coma(,) para que funcione. Si desea saber más, lea el artículo How to convert a Base64 string into a Bitmap image to show it in a ImageView?.
::alert importante
El atributo Encrypted está estrictamente destinado a enviar la imagen a través de las API de Unico. No debes abrir ni serializar este atributo, ya que sus características pueden cambiar sin previo aviso. Su uso debe ser exclusivo en interacciones con APIs para garantizar la integridad y seguridad de los datos. Unico no es responsable de ningún daño resultante de esta práctica, ya que pueden ocurrir cambios de manera impredecible. :::
Método
onErrorSelfie
Cuando se produce un error en la captura de imagen, se invoca este método y devuelve un objeto de tipo
ErrorBio
.- Objective-C
- Swift
- (void)onErrorSelfie:(ErrorBio *)errorBio {
// Your code
}func onErrorSelfie(_ errorBio: ErrorBio!) {
// Your code
}MÁS INFORMACIONESSobre los tipos de ErrorBio en la sección de Referencias de este SDK.
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.PERSONALIZAR IDIOMA
Puede configurar la experiencia de mensajes de información de los fotogramas de captura cambiando su idioma. Utilice la enumeración
LocaleTypes
que contiene los siguientes valores:Comentarios:1- Esta característica sólo está disponible para cámaras Smartlive con interacción (Facetec)
2- Es posible que sea necesario utilizar la activación remota; si desea utilizarla, por favor póngase en contacto con la cuenta CSM.
3- Si no está configurado, por defecto el iOS SDK utiliza el portugués como idioma principal.LocaleTypes.PT_BR
: para portugués (Brasil)
LocaleTypes.ES_MX
: para español (México)
LocaleTypes.ES_ES
: para español (España)
LocaleTypes.EN_US
: para inglés (Inglés)Vea cómo implementarlo en el siguiente ejemplo:
- Objective-C
- Swift
[unicoCheck setLocale:EN_US];
unicoCheck.setLocale(.EN_US)
CONFIGURACIÓN DEL ENTORNO
Configuración predeterminadaSi no está configurado, el SDK utiliza el entorno configurado en el archivo de configuración (getHostKey). Si no se utiliza getHostKey, se devuelve un error.
Es posible configurar el entorno que se utilizará para ejecutar el SDK. Utilice el
EnvironmentEnum
enumerado que contiene lo siguiente enumerado:EnvironmentEnum.PROD
: para entorno de producciónEnvironmentEnum.UAT
: para entorno de aprobaciónVea cómo implementarlo en el siguiente ejemplo:
- Objective-C
- Swift
[unicoCheck setEnvironment:PROD];
unicoCheck.setEnvironment(.PROD)
CÓMO PERSONALIZAR VIVENCIA INTERACTIVA CON TU LOGO
Para una experiencia de autenticación más asociada a tu marca, puedes insertar y personalizar tu logotipo en tiempo real.
Agregue una imagen a su proyecto con el siguiente nombre
unico_custom_footer_logo
.ComentariosEl archivo debe tener el nombre correcto. De lo contrario, la implementación no funciona.
Cuando ejecute el proyecto nuevamente, su logotipo debería aparecer en la parte inferior de la pantalla como se muestra a continuación:
PREPARAR Y ABRIR LA CÁMARA
Para seguir la apertura de la cámara, primero debe prepararla utilizando el método
prepareSelfieCamera
. Este método recibe como parámetro la implementación de la claseSelfieCameraDelegate
y el JSON con las credenciales, generado en esta etapa.- Objective-C
- Swift
.h:
#import <UIKit/UIKit.h>
#import <AcessoBio/AcessoBio.h>
#import "SelfieCameraDelegate.h"
@interface ViewController: UIViewController <AcessoBioManagerDelegate,
SelfieCameraDelegate, AcessoBioSelfieDelegate> {
AcessoBioManager *unicoCheck;
}
.m:
- (IBAction)openCamera:(UIButton *)sender {
[[unicoCheck build] prepareSelfieCamera:self config:[YourUnicoConfigClass new]];
}import UIKit
import AcessoBio
class ViewController: UIViewController, AcessoBioManagerDelegate,
SelfieCameraDelegate, AcessoBioSelfieDelegate {
@IBAction func openCamera(_ sender: Any) {
unicoCheck.build().prepareSelfieCamera(self, config: YourUnicoConfigClass())
}
}Cuando la cámara está lista, se activa el evento
onCameraReady
y recibe un objeto de tipo como parámetroAcessoBioCameraOpenerDelegate
.Debe anular este método, abriendo la cámara con el objeto recibido a través del método
open()
:- Objective-C
- Swift
- (void)onCameraReady:(id)cameraOpener {
[cameraOpener open:self];
}
- (void)onCameraFailed:(ErrorPrepare *)message {
// Your code
}func onCameraReady(_ cameraOpener: AcessoBioCameraOpenerDelegate!) {
cameraOpener.open(self)
}
func onCameraFailed(_ message: ErrorPrepare!) {
// Your code
}info MÁS INFORMACIONESEl tipo
ErrorPrepare
é uma extensão deErrorBio
contendo assim todas as suas propriedades. Sobre los tipos de ErrorBio en la sección de Referencias de este SDK.Si se produce un error al preparar la cámara, se activa el evento
onCameraFailed
. Debe implementar este método aplicando las reglas comerciales de su aplicación.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ónPor 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.