Captura de selfie
Esta guía está diseñada para ayudarlo a implementar el SDK Android de forma rápida y sencilla. Se proporcionan conceptos básicos, ejemplos de implementación de SDK y formas de 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 neste guia.
RECURSOS DISPONIBLES
El SDK de Android ofrece un componente de captura de selfies que contiene una silueta que ayuda al usuario a posicionarse correctamente para la foto. La captura de selfies se puede hacer de cinco maneras diferentes, cada una con un modo de cámara diferente:
CÁMARA DE SELFIE CON CAPTURA MANUAL
En este modo de cámara, hay una silueta de captura para ayudar al usuario a posicionar su rostro correctamente. Después de posicionarse correctamente, el usuario debe hacer clic en el botón para capturar la selfie.
En este modo de cámara, 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, el encriptado es rechazado por las API del backend del motor biométrico.
CÁMARA DE SELFIE CON CAPTURA INTELIGENTE
En este modo de cámara, el rostro del usuario se identifica automáticamente a través de algoritmos de visión por computadora y recibe comandos para posicionarse correctamente con su rostro centrado en la silueta de captura. Después de posicionarse correctamente, la selfie se captura automáticamente.
Al ayudar al usuario a encuadrar su rostro en la silueta de captura, esta opción puede reducir los problemas al enviar el cifrado a las API de back-end del motor biométrico
CÁMARA DE SELFIE CON PRUEBA DE VIDA DE FACETEC
En este modo de cámara, después de centrar el rostro en la silueta de captura, se le indica al usuario que realice un simple movimiento de acercamiento al rostro para asegurarse de que realmente está capturando el selfie en ese momento (Todo el proceso se realiza con la ayuda de algoritmos de visión computacional).
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 foto del rostro se captura sin necesidad de que el usuario presione un botón, por lo que se tiende a reducir los problemas al enviar la cifrada a las API del 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.
Este modo de cámara tiene los recursos de poca iluminación y mucha iluminación, que se activan automáticamente de acuerdo con el entorno de captura.
Ambiente con poca iluminación: El SDK detecta automáticamente que el usuario se encuentra en un entorno con poca iluminación y utiliza las API del dispositivo para iluminar la pantalla y realizar SOLO la transición de los colores de fondo del frame de captura y la silueta de captura a blanco. Este ajuste ilumina adecuadamente el rostro del usuario y mejora la precisión y las tasas de éxito.
Ambiente con mucha iluminación: El SDK detecta automáticamente que el usuario se encuentra en un entorno con mucha luz y utiliza las API del dispositivo para oscurecer la pantalla y realizar SOLO la transición de los colores de fondo del frame de captura y la silueta de captura a negro. Este ajuste oscurece adecuadamente el rostro del usuario y mejora la precisión y las tasas de éxito.
CÓMO PERSONALIZAR EL LIVENESS INTERACTIVO CON SU LOGOTIPO
Para una experiencia de autenticación más asociada con su marca, puede insertar y personalizar el logotipo en tiempo real.
- Agregue el archivo de imagen a la carpeta drawable de su aplicación con el siguiente nombre:
unico_custom_footer_logo
. Extensiones permitidas: .jpg, .png y .svg.
Los nombres de la carpeta y del archivo deben ser correctos. De lo contrario, la implementación no funcionará.
Después de completar los pasos, la personalización está lista y puedes ver tu logotipo en el marco de captura interactivo de Liveness.
Su logotipo debería aparecer en la parte inferior de la pantalla como se muestra a continuación:
PERSONALIZAR IDIOMA
Es posible configurar la experiencia de los mensajes informativos en los marcos de captura cambiando su idioma. Utiliza la enumeración LocaleTypes
que contiene los siguientes valores:
Así es cómo implementarlo en el ejemplo a continuación:
- Java
- Kotlin
unicoCheck.setLocale(LocaleTypes.EN_US);
unicoCheck.setLocale(LocaleTypes.EN_US)
CÁMARA TRASERA CON CAPTURA MANUAL
En este modo de cámara, hay una silueta de captura para ayudar al colaborador a posicionar el dispositivo correctamente. Después de posicionarse correctamente, el colaborador debe hacer clic en el botón para capturar el rostro del usuario.
En este modo de cámara, 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, el encriptado es rechazado por las API del backend del motor biométrico.
Este modo de cámara debe usarse EXCLUSIVA Y ÚNICAMENTE en tiendas físicas, requiere de un colaborador para realizar el proceso de captura de la foto del rostro del usuario.
CÁMARA TRASERA CON CAPTURA INTELIGENTE
En este modo de cámara, el rostro del usuario se identifica automáticamente a través de algoritmos de visión por computadora y el colaborador recibe comandos para posicionar el dispositivo correctamente con el rostro del usuario centrado en la silueta de captura. Después del posicionamiento correcto, se captura automáticamente una foto del rostro del usuario.
Al ayudar al colaborador a encuadrar el rostro del usuario en la silueta de captura, esta opción puede reducir los problemas al enviar los cifrados a las API de backend del motor biométrico.
Este modo de cámara debe usarse EXCLUSIVA Y ÚNICAMENTE en tiendas físicas, requiere de un colaborador para realizar el proceso de captura de la foto del rostro del usuario.
IMPLEMENTACIÓN
Al seguir esta guía, obtendrá todo el potencial del SDK integrado en su aplicación de Android.
INICIALIZAR EL SDK
Cree una instancia del builder (Generado a través de la interfaz IAcessoBioBuilder), proporcionando como parámetro el contexto en cuestión y la implementación de la clase AcessoBioListener.
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:
- Java
- Kotlin
public class MainActivity extends AppCompatActivity {
private AcessoBioListener callback = new AcessoBioListener() {
@Override
public void onErrorAcessoBio(ErrorBio errorBio) { }
@Override
public void onUserClosedCameraManually() { }
@Override
public void onSystemClosedCameraTimeoutSession() { }
@Override
public void onSystemChangedTypeCameraTimeoutFaceInference() { }
};
private IAcessoBioBuilder acessoBioBuilder = new AcessoBio(this, callback);
}
internal class MainActivity : AppCompatActivity() {
private val callback = object : AcessoBioListener {
override fun onErrorAcessoBio(errorBio: ErrorBio?) { }
override fun onUserClosedCameraManually() { }
override fun onSystemClosedCameraTimeoutSession() { }
override fun onSystemChangedTypeCameraTimeoutFaceInference() { }
}
private val acessoBioBuilder: IAcessoBioBuilder = AcessoBio(this, callback)
}
CONFIGURACIÓN DEL ENTORNO
Configura el entorno que se utilizará en la ejecución del SDK. Utiliza el enumerado Environment
que contiene los siguientes enumerados:
Environment.PROD
: para el entorno de Producción
Environment.UAT
: para el entorno de Homologación
Mira cómo implementarlo en el siguiente ejemplo:
- Java
- Kotlin
acessoBioBuilder.setEnvironment(Environment.UAT);
acessoBioBuilder.setEnvironment(Environment.UAT);
IMPLEMENTAR LAS FUNCIONES DE CALLBACK
Tenga en cuenta que el trabajo de implementación de la clase AcessoBioListener es, en gran medida, la configuración de los métodos de callback. Cada método se llama en una situación específica de devolución de llamada de SDK.
Simplemente sobrescriba los métodos ejemplificados en el paso anterior con las lógicas comerciales de su aplicación.
Este método se invoca cada vez que ocurre algún error de implementación al usar uno de nuestros métodos:
onErrorAcessoBio(ErrorBio errorBio)
Cuando se invoca, el método recibe un parámetro de tipo ErrorBio que contiene detalles del error. Más informaciones sobre el tipo ErrorBio en la sección de referencias.
Este método se invoca cada vez que el usuario cierra la cámara manualmente, por ejemplo, al hacer clic en el botón «Volver":
onUserClosedCameraManually()
Este método se invoca una vez que se ha alcanzado el tiempo máximo de sesión (Sin capturar ninguna imagen):
onSystemClosedCameraTimeoutSession()
Se puede configurar en el constructor a través del método setTimeoutSession. Este método debe recibir el tiempo máximo de sesión en segundos. Es posible cambiar el tiempo máximo de sesión de su usuario utilizando la funcionalidad de detección del rostro (Cámara de selfie de captura inteligente). Si excede el tiempo establecido en su proceso para capturar la foto puedes presentar algunos mensajes personalizables o instrucciones de usuario. El valor predeterminado es de 40 segundos y su valor mínimo también es de 40 segundos.
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 cámara cambió automáticamente al modo de captura manual (Sin la silueta de captura inteligente):
onSystemChangedTypeCameraTimeoutFaceInference()
El tiempo de captura máximo cuando se usa la detección del rostro (Cámara de selfie de captura inteligente) es de 13 segundos. Si el usuario encuentra alguna dificultad para capturar la foto detectando el rostro y excede el tiempo establecido en su proceso, la captura cambia automáticamente para manual, con el objetivo de facilitar la acción para el usuario (TimeOutfaceInference).
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.
CONFIGURAR EL MODO DE LA CÁMARA
Como se explicó anteriormente, hay cinco modos de cámaras de captura disponibles. Si no está utilizando el modo de Cámara de selfie con la prueba de vida de FaceTec, en este paso se puede elegir entre los modos: Cámara de selfie con captura manual, Cámara de selfie con captura inteligente, Cámara trasera con captura manual o Cámara trasera con captura inteligente.
SDK ha configurado y habilitado por defecto el encuadre inteligente y la captura automática. Para utilizar la cámara de selfie con captura manual, 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:
CÁMARA DE SELFIE CON CAPTURA MANUAL (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 cámara inteligente deben desactivarse a través de los métodos setAutoCapture y setSmartFrame:
- Java
- Kotlin
UnicoCheckCamera unicoCheckCamera = acessoBioBuilder
.setAutoCapture(false)
.setSmartFrame(false)
.build();
val unicoCheckCamera: UnicoCheckCamera = acessoBioBuilder
.setAutoCapture(false)
.setSmartFrame(false)
.build()
Incluso usando el modo de captura manual, se puede usar Smart Frame. En este caso, se muestra la señalización a color en la silueta, para identificar el encuadre del rostro y para habilitar el botón. Para esto, simplemente configure setAutoCapture(false) y setSmartFrame(true).
CÁMARA DE SELFIE CON CAPTURA INTELIGENTE (SMART CÁMARA)
Por defecto, SDK tiene el encuadre inteligente y la captura automática habilitados. Si usa este modo de cámara, no necesitará 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 de setAutoCapture y setSmartFrame:
- Java
- Kotlin
UnicoCheckCamera unicoCheckCamera = acessoBioBuilder
.setAutoCapture(true)
.setSmartFrame(true)
.build();
val unicoCheckCamera: UnicoCheckCamera = acessoBioBuilder
.setAutoCapture(true)
.setSmartFrame(true)
.build()
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.
Si está utilizando este modo, la configuración del modo de cámara es irrelevante, ya que este modo ofrece una experiencia predefinida que no se puede cambiar.
Sin embargo, se sugiere configurar un tipo de cámara en su builder (como se describe en este paso) como si deshabilite el modo Liveness con la interacción de instancia y genere un nuevo JSON, no tiene que cambiar su código.
Si desea usar este modo, es necesario que en las configuraciones de APIKey, el Tipo de cámara en SDK se seleccione con la opción Trasera.
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().
Los tipos admitidos para la representación de color son Color Resource o String que contienen el código de color hexadecimal. Ej.: R.color.red o #FF0000
Todos los métodos están disponibles a continuación:
- Java
- Kotlin
IAcessoBioTheme unicoTheme = new IAcessoBioTheme() {
@Override
public Object getColorBackground() {
return R.color.your_color;
}
@Override
public Object getColorBoxMessage() {
return R.color.your_color;
}
@Override
public Object getColorTextMessage() {
return R.color.your_color;
}
@Override
public Object getColorBackgroundPopupError() {
return R.color.your_color;
}
@Override
public Object getColorTextPopupError() {
return R.color.your_color;
}
@Override
public Object getColorBackgroundButtonPopupError() {
return R.color.your_color;
}
@Override
public Object getColorTextButtonPopupError() {
return R.color.your_color;
}
@Override
public Object getColorBackgroundTakePictureButton() {
return R.color.your_color;
}
@Override
public Object getColorIconTakePictureButton() {
return R.color.your_color;
}
@Override
public Object getColorBackgroundBottomDocument() {
return R.color.your_color;
}
@Override
public Object getColorTextBottomDocument() {
return R.color.your_color;
}
@Override
public Object getColorSilhouetteSuccess() {
return R.color.your_color;
}
@Override
public Object getColorSilhouetteError() {
return R.color.your_color;
}
@Override
public Object getColorProgressBar() {
return R.color.your_color;
}
};
acessoBioBuilder.setTheme(unicoTheme);
val unicoTheme = object: IAcessoBioTheme {
override fun getColorBackground() = R.color.your_color
override fun getColorBoxMessage() = R.color.your_color
override fun getColorTextMessage() = R.color.your_color
override fun getColorBackgroundPopupError() = R.color.your_color
override fun getColorTextPopupError() = R.color.your_color
override fun getColorBackgroundButtonPopupError() = R.color.your_color
override fun getColorTextButtonPopupError() = R.color.your_color
override fun getColorBackgroundTakePictureButton() = R.color.your_color
override fun getColorIconTakePictureButton() = R.color.your_color
override fun getColorBackgroundBottomDocument() = R.color.your_color
override fun getColorTextBottomDocument() = R.color.your_color
override fun getColorSilhouetteSuccess() = R.color.your_color
override fun getColorSilhouetteError() = R.color.your_color
override fun getColorSilhouetteNeutral() = R.color.your_color
override fun getColorProgressBar() = R.color.your_color
}
acessoBioBuilder.setTheme(unicoTheme)
También es posible realizar personalizaciones de manera estática, en su archivo colors.xml agregue el siguiente código:
<color name="unico_color_background"> #YourColor </color>
<color name="unico_color_silhouette_success"> #YourColor </color>
<color name="unico_color_silhouette_error"> #YourColor </color>
<color name="unico_color_silhouette_neutral"> #YourColor </color>
<color name="unico_color_box_message"> #YourColor </color>
<color name="unico_color_text_message"> #YourColor </color>
<color name="unico_color_background_popup_error"> #YourColor </color>
<color name="unico_color_text_popup_error"> #YourColor </color>
<color name="unico_color_background_button_popup_error"> #YourColor </color>
<color name="unico_color_text_button_popup_error"> #YourColor </color>
<color name="unico_color_background_take_picture_button"> #YourColor </color>
<color name="unico_color_icon_take_picture_button"> #YourColor </color>
<color name="unico_color_background_bottom_document"> #YourColor </color>
<color name="unico_color_text_bottom_document"> #YourColor </color>
<color name="unico_color_button_cancel"> #YourColor </color>
<color name="unico_color_progress_bar_capture"> #YourColor </color>
Consulte los métodos de personalización disponibles por modo de cámara.
CÁMARA DE SELFIE CON CAPTURA MANUAL
En este modo de cámara es posible personalizar:
Legenda | Leyenda |
---|---|
Cor do fundo do frame de captura | Color del fondo del frame de captura |
Cor do fundo da caixa de texto | Color de fondo de la caja de texto |
Cor da silhueta de captura | Color de la silueta de captura |
Cor do fundo do botão de captura manual | Color del fondo del botón de captura manual |
Cor da frente do botão de captura manual | Color del lado delantero del botón de captura manual |
Cor do texto | Color del texto |
Método | Método |
CÁMARA DE SELFIE CON CAPTURA INTELIGENTE
En este modo de cámara es posible personalizar:
Legenda | Leyenda |
---|---|
Cor do fundo do frame de captura | Color del fondo del frame de captura |
Cor do fundo da caixa de texto | Color de fondo de la caja de texto |
Cor da silhueta de captura quando NÃO HOUVER rosto enquadrado | Color de la silueta de captura cuando NO HAY rostro encuadrado |
Cor do enquadramento CORRETO do rosto (Geralmente usa-se verde) | Color del encuadre CORRECTO del rostro (Por lo general se usa verde) |
Cor do enquadramento INCORRETO do rosto (Geralmente usa-se vermelho) | Color del encuadre INCORRECTO del rostro (Por lo general se usa rojo) |
Cor do texto | Color del texto |
Método | Método |
Obs: Após um período de 13 segundos sem o enquadramento correto do rosto, é habilitado o botão para captura manual, sendo necessário também personalizar os métodos abaixo: | Nota: Después de un período de 13 segundos sin el encuadre correcto del rostro, el botón de captura manual está habilitado, y también es necesario personalizar los métodos a continuación: |
Cor do fundo do botão de captura manual | Color del fondo del botón de captura manual |
Cor da frente do botão de captura manual | Color del lado delantero del botón de captura manual |
CÁMARA DE SELFIE CON PRUEBA DE VIDA DE FACETEC
En este modo de cámara es posible personalizar:
Legenda | Leyenda |
---|---|
Cor do ícone de carregamento | Color del icono de carga |
Método | Método |
Legenda | Leyenda |
---|---|
Cor do fundo do frame de captura | Color del fondo del frame de captura |
Cor do texto da orientação superior e cor do texto da orientação inferior | Color del texto de la orientación y color del texto de la orientación inferior |
Cor da silhueta de captura | Color de la silueta de captura |
Cor do fundo do botão “Estou pronto" | Color del fondo del botón “Estoy listo" |
Cor do botão de fechar | Color del botón de cerrar |
Método | Método |
Legenda | Leyenda |
---|---|
Cor do fundo da caixa de texto superior | Color de fondo de la caja de texto superior |
Cor do texto | Color del texto |
Cor da silhueta dinâmica de captura | Color de la silueta dinámica de captura |
Cor do botão de fechar | Color del botón de cerrar |
Método | Método |
Legenda | Leyenda |
---|---|
Cor do texto superior, inferior, bordas e subtítulo | Color del texto superior, inferior, bordes y subtítulo |
Cor do fundo do botão “Tente novamente” | Color del fondo del botón "Intentar de nuevo" |
Cor do texto | Color del texto |
Cor do botão de fechar | Color del botón de cerrar |
Método | Método |
CÁMARA TRASERA CON CAPTURA MANUAL
En este modo de cámara es posible personalizar:
Legenda | Leyenda |
---|---|
Cor do fundo do frame de captura | Color del fondo del frame de captura |
Cor do fundo da caixa de texto | Color de fondo de la caja de texto |
Cor da silhueta de captura | Color de la silueta de captura |
Cor do fundo do botão de captura manual | Color del fondo del botón de captura manual |
Cor da frente do botão de captura manual | Color del lado delantero del botón de captura manual |
Cor do texto | Color del texto |
Método | Método |
CÁMARA TRASERA CON CAPTURA INTELIGENTE
En este modo de cámara es posible personalizar:
Legenda | Leyenda |
---|---|
Cor do fundo do frame de captura | Color del fondo del frame de captura |
Cor do fundo da caixa de texto | Color de fondo de la caja de texto |
Cor da silhueta de captura quando NÃO HOUVER rosto enquadrado | Color de la silueta de captura cuando NO HAY rostro encuadrado |
Cor do enquadramento CORRETO do rosto (Geralmente usa-se verde) | Color del encuadre CORRECTO del rostro (Por lo general se usa verde) |
Cor do enquadramento INCORRETO do rosto (Geralmente usa-se vermelho) | Color del encuadre INCORRECTO del rostro (Por lo general se usa rojo) |
Cor do texto | Color del texto |
Método | Método |
Obs: Após um período de 13 segundos sem o enquadramento correto do rosto, é habilitado o botão para captura manual, sendo necessário também personalizar os métodos abaixo: | Nota: Después de un período de 13 segundos sin el encuadre correcto del rostro, el botón de captura manual está habilitado, y también es necesario personalizar los métodos a continuación: |
Cor do fundo do botão de captura manual | Color del fondo del botón de captura manual |
Cor da frente do botão de captura manual | Color del lado delantero del botón de captura manual |
CONFIGURAR CREDENCIALES
Es necesario informar la Clave SDK como se describe en CARGANDO LAS CREDENCIALES A SU PROYECTO.
IMPLEMENTAR LISTENERS PARA EVENTOS DE LA CÁMARA
El método de apertura de la cámara, que se llama en el siguiente paso, debe saber qué hacer cuando se capture con éxito una imagen o cuando ocurre un error en el proceso. Es necesario informar "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.
Al configurar 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.
Mudanças ocorridas:
- Del método prepareCamera que antes era prepareSelfieCamera;
- De la clase CameraListener que antes era SelfieCameraListener;
- Del objeto UnicoCheckCameraOpener.Camera que antes era UnicoCheckCameraOpener.Selfie.
Para la configuración de los listeners, es necesario implementar:
- Java
- Kotlin
iAcessoBioSelfie cameraListener = new iAcessoBioSelfie() {
@Override
public void onSuccessSelfie(ResultCamera result) { }
@Override
public void onErrorSelfie(ErrorBio errorBio) { }
};
unicoCheckCamera.prepareCamera(unicoConfig, new CameraListener() {
@Override
public void onCameraReady(UnicoCheckCameraOpener.Camera cameraOpener) {
cameraOpener.open(cameraListener);
}
@Override
public void onCameraFailed(String message) {
Log.e(TAG, message);
}
});
val cameraListener: iAcessoBioSelfie = object : iAcessoBioSelfie {
override fun onSuccessSelfie(result: ResultCamera?) {}
override fun onErrorSelfie(errorBio: ErrorBio?) {}
}
unicoCheckCamera.prepareCamera(unicoConfig, object : CameraListener {
override fun onCameraReady(cameraOpener: UnicoCheckCameraOpener.Camera?) {
cameraOpener?.open(cameraListener)
}
override fun onCameraFailed(message: String?) {
Log.e(TAG, message)
}
})
La implementación de estos métodos listeners debe hacerse a través de una instancia de la clase iAcessoBioSelfie.
PREPARAR Y ABRIR LA CÁMARA
Para seguir la apertura de la cámara, primero debe prepararla utilizando el método prepareCamera. Este método recibe como parámetro la implementación de la clase CameraListener, la clase o JSON con las credenciales, generado en esta etapa.
Cuando se prepara la cámara, se dispara el evento onCameraReady, que recibe como parámetro un objeto del tipo UnicoCheckCameraOpener.Camera.
Es necesario anular este método abriendo la cámara con el objeto recibido a través del método Open (). El método Open() debe recibir como parámetro los listeners configurados en los pasos anteriores.
MÉTODO ONSUCCESSSELFIE
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:
public void onSuccessSelfie(ResultCamera result) { }
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.
::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:
public void onErrorSelfie(ErrorBio errorBio) { }
Sobre los tipos de ErrorBio en la sección de Referencias de este SDK.
Si 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?.
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.
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.