Métodos SDK Móvil
Se presentarán todos los métdos públicos disponibles en el SDK para uso del desarrollador para obtener la información deseada.
Login#
Los métodos del Login son utilizados para autenticarse en la aplicación y obtener la configuración y datos necesarios para ejecutar los procesos de la aplicación.
Estructura de respuesta: DGSDKLoginResponse#
public class DGSDKLoginResponse { public int code; public String message; public DGSDKLogin.OperationType type; public Auth2FA auth2FA;}| Campo | Descripción |
|---|---|
code | Codgigo HTTP de la respuesta del login. |
message | Mensaje de la respuesta de login. |
type | Tipo de operación (login,code, AUTH2FA ). |
auth2FA | Objeto que contiene la configuración relacionada al 2FA |
AuthFA#
data class Auth2FA( val lifeTimePin: Int = 0, val is2FA: Boolean? = false, val ReenvioCorreoPIN: Boolean = false, val Numero2FA: String = "", val Correo2FA: String? = "", val type2FA: ChoiceType2FA? = null)| Campo | Descripción |
|---|---|
lifeTimePin | Tiempo de vida en segundos del PIN generado para la autenticación 2FA. |
is2FA | Indica si la autenticación en dos pasos (2FA) está habilitada. |
ReenvioCorreoPIN | Define si se permite el reenvío del PIN al correo electrónico. |
Numero2FA | Número telefónico asociado al segundo factor de autenticación. |
Correo2FA | Correo electrónico asociado al segundo factor de autenticación. |
type2FA | Tipo de método de autenticación 2FA utilizado (EMAIL, PHONE_NUMBER, ONBOARDING). |
Respuesta de DGSDKLogin#
public interface loginCallback { void onResponse(DGSDKLoginResponse response);}Para obtener la respuesta de los diferentes métodos de autenticación, se deberá colocar el siguiente callback:
DGSDKLogin.handler = loginCallback { res: DGSDKLoginResponse -> when (res.type) { DGSDKLogin.OperationType.CODE -> handleLogin() DGSDKLogin.OperationType.LOGIN -> handleLogin() DGSDKLogin.OperationType.AUTH2FA -> handleLogin2FA() } }Login de Código#
Para poder loguearse con un código empresarial es necesario utilizar el siguiente código, este código únicamente sirve comó ejemplo de como realizar el login. Esta función es necesaria y es la primera que se debe de mandar llamar para poder conocer la configuración inicial.
DGSDKLogin.invoke(String code, boolean isOffline, Context context)Login de Usuario#
Este es el código utilizado para poder logear al usuario, es necesaria esta función para validar el acceso y obtener el perfil del usuario. Es forzoso primero hacer login del código ya que esta función no funcionará sin primero conocer el código del proyecto.
DGSDKLogin.invoke(String user, String password, boolean isOffline, Context context)Ticket de Sesión#
Para validar la sesión del usuario, el SDK utiliza un servicio que verifica el tiempo de vida previamente configurado. Esta validación se ejecuta 30 segundos antes de que el tiempo de vida expire. Cabe mencionar que este proceso se realiza de manera interna en el SDK; sin embargo, es necesario realizar algunos ajustes en la integración.
Si el servicio falla, el SDK intentará validar la sesión hasta tres veces de forma interna. Si estos intentos no tienen éxito, se enviará un mensaje a través de un callback y la sesión del usuario se cerrará automáticamente. Por ello, se recomienda integrar la siguiente configuración para capturar la respuesta y notificar al usuario:
BaseClass.callBackTicketFailure(errorMessage -> runOnUiThread(() -> BaseClass.showAlertDialog(this, "Error", errorMessage, () -> { // Se recomienda mostrar una alerta para notificar al usuario. DGSDKLogin.logoutHandler = serviceResponse -> runOnUiThread(() -> BaseClass.closeSession(activity, MainActivity.class)); DGSDKLogin.logoutInvoke(this); })));Si se está dentro de un formato y ocurre un error al actualizar el ticket, se mostrará una alerta. Al aceptarla, se ejecutará el servicio de logout, lo que provocará la salida del formato. Por ello, se recomienda incluir la siguiente configuración en el callback de DGSDKLoadTemplate:
DGSDKLoadTemplate.handler = new DGSDKLoadTemplate.LoadFormatoOnFinishAllFCallback() { @Override public void onFinishFormat_Cancelado(String GUID, String msg) { if (BaseClass.timerTicket == null) { // Añadir la siguiente configuración en caso de dirigir a otra activity BaseClass.closeSession(activity, GoToActivity.class); // En caso de permanecer en la misma activity BaseClass.closeSession(activity); } }
@Override public void onFinishFormat_Borrador(String GUID, String msg) { // Manejar respuesta }
@Override public void onFinishFormat_Publicar(String GUID, String msg) { // Manejar respuesta }
@Override public void onFinishFormat_WaitUIFromUser(String GUIDToReturn, String msg) { // Manejar respuesta }};Con esta implementación, se garantiza un adecuado manejo de errores en la validación del ticket de sesión y se proporciona una mejor experiencia al usuario al cerrar la sesión de manera controlada.
One Login#
Este es el código utilizado para poder logear un código y un usuario a la vez, es necesaria esta función para validar el acceso y obtener el código y el perfil del usuario.
DGSDKLogin.invoke(String code, String user, String password, boolean isOffline, Context context)Para obtener la respuesta de cualquiera de los métodos se debe implementar la variable handler de la clase DGSDKLogin.
public interface loginCallback { void onResponse(DGSDKLoginResponse response);}Ejemplo:#
DGSDKLogin.handler = (loginResponse) -> {
if (loginResponse.type == DGSDKLogin.OperationType.CODE && loginResponse.code == 200){ //Aquí se hace el manejo de la respuesta tipo codigo. } if (loginResponse.type == DGSDKLogin.OperationType.LOGIN && loginResponse.code == 200){ //Aquí se hace el manejo de la respuesta tipo usuario. }
};Autenticación 2FA en Login#
Cuando se habilita la funcionalidad de autenticación de dos factores (2FA), el flujo de autenticación incorpora validaciones adicionales. Aun así, se siguen utilizando los mismos métodos de inicio de sesión ya implementados (Login de Código, Usuario y One Login).
⚠️ Importante: Las respuestas y estructura de login para la autenticación de dos factores (2FA) es la misma que la planteada para los anteriores métodos de Login.
Envío del tipo de autenticación en (Dos) pasos#
Para especificar el tipo de autenticación con el cual se realizará el acceso, es necesario utilizar el siguiente método:
DGSDKLogin.sendChoice2FAInvoke( context, method2FA, number2FA, object : LoginChoice2FACallback { override fun onSuccess(message: String) { onSuccess() } override fun onError(message: String) { onFailure() } })| Parámetro | Tipo | Descripción |
|---|---|---|
context | Context | Contexto de la aplicación Android. |
method2FA | ChoiceType2FA | Define el método de autenticación en dos pasos que utilizará el usuario para registrarse. |
number2FA | String | Número de teléfono ingresado por el usuario (requerido únicamente si el tipo de autenticación 2FA es PHONE_NUMBER). |
callback | LoginChoice2FACallback | Callback que retorna la respuesta del proceso de autenticación. |
Envío del PIN (Verificación 2FA)#
Para completar la autenticación cuando el usuario requiere 2FA, se debe invocar el siguiente método:
DGSDKLogin.validateFaInvoke(pin, trustDevice, context);| Parámetro | Tipo | Descripción |
|---|---|---|
pin | String | Código PIN ingresado por el usuario. |
trustDevice | Boolean | Indica si el dispositivo actual debe considerarse confiable para futuros inicios de sesión (omite la validación 2FA). |
context | Context | Contexto de la aplicación Android. |
Reenvío de Correo para Nuevo PIN#
Cuando el PIN ha expirado y el campo ReenvioCorreoPIN está habilitado en la respuesta, es posible solicitar un nuevo PIN por correo electrónico. Para ello, invoca el siguiente método:
DGSDKSendEmail.sendEmailUser(context);Posteriormente, configura el siguiente callback para manejar la respuesta:
DGSDKSendEmail.initCallback { code, message, lifeTimePin ->
if (code == 200 && lifeTimePin != null) { onReset(lifeTimePin) // Actualiza el temporizador del nuevo PIN } else { Toasty.error(context, message.orEmpty(), Toasty.LENGTH_SHORT).show() }}Errores Comunes y Soluciones:#
| Problema | Posible causa | Solución recomendada |
|---|---|---|
| El PIN nunca llega | Correo mal configurado o filtrado como spam | Verificar la configuración SMTP y revisar la bandeja de spam |
| PIN siempre inválido | Usuario introduce datos incorrectos | Validar la entrada y mostrar un mensaje claro |
| Cuenta bloqueada tras varios intentos | Superó el límite de intentos fallidos | Contactar al administrador para desbloquear la cuenta |
| PIN expirado al ingresar | Usuario tardó demasiado en ingresar el código | Reenviar un nuevo PIN con el método correspondiente |
Mensajes y Códigos de Error en Login#
| Mensaje recibido | Código HTTP asignado | Descripción |
|---|---|---|
"Usuario o contraseña incorrecta" | 401 Unauthorized | Las credenciales ingresadas no son válidas. |
"PIN incorrecto" | 401 Unauthorized | El código PIN ingresado no es correcto. |
"El usuario debe cambiar la contraseña" | 429 UpgradeRequired | El usuario debe actualizar su contraseña antes de continuar. |
"Se superó el número de intentos. Cuenta bloqueada, consulte al administrador" | 429 Too Many Requests | La cuenta ha sido bloqueada por múltiples intentos fallidos. |
"Intento a cuenta deshabilitada" | 412 PreconditionFailed | La cuenta del usuario está deshabilitada y no puede iniciar sesión. |
"PIN expirado" | 410 Gone | El código PIN ha expirado. |
"Cuenta bloqueada 2FA" | 403 Forbidden | La cuenta fue bloqueada por múltiples intentos fallidos de verificación 2FA. |
| (Cualquier otro mensaje o error no reconocido) | 500 InternalServerError | Se produjo un error interno del servidor. |
Logout#
Para permitir el cierre de sesión del usuario autenticado, se ha añadido un nuevo servicio que se invoca mediante un método en la clase DGSDKLogin. Este método utiliza el mismo Callback que el proceso de inicio de sesión, por lo que su implementación es similar a la del método de login:
DGSDKLogin.logoutInvoke(this);La respuesta del servicio será idéntica a la del login; sin embargo, dentro del handler, es necesario implementar el siguiente método:
BaseClass.closeSession(activity,MainActivity.class);Este método se encargará de limpiar ciertos atributos del usuario para garantizar un cierre de sesión adecuado, además de proporcionar control sobre si se desea o no cambiar a una nueva actividad.
A continuación, se presenta un ejemplo de la implementación completa:
DGSDKLogin.LogoutHandler = serviceResponse -> { if (serviceResponse.code == 200){ Toasty.success(activity, serviceResponse.message, Toast.LENGTH_SHORT, true).show(); BaseClass.closeSession(activity,MainActivity.class); } }; DGSDKLogin.logoutInvoke(this);Plantillas#
Las plantillas son necesarias para poder descargar la configuración realizada en el portal "ID Portal" y poder mostrar todos los componentes, elementos, servicios, etc.
El método para descargar plantillas se encuentra dentro de la clase DGSDKDownloadTemplate
DGSDKDownloadTemplate.invoke(boolean eraseData, Context context)Para obtener la respuesta del método se debe implementar la variable handler de la clase DGSDKDownloadTemplate
public interface DownloadTemplateCallback { void onResponse(DGSDKDownloadTemplateResponse downloadTempResponse);}El objeto de la respuesta:
public class DGSDKDownloadTemplateResponse { public int code; public String message; public List plantillas;}Ejemplo#
DGSDKDownloadTemplate.handler = (downloadTempResponse) -> { //Aquí se hace el manejo de la respuesta.};Variables#
Las variables son necesarias para poder hacer que las plantillas puedan compartir información por default, tales como: datos relaciones con el perfíl de usuario.
El método para descargar variables se encuentra dentro de la clase DGSDKDownloadVariable
DGSDKdownloadVariable.invoke(Context context)Para obtener la respuesta del método se debe implementar la variable handler de la clase DGSDKDownloadVariable
public interface DownloadVariableCallback { void onResponse(DGSDKDownloadVariableResponse downloadVarResponse);}El objeto de la respuesta:
public class DGSDKDownloadVariableResponse { public int code; public String message ; public List<FEVariableData> variables;}Ejemplo:#
DGSDKDownloadVariable.handler = (downloadVarResponse) -> { //Aquí se hace el manejo de la respuesta.};Formatos#
Las formatos son los que contienen la información que se capturó en el onboarding, esta información va desde datos simples hasta objetos como los biométricos.
El método para descargar formatos se encuentra dentro de la clase DGSDKDownloadFormat
DGSDKdownloadFormat.invoke(boolean eraseDatos, Context context)El objeto de la respuesta:
public class DGSDKDownloadFormatResponse { public int code; public String message; public FEConsultaFormato formato;}Para obtener la respuesta del método se debe implementar la variable handler de la clase DGSDKDownloadFormat
public interface DownloadFormatCallback { void onResponse(DGSDKDownloadFormatResponse formatResponse);}Ejemplo:#
DGSDKDownloadFormat.handler = (formatResponse) -> { //Aquí se hace el manejo de la respuesta.};Acceso Directo por Código QR#
Inicializar y ejecutar#
Para acceder a un formato de manera directa mediante un código QR proporcionado por un administrador, sin la necesidad de realizar un inicio de sesión o una descarga manual de datos, es necesario obtener la instancia de la clase. Dado que esta es un singleton, solo será necesario instanciarla una vez.
val directAccessTemplate = DGSDKDirectAccessTemplate.invoke()Posteriormente, es necesario invocar el siguiente método, el cual recibirá como parámetros un string que corresponde al código QR escaneado y la activity en la que se realizará la implementación.
directAccessTemplate.initDirectAccessFlow(qrCode, activity)Callback#
Una vez ejecutado el método, es necesario agregar el siguiente callback para escuchar si el método se ejecutó exitosamente o si falló algún servicio o tarea en específico:
directAccessTemplate.setCallback(object : DGSDKDirectAccessTemplate.TemplateResultCallback { override fun onSuccess() { getFormatToUpload(context, activity) }
override fun onFailure(errorMessage: String) { // Manejo de la respuesta en caso de error. }})Dentro del callback onSuccess, se puede usar otro método para recibir el formato que se llenará. Se recomienda realizar logout una vez se haya completado el formato o después de enviarlo.
fun getFormatToUpload(mContext: Activity) { DGSDKLoadTemplate.handler = object : LoadFormatoOnFinishAllFCallback { override fun onFinishFormat_Cancelado(GUID: String, resultMessage: String) { logoutAction(mContext) }
override fun onFinishFormat_Borrador(GUID: String, resultMessage: String) { // Manejo de respuesta logoutAction(mContext) }
override fun onFinishFormat_Publicar(GUID: String, resultMessage: String) { sendFormat(mContext) logoutAction(mContext) }
override fun onFinishFormat_WaitUIFromUser( GUIDToReturn: String, resultMessage: String ) { logoutAction(mContext) } }}fun sendFormat(mContext: Activity) { BaseClass.synclog.incrementTareasHechas() BaseClass.synclog.nombreTarea = "Enviando formatos" DGSDKSendFormat.handler = DGSDKSendFormat.SendFormatCallback { code: Int, resultMessage: String? -> // Manejo de la respuesta } DGSDKSendFormat.invoke(mContext)}Cabe mencionar que dentro de directAccessTemplate se encuentra un método llamado closeSession, el cual permite liberar los recursos de memoria del SDK.
private fun logoutAction(mContext: Context) { directAccessTemplate.closeSession(mContext) DGSDKLogin.logoutHandler = DGSDKLogin.LogoutCallBack { // Manejo de la respuesta } DGSDKLogin.logoutInvoke(mContext)}note
Notas adicionales: El uso de la librería de cámara y escaneo de QR es a libre elección. Siempre que se tenga el código QR correcto, no debería haber conflictos con el formato de la cadena de texto. Sin embargo, como opción adicional, se recomienda la siguiente configuración utilizando la librería CameraX, nativa de Android:
Notas adicionales#
El uso de la librería de cámara y escaneo de QR es a libre elección. Siempre que se tenga el código QR correcto, no debería haber conflictos con el formato de la cadena de texto. Sin embargo, como opción adicional, se recomienda la siguiente configuración utilizando la librería CameraX, nativa de Android:
Configuración de Dependencias#
Primero, asegúrate de agregar las dependencias necesarias en tu archivo build.gradle:
dependencies { // CameraX implementation "androidx.camera:camera-core:version" implementation "androidx.camera:camera-camera2:version" implementation "androidx.camera:camera-lifecycle:version" implementation "androidx.camera:camera-view:version"
// ML Kit Barcode Scanning implementation "com.google.mlkit:barcode-scanning:version"}Inicialización de la Cámara#
Para inicializar la cámara, se utiliza la función startCamera(). Esta función configura la cámara y prepara la vista previa para escanear códigos QR.
private fun startCamera() { cameraProviderFuture = ProcessCameraProvider.getInstance(this) cameraProviderFuture!!.addListener({ val cameraProvider = cameraProviderFuture!!.get() preview = Preview.Builder() .build() .also { it.surfaceProvider = binding.accesDirectQr.previewView.surfaceProvider } val imageAnalyzer = ImageAnalysis.Builder() .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) .build() .also { it.setAnalyzer(cameraExecutor) { imageProxy -> thisViewModel.processImageProxy(imageProxy, this, preview) } } val cameraSelector = CameraSelector.Builder() .requireLensFacing(CameraSelector.LENS_FACING_BACK) .build() try { cameraProvider.unbindAll() cameraProvider.bindToLifecycle( this, cameraSelector, preview, imageAnalyzer ) } catch (e: Exception) { Log.e("CameraX", "Error iniciando la cámara: ${e.message}", e) } }, ContextCompat.getMainExecutor(this))}Procesamiento de Imágenes para Escanear Códigos QR#
fun processImageProxy( imageProxy: ImageProxy, activity: Activity, preview: Preview) { val mediaImage = imageProxy.image if (mediaImage == null) { imageProxy.close() return }
val rotationDegrees = imageProxy.imageInfo.rotationDegrees val image = InputImage.fromMediaImage(mediaImage, rotationDegrees)
val scannerOptions = BarcodeScannerOptions.Builder() .setBarcodeFormats(Barcode.FORMAT_QR_CODE) .build() val scanner = BarcodeScanning.getClient(scannerOptions) scanner.process(image) .addOnSuccessListener { barcodes -> for (barcode in barcodes) { // Manejo de la respuesta del QR escaneado } } .addOnFailureListener { e -> Log.e("QRScanner", "Error escaneando el código QR", e) } .addOnCompleteListener { imageProxy.close() }}Se recomienda cerrar la camará una vez se haya escaneado el codigo QR, de igual manera en medida de su logica de UI.
Skin#
El método para descargar el skin se encuentra dentro de la clase DGSDKDownloadSkin.
DGSDKDownloadSkin.invoke(boolean isOffline, Context context)Para obtener la respuesta del método se debe implementar la variable handler de la clase DGSDKDownloadSkin.
public interface DownloadSkinCallback { void onResponse(Integer code, String skinMessage);}Ejemplo:#
DGSDKDownloadSkin.handler = (code, resultDownloadSkin) -> { //Aquí se hace el manejo de la respuesta.};Anexos#
Los anexos son las imágenes. videos, audios, firmas o biométricos que fueron capturados durante la captura de un formato.
El método para descargar anexos se encuentra dentro de la clase DGSDKDownloadAttachments.
DGSDKDownloadAttachments.invoke(FEFormatoData formatoData, TipoAnexo tipoAnexo, Context context)Para obtener la respuesta del método se debe implementar la variable handler de la clase DGSDKDownloadAttachments.
public interface DownloadAttachmentsCallback { void onResponse(Integer downloadAttCode, String downloadAttMessage);}Ejemplo:#
DGSDKDownloadAttachments.handler = (downloadAttCode, downloadAttMessage) -> { //Aquí se hace el manejo de la respuesta.};Enviar Formatos#
Método para enviar los formatos creados y manipularlos en el servidor para una mayor interpretación de la información.
El método para enviar formatos se encuentra dentro de la clase DGSDKSendFormat
DGSDKsendFormat.invoke(Context context)Para obtener la respuesta del método se debe implementar la variable handler de la clase DGSDKSendFormat
public interface SendFormatCallback { void onResponse(Integer code, String resultMessage);}Ejemplo:#
DGSDKSendFormat.handler=(code, resultMessage) -> { //Aquí se hace el manejo de la respuesta.};Cargar Plantilla#
Cuando requieres crear un nuevo formato deberás de cargar la plantilla para obtener la información de los componentes, servicios y elementos configurados.
El método para cargar una plantilla que se encuentra dentro de la clase DGSDKLoadTemplate.
DGSDKLoadTemplate.invoke(FEPlantillaData itemFePlantillaData, Activity activity)Como argumentos recibe el contexto, la plantilla a cargar y la actividad desde donde se está llamando a cargar la plantilla.
Cuando el formato se ha llenado y ha sido guardado se puede recuperar el control de la aplicación sobreescribiendo el método onActivityResult en la actividad donde se llamó el método DGSDKloadTemplate.
Ejemplo:#
@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode == Formato.FORMAT_RESULT && resultCode == RESULT_OK){ Log.i("onActivityResult ","OK"); } super.onActivityResult(requestCode, resultCode, data);}Donde Formato.FORMAT_RESULT es el requestCode que sirve para identificar que la actividad que regresó el resultado es la perteneciente al formato. Para saber que se ejecutó correctamente se debe verificar que el resultCode sea igual a Activity.RESULT_OK.
Obtener Formato#
Si requieres cargar un formato descargado desde el servidor o salvado en la aplicación y quieres editarlo o modificarlo.
El método para obtener un formato por medio del GUID se encuentra dentro de la clase DGSDKGetFormatoData.
DGSDKGetFormatoData.getFormatoData(String Guid, Context context)Transitar Formato#
Es necesario transitar un formato para realizar cambios en un formato y establecer el formato en el estado correcto del flujo.
El método para transitar formatos se encuentra dentro de la clase DGSDKTransitFormat
DGSDKTransitFormat.invoke(Context context)Para obtener la respuesta del método se debe implementar la variable handler de la clase DGSDKSendFormat
public interface TransitFormatCallback { void onResponse(Integer transitCode, String resultTransitFormat);}Ejemplo:#
DGSDKTransitFormat.handler = (code, resultTransitFormat) -> { //Aquí se hace el manejo de la respuesta.};Registro#
Registro de Usuario#
Método para crear una nueva cuenta de usuario.
El método para registrar usuarios se encuentra dentro de la clase DGSDKRegister
DGSDKRegister.registerUser(FERegistro userRegistro, CodigoSaved codigoSaved, Context context)Ejemplo:#
FERegistro userRegistrar = new FERegistro();userRegistrar.User = "username";userRegistrar.Password = "password";userRegistrar.Email = "user@email.com";userRegistrar.Nombre = "Name";userRegistrar.ApellidoP = "Paterno";userRegistrar.ApellidoM = "Materno";userRegistrar.Celular = "5555555555"; //10 digitosDGSDKRegister.registerUser(userRegistrar, FeSdkCore.codigoSaved, mContext);Para obtener la respuesta del método se debe implementar la variable handler de la clase DGSDKRegister.
public interface registroCallback { void registerResponse(DGSDKRegisterResponse registerResponse);}El objeto de la respuesta:
public class DGSDKRegisterResponse { public int code; public String message = ""; public DGSDKRegister.OperationType type;}Ejemplo:#
DGSDKRegister.handler = (registerResponse) -> { //Aquí se hace el manejo de la respuesta. if (registerResponse.type == DGSDKRegister.OperationType.REGISTRAR && registerResponse.code == 200){ //Aquí se hace el manejo de la respuesta tipo registro. }};Activación de Usuario#
Al registrar el usuario y activar la cuenta para poder ser usada es necesario su activación por SMS.
El método para activar usuarios se encuentra dentro de la clase DGSDKRegister.
DGSDKRegister.activateUser(FERegistro userRegistro, String codigoSms, Context context)Ejemplo:#
String codigoSMS = "123456";DGSDKRegister.activateUser(userRegistrar, codigoSMS, mContext);Para obtener la respuesta del método se debe implementar la variable handler de la clase DGSDKRegister
public interface registroCallback { void registerResponse(DGSDKRegisterResponse registerResponse);}El objeto de la respuesta:
public class DGSDKRegisterResponse { public int code; public String message = ""; public DGSDKRegister.OperationType type;}Ejemplo:#
DGSDKRegister.handler = (registerResponse) -> { //Aquí se hace el manejo de la respuesta. if (registerResponse.type == DGSDKRegister.OperationType.ACTIVAR && registerResponse.code == 200){ //Aquí se hace el manejo de la respuesta tipo registro. }};Cambio de Contraseña#
Método utilizado para cambiar la contraseña en el caso de que al activar la cuenta tenga por default el parámetro de cambiar contraseña la primera vez al ser utilizada la cuenta.
El método para cambiar la contraseña del usuario se encuentra dentro de la clase DGSDKRegister.
DGSDKRegister.changePasswordUser(FEUsuario usuario, Context context)Ejemplo:#
FEUsuario usuario = new FEUsuario();usuario.User = "gibreelmart";usuario.Password = "tester";usuario.PasswordNuevo = "testerNew";DGSDKRegister.changePasswordUser(usuario, mContext);Para obtener la respuesta del método se debe implementar la variable handler de la clase DGSDKRegister.
public interface registroCallback { void registerResponse(DGSDKRegisterResponse registerResponse);}El objeto de la respuesta:
public class DGSDKRegisterResponse { public int code; public String message = ""; public DGSDKRegister.OperationType type;}Ejemplo:#
DGSDKRegister.handler = (registerResponse) -> { //Aquí se hace el manejo de la respuesta. if (registerResponse.type == DGSDKRegister.OperationType.CHANGEPASSWORD && registerResponse.code == 200){ //Aquí se hace el manejo de la respuesta tipo registro. }};Códigos de Respuesta#
Estos son los códigos generales que se envían en las respuestas de los métodos.
- "200".- La solicitud se realizó con éxito.
- "400".- La solicitud estaba malformada.
- "401".- El usuario debe cambiar la contraseña.
- "403".- No se ha iniciado sesión.
- "500".- Error desconocido. La razón viene especificada en el mensaje de la respuesta.