Skip to main content

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;}
CampoDescripción
codeCodgigo HTTP de la respuesta del login.
messageMensaje de la respuesta de login.
typeTipo de operación (login,code, AUTH2FA ).
auth2FAObjeto 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)
CampoDescripción
lifeTimePinTiempo de vida en segundos del PIN generado para la autenticación 2FA.
is2FAIndica si la autenticación en dos pasos (2FA) está habilitada.
ReenvioCorreoPINDefine si se permite el reenvío del PIN al correo electrónico.
Numero2FANúmero telefónico asociado al segundo factor de autenticación.
Correo2FACorreo electrónico asociado al segundo factor de autenticación.
type2FATipo 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ámetroTipoDescripción
contextContextContexto de la aplicación Android.
method2FAChoiceType2FADefine el método de autenticación en dos pasos que utilizará el usuario para registrarse.
number2FAStringNúmero de teléfono ingresado por el usuario (requerido únicamente si el tipo de autenticación 2FA es PHONE_NUMBER).
callbackLoginChoice2FACallbackCallback 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ámetroTipoDescripción
pinStringCódigo PIN ingresado por el usuario.
trustDeviceBooleanIndica si el dispositivo actual debe considerarse confiable para futuros inicios de sesión (omite la validación 2FA).
contextContextContexto 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:#

ProblemaPosible causaSolución recomendada
El PIN nunca llegaCorreo mal configurado o filtrado como spamVerificar la configuración SMTP y revisar la bandeja de spam
PIN siempre inválidoUsuario introduce datos incorrectosValidar la entrada y mostrar un mensaje claro
Cuenta bloqueada tras varios intentosSuperó el límite de intentos fallidosContactar al administrador para desbloquear la cuenta
PIN expirado al ingresarUsuario tardó demasiado en ingresar el códigoReenviar un nuevo PIN con el método correspondiente

Mensajes y Códigos de Error en Login#

Mensaje recibidoCódigo HTTP asignadoDescripción
"Usuario o contraseña incorrecta"401 UnauthorizedLas credenciales ingresadas no son válidas.
"PIN incorrecto"401 UnauthorizedEl código PIN ingresado no es correcto.
"El usuario debe cambiar la contraseña"429 UpgradeRequiredEl usuario debe actualizar su contraseña antes de continuar.
"Se superó el número de intentos. Cuenta bloqueada, consulte al administrador"429 Too Many RequestsLa cuenta ha sido bloqueada por múltiples intentos fallidos.
"Intento a cuenta deshabilitada"412 PreconditionFailedLa cuenta del usuario está deshabilitada y no puede iniciar sesión.
"PIN expirado"410 GoneEl código PIN ha expirado.
"Cuenta bloqueada 2FA"403 ForbiddenLa cuenta fue bloqueada por múltiples intentos fallidos de verificación 2FA.
(Cualquier otro mensaje o error no reconocido)500 InternalServerErrorSe 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.