Guía de Integración del SDK de Android

Descripción General

El SDK de Android MTVerify es un SDK de autenticación de números de teléfono móvil que ofrece una verificación de números de teléfono rápida, segura y de nivel operador.

Funciones Principales

  • Inicialización del SDK: Obtiene la configuración automáticamente e inicializa mediante el AppKey
  • Comprobación de cobertura: Comprueba si el entorno de red actual es compatible con el servicio de autenticación
  • Autenticación del número: Inicia la autenticación del número de teléfono y obtiene un token de autenticación

Requisitos del Sistema

  • Android 5.0 (API 21) y superior
  • El dispositivo del usuario tiene los datos móviles activados

Guía de Integración

Configuración de Permisos

El paquete aar solicita los siguientes permisos:

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
              
              <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

            
Este bloque de código se muestra en una ventana flotante

Configuración del Operador

Dado que la interfaz del operador requiere transmisión HTTP en texto plano, debe configurar la política de seguridad de red en el AndroidManifest.xml de su aplicación:

<application android:networkSecurityConfig="@xml/mtverify_network_security_config" ...> ... </application>
              
              <application
    android:networkSecurityConfig="@xml/mtverify_network_security_config"
    ...>
    ...
</application>

            
Este bloque de código se muestra en una ventana flotante

También debe copiar el archivo mtverify_network_security_config.xml en el directorio res/xml/ de su aplicación. Puede encontrar este archivo en el paquete de instalación que descargó.

Lista de Métodos

init

Inicializa el SDK de MTVerify y establece la clave de la aplicación y la configuración del entorno.

Firma del Método

@JvmStatic fun init( context: Context, appkey: String, environment: IPEnvironment = IPEnvironment.PRODUCTION, callback: InitCallback? = null )
              
              @JvmStatic
fun init(
    context: Context, 
    appkey: String, 
    environment: IPEnvironment = IPEnvironment.PRODUCTION, 
    callback: InitCallback? = null
)

            
Este bloque de código se muestra en una ventana flotante

Parámetros

Parámetro Tipo Obligatorio Descripción
context Context Objeto de contexto de Android
appkey String Clave de la aplicación, usada para identificar la aplicación
environment IPEnvironment No Tipo de entorno, predeterminado SANDBOX. Opciones: - IPEnvironment.SANDBOX: entorno de prueba/sandbox - IPEnvironment.PRODUCTION: entorno de producción
callback InitCallback? No Interfaz de callback de inicialización, usada para recibir el resultado de la inicialización

Valor de Retorno

Ninguno

Resultado del Callback

El resultado de la inicialización se devuelve mediante InitCallback.onComplete(result: InitResult):

data class InitResult( val code: Int, // Código de estado; 0 significa éxito, otros números significan fallo val message: String? // Mensaje (mensaje de éxito o de error) )
              
              data class InitResult(
    val code: Int,        // Código de estado; 0 significa éxito, otros números significan fallo
    val message: String?  // Mensaje (mensaje de éxito o de error)
)

            
Este bloque de código se muestra en una ventana flotante

Ejemplo de Uso

MTVerifyApi.init( context = this, appkey = "your_app_key", environment = IPEnvironment.PRODUCTION, callback = object : InitCallback { override fun onComplete(result: InitResult) { if (result.code == 0) { // Inicialización correcta Log.d("MTVerify", "Inicialización correcta: ${result.message}") } else { // Inicialización fallida Log.e("MTVerify", "Inicialización fallida: ${result.message}") } } } )
              
              MTVerifyApi.init(
    context = this,
    appkey = "your_app_key",
    environment = IPEnvironment.PRODUCTION,
    callback = object : InitCallback {
        override fun onComplete(result: InitResult) {
            if (result.code == 0) {
                // Inicialización correcta
                Log.d("MTVerify", "Inicialización correcta: ${result.message}")
            } else {
                // Inicialización fallida
                Log.e("MTVerify", "Inicialización fallida: ${result.message}")
            }
        }
    }
)

            
Este bloque de código se muestra en una ventana flotante

Notas

  • Debe llamar al método init() para inicializar el SDK antes de usar otras funciones
  • El proceso de inicialización obtiene clientId y redirectUrl mediante una solicitud HTTP y requiere conexión de red

setLogEnable

Establece el interruptor de registro para controlar la salida de registros del SDK.

Firma del Método

@JvmStatic fun setLogEnable(enable: Boolean)
              
              @JvmStatic
fun setLogEnable(enable: Boolean)

            
Este bloque de código se muestra en una ventana flotante

Parámetros

Parámetro Tipo Obligatorio Descripción
enable Boolean true activa el registro, false desactiva toda la salida de registros

Ejemplo de Uso

// Activar el registro MTVerifyApi.setLogEnable(true) // Desactivar el registro MTVerifyApi.setLogEnable(false)
              
              // Activar el registro
MTVerifyApi.setLogEnable(true)

// Desactivar el registro
MTVerifyApi.setLogEnable(false)

            
Este bloque de código se muestra en una ventana flotante

checkCoverage

Comprueba si el número de teléfono especificado es compatible con el servicio de verificación de IPification.

Firma del Método

@JvmStatic fun checkCoverage( context: Context, phoneNumber: String, callback: CoverageCallback? = null )
              
              @JvmStatic
fun checkCoverage(
    context: Context,
    phoneNumber: String,
    callback: CoverageCallback? = null
)

            
Este bloque de código se muestra en una ventana flotante

Parámetros

Parámetro Tipo Obligatorio Descripción
context Context Objeto de contexto de Android
phoneNumber String Código de país + número de teléfono del usuario
callback CoverageCallback? No Interfaz de callback de la comprobación de cobertura

Valor de Retorno

Ninguno

Resultado del Callback

El resultado de la comprobación se devuelve mediante CoverageCallback.onComplete(result: CoverageResult):

data class CoverageResult( val code: Int, // Código de estado; 0 significa éxito, otros números significan fallo val isAvailable: Boolean, // Si está disponible (operador compatible) val operatorCode: String?, // Código del operador val message: String? // Mensaje (mensaje de éxito o de error) )
              
              data class CoverageResult(
    val code: Int,           // Código de estado; 0 significa éxito, otros números significan fallo
    val isAvailable: Boolean, // Si está disponible (operador compatible)
    val operatorCode: String?, // Código del operador
    val message: String?      // Mensaje (mensaje de éxito o de error)
)

            
Este bloque de código se muestra en una ventana flotante

Ejemplo de Uso

MTVerifyApi.checkCoverage( context = this, phoneNumber = "6281234567890", callback = object : CoverageCallback { override fun onComplete(result: CoverageResult) { if (result.code == 0) { if (result.isAvailable) { // El servicio es compatible Log.d("MTVerify", "Operador compatible: ${result.operatorCode}") } else { // El servicio no es compatible Log.d("MTVerify", "Operador no compatible") } } else { // Comprobación fallida Log.e("MTVerify", "Comprobación fallida: ${result.message}") } } } )
              
              MTVerifyApi.checkCoverage(
    context = this,
    phoneNumber = "6281234567890",
    callback = object : CoverageCallback {
        override fun onComplete(result: CoverageResult) {
            if (result.code == 0) {
                if (result.isAvailable) {
                    // El servicio es compatible
                    Log.d("MTVerify", "Operador compatible: ${result.operatorCode}")
                } else {
                    // El servicio no es compatible
                    Log.d("MTVerify", "Operador no compatible")
                }
            } else {
                // Comprobación fallida
                Log.e("MTVerify", "Comprobación fallida: ${result.message}")
            }
        }
    }
)

            
Este bloque de código se muestra en una ventana flotante

startAuthentication

Inicia el flujo de autenticación del número de teléfono.

Firma del Método

@JvmStatic fun startAuthentication( activity: Activity, countryCode: String, phoneNumber: String, callback: AuthenticationCallback? = null )
              
              @JvmStatic
fun startAuthentication(
    activity: Activity,
    countryCode: String,
    phoneNumber: String,
    callback: AuthenticationCallback? = null
)

            
Este bloque de código se muestra en una ventana flotante

Parámetros

Parámetro Tipo Obligatorio Descripción
activity Activity Objeto Activity de Android, usado para mostrar la interfaz de autenticación
countryCode String Código de país
phoneNumber String Número de teléfono del usuario (sin código de país)
callback AuthenticationCallback? No Interfaz de callback de autenticación

Valor de Retorno

Ninguno

Resultado del Callback

El resultado de la autenticación se devuelve mediante AuthenticationCallback.onComplete(result: AuthenticationResult):

data class AuthenticationResult( val code: Int, // Código de estado; 0 significa éxito, -1 significa fallo, -2 significa cancelado por el usuario val token: String?, // Datos de autenticación cifrados (una cadena JSON que contiene el código, cifrada con AES) val message: String? // Mensaje (mensaje de éxito o de error) )
              
              data class AuthenticationResult(
    val code: Int,        // Código de estado; 0 significa éxito, -1 significa fallo, -2 significa cancelado por el usuario
    val token: String?,   // Datos de autenticación cifrados (una cadena JSON que contiene el código, cifrada con AES)
    val message: String?  // Mensaje (mensaje de éxito o de error)
)

            
Este bloque de código se muestra en una ventana flotante

Nota: token es una cadena JSON cifrada con el siguiente formato:

{ "version": "1", "content": { "code": "código de autenticación", "state": "parámetro de estado", "appkey": "clave de la aplicación" } }
              
              {
  "version": "1",
  "content": {
    "code": "código de autenticación",
    "state": "parámetro de estado",
    "appkey": "clave de la aplicación"
  }
}

            
Este bloque de código se muestra en una ventana flotante

Ejemplo de Uso

MTVerifyApi.startAuthentication( activity = this, countryCode = "62", phoneNumber = "81234567890", callback = object : AuthenticationCallback { override fun onComplete(result: AuthenticationResult) { when (result.code) { 0 -> { // Autenticación correcta val token = result.token // El token se usa para canjear el resultado Log.d("MTVerify", "Autenticación correcta: $token") } -1 -> { // Autenticación fallida Log.e("MTVerify", "Autenticación fallida: ${result.message}") } -2 -> { // Cancelado por el usuario Log.d("MTVerify", "El usuario canceló la autenticación") } } } } )
              
              MTVerifyApi.startAuthentication(
    activity = this,
    countryCode = "62",
    phoneNumber = "81234567890",
    callback = object : AuthenticationCallback {
        override fun onComplete(result: AuthenticationResult) {
            when (result.code) {
                0 -> {
                    // Autenticación correcta
                    val token = result.token
                    // El token se usa para canjear el resultado
                    Log.d("MTVerify", "Autenticación correcta: $token")
                }
                -1 -> {
                    // Autenticación fallida
                    Log.e("MTVerify", "Autenticación fallida: ${result.message}")
                }
                -2 -> {
                    // Cancelado por el usuario
                    Log.d("MTVerify", "El usuario canceló la autenticación")
                }
            }
        }
    }
)

            
Este bloque de código se muestra en una ventana flotante

Modelos de Datos

IPEnvironment

Enumeración del tipo de entorno:

enum class IPEnvironment { SANDBOX, // Entorno de prueba/sandbox PRODUCTION // Entorno de producción }
              
              enum class IPEnvironment {
    SANDBOX,      // Entorno de prueba/sandbox
    PRODUCTION    // Entorno de producción
}

            
Este bloque de código se muestra en una ventana flotante

InitResult

Resultado de la inicialización:

data class InitResult( val code: Int, // Código de estado; 0 significa éxito val message: String? // Mensaje )
              
              data class InitResult(
    val code: Int,        // Código de estado; 0 significa éxito
    val message: String?  // Mensaje
)

            
Este bloque de código se muestra en una ventana flotante

CoverageResult

Resultado de la comprobación de cobertura:

data class CoverageResult( val code: Int, // Código de estado; 0 significa éxito val isAvailable: Boolean, // Si está disponible val operatorCode: String?, // Código del operador val message: String? // Mensaje )
              
              data class CoverageResult(
    val code: Int,           // Código de estado; 0 significa éxito
    val isAvailable: Boolean, // Si está disponible
    val operatorCode: String?, // Código del operador
    val message: String?      // Mensaje
)

            
Este bloque de código se muestra en una ventana flotante

AuthenticationResult

Resultado de la autenticación:

data class AuthenticationResult( val code: Int, // Código de estado; 0 significa éxito, -1 significa fallo, -2 significa cancelado por el usuario val token: String?, // Token de autenticación cifrado val message: String? // Mensaje )
              
              data class AuthenticationResult(
    val code: Int,        // Código de estado; 0 significa éxito, -1 significa fallo, -2 significa cancelado por el usuario
    val token: String?,   // Token de autenticación cifrado
    val message: String?  // Mensaje
)

            
Este bloque de código se muestra en una ventana flotante

Interfaces de Callback

InitCallback

Interfaz de callback de inicialización:

interface InitCallback { fun onComplete(result: InitResult) }
              
              interface InitCallback {
    fun onComplete(result: InitResult)
}

            
Este bloque de código se muestra en una ventana flotante

CoverageCallback

Interfaz de callback de la comprobación de cobertura:

interface CoverageCallback { fun onComplete(result: CoverageResult) }
              
              interface CoverageCallback {
    fun onComplete(result: CoverageResult)
}

            
Este bloque de código se muestra en una ventana flotante

AuthenticationCallback

Interfaz de callback de autenticación:

interface AuthenticationCallback { fun onComplete(result: AuthenticationResult) }
              
              interface AuthenticationCallback {
    fun onComplete(result: AuthenticationResult)
}

            
Este bloque de código se muestra en una ventana flotante

Ejemplo Completo

class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 1. Activar el registro (opcional) MTVerifyApi.setLogEnable(true) // 2. Inicializar el SDK MTVerifyApi.init( context = this, appkey = "your_app_key", environment = IPEnvironment.SANDBOX, callback = object : InitCallback { override fun onComplete(result: InitResult) { if (result.code == 0) { // Inicialización correcta; puede empezar a usar otras funciones checkCoverage() } } } ) } private fun checkCoverage() { // 3. Comprobar la cobertura MTVerifyApi.checkCoverage( context = this, phoneNumber = "6281234567890", callback = object : CoverageCallback { override fun onComplete(result: CoverageResult) { if (result.isAvailable) { // 4. Si es compatible, realizar la autenticación startAuthentication() } } } ) } private fun startAuthentication() { // 5. Realizar la autenticación MTVerifyApi.startAuthentication( activity = this, countryCode = "62", phoneNumber = "81234567890", callback = object : AuthenticationCallback { override fun onComplete(result: AuthenticationResult) { if (result.code == 0) { // Autenticación correcta; procesar el token handleToken(result.token) } } } ) } private fun handleToken(token: String?) { // Llamar a la API para procesar el token canjeado } }
              
              class MainActivity : AppCompatActivity() {
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        // 1. Activar el registro (opcional)
        MTVerifyApi.setLogEnable(true)
        
        // 2. Inicializar el SDK
        MTVerifyApi.init(
            context = this,
            appkey = "your_app_key",
            environment = IPEnvironment.SANDBOX,
            callback = object : InitCallback {
                override fun onComplete(result: InitResult) {
                    if (result.code == 0) {
                        // Inicialización correcta; puede empezar a usar otras funciones
                        checkCoverage()
                    }
                }
            }
        )
    }
    
    private fun checkCoverage() {
        // 3. Comprobar la cobertura
        MTVerifyApi.checkCoverage(
            context = this,
            phoneNumber = "6281234567890",
            callback = object : CoverageCallback {
                override fun onComplete(result: CoverageResult) {
                    if (result.isAvailable) {
                        // 4. Si es compatible, realizar la autenticación
                        startAuthentication()
                    }
                }
            }
        )
    }
    
    private fun startAuthentication() {
        // 5. Realizar la autenticación
        MTVerifyApi.startAuthentication(
            activity = this,
            countryCode = "62",
            phoneNumber = "81234567890",
            callback = object : AuthenticationCallback {
                override fun onComplete(result: AuthenticationResult) {
                    if (result.code == 0) {
                        // Autenticación correcta; procesar el token
                        handleToken(result.token)
                    }
                }
            }
        )
    }
    
    private fun handleToken(token: String?) {
        // Llamar a la API para procesar el token canjeado
        
    }
}

            
Este bloque de código se muestra en una ventana flotante

Notas

  1. Orden de inicialización: Debe llamar al método init() para inicializar el SDK antes de usar otras funciones.
  2. Seguridad de subprocesos: Todos los métodos de la API se pueden llamar en el hilo principal, y los callbacks también se ejecutan en el hilo principal.
  3. Requisitos de permisos: Asegúrese de que la aplicación haya solicitado los permisos de red necesarios.
  4. Descifrado del token: El token devuelto tras una autenticación correcta está cifrado y debe procesarse con el método de descifrado correspondiente.
  5. Control de registros: Se recomienda desactivar la salida de registros en el entorno de producción para mejorar el rendimiento y la seguridad.

Información de la Versión

  • Versión del SDK: 1.0.1
Icon Solid Transparent White Qiyu
Contacto