Guide d'Intégration du SDK Android

Vue d'ensemble

Le SDK Android MTVerify est un SDK d'authentification de numéro de mobile qui offre une vérification de numéro de téléphone rapide, sécurisée et de niveau opérateur.

Fonctionnalités Principales

  • Initialisation du SDK : Récupère automatiquement la configuration et initialise via l'AppKey
  • Vérification de couverture : Vérifie si l'environnement réseau actuel prend en charge le service d'authentification
  • Authentification du numéro : Lance l'authentification du numéro de mobile et obtient un jeton d'authentification

Configuration Requise

  • Android 5.0 (API 21) et supérieur
  • L'appareil de l'utilisateur a les données mobiles activées

Guide d'Intégration

Configuration des Autorisations

Le package aar demande les autorisations suivantes :

<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" />

            
Afficher ce bloc de code dans la fenêtre flottante

Configuration de l'Opérateur

Comme l'interface de l'opérateur nécessite une transmission HTTP en clair, vous devez configurer la politique de sécurité réseau dans le AndroidManifest.xml de votre application :

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

            
Afficher ce bloc de code dans la fenêtre flottante

Vous devez également copier le fichier mtverify_network_security_config.xml dans le répertoire res/xml/ de votre application. Vous trouverez ce fichier dans le package d'installation que vous avez téléchargé.

Liste des Méthodes

init

Initialise le SDK MTVerify et définit la clé d'application et la configuration de l'environnement.

Signature de la Méthode

@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
)

            
Afficher ce bloc de code dans la fenêtre flottante

Paramètres

Paramètre Type Obligatoire Description
context Context Oui Objet de contexte Android
appkey String Oui Clé d'application, utilisée pour identifier l'application
environment IPEnvironment Non Type d'environnement, par défaut SANDBOX. Options : - IPEnvironment.SANDBOX : environnement de test/sandbox - IPEnvironment.PRODUCTION : environnement de production
callback InitCallback? Non Interface de rappel d'initialisation, utilisée pour recevoir le résultat de l'initialisation

Valeur de Retour

Aucune

Résultat du Rappel

Le résultat de l'initialisation est renvoyé via InitCallback.onComplete(result: InitResult) :

data class InitResult( val code: Int, // Code de statut ; 0 signifie succès, les autres nombres signifient échec val message: String? // Message (message de succès ou d'erreur) )
              
              data class InitResult(
    val code: Int,        // Code de statut ; 0 signifie succès, les autres nombres signifient échec
    val message: String?  // Message (message de succès ou d'erreur)
)

            
Afficher ce bloc de code dans la fenêtre flottante

Exemple d'Utilisation

MTVerifyApi.init( context = this, appkey = "your_app_key", environment = IPEnvironment.PRODUCTION, callback = object : InitCallback { override fun onComplete(result: InitResult) { if (result.code == 0) { // Initialisation réussie Log.d("MTVerify", "Initialisation réussie : ${result.message}") } else { // Échec de l'initialisation Log.e("MTVerify", "Échec de l'initialisation : ${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) {
                // Initialisation réussie
                Log.d("MTVerify", "Initialisation réussie : ${result.message}")
            } else {
                // Échec de l'initialisation
                Log.e("MTVerify", "Échec de l'initialisation : ${result.message}")
            }
        }
    }
)

            
Afficher ce bloc de code dans la fenêtre flottante

Remarques

  • Vous devez d'abord appeler la méthode init() pour initialiser le SDK avant d'utiliser d'autres fonctionnalités
  • Le processus d'initialisation récupère clientId et redirectUrl via une requête HTTP et nécessite une connexion réseau

setLogEnable

Définit l'interrupteur des journaux pour contrôler la sortie des journaux du SDK.

Signature de la Méthode

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

            
Afficher ce bloc de code dans la fenêtre flottante

Paramètres

Paramètre Type Obligatoire Description
enable Boolean Oui true active la journalisation, false désactive toute sortie de journaux

Exemple d'Utilisation

// Activer la journalisation MTVerifyApi.setLogEnable(true) // Désactiver la journalisation MTVerifyApi.setLogEnable(false)
              
              // Activer la journalisation
MTVerifyApi.setLogEnable(true)

// Désactiver la journalisation
MTVerifyApi.setLogEnable(false)

            
Afficher ce bloc de code dans la fenêtre flottante

checkCoverage

Vérifie si le numéro de mobile spécifié prend en charge le service de vérification IPification.

Signature de la Méthode

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

            
Afficher ce bloc de code dans la fenêtre flottante

Paramètres

Paramètre Type Obligatoire Description
context Context Oui Objet de contexte Android
phoneNumber String Oui Indicatif du pays + numéro de mobile de l'utilisateur
callback CoverageCallback? Non Interface de rappel de la vérification de couverture

Valeur de Retour

Aucune

Résultat du Rappel

Le résultat de la vérification est renvoyé via CoverageCallback.onComplete(result: CoverageResult) :

data class CoverageResult( val code: Int, // Code de statut ; 0 signifie succès, les autres nombres signifient échec val isAvailable: Boolean, // Si disponible (opérateur pris en charge) val operatorCode: String?, // Code de l'opérateur val message: String? // Message (message de succès ou d'erreur) )
              
              data class CoverageResult(
    val code: Int,           // Code de statut ; 0 signifie succès, les autres nombres signifient échec
    val isAvailable: Boolean, // Si disponible (opérateur pris en charge)
    val operatorCode: String?, // Code de l'opérateur
    val message: String?      // Message (message de succès ou d'erreur)
)

            
Afficher ce bloc de code dans la fenêtre flottante

Exemple d'Utilisation

MTVerifyApi.checkCoverage( context = this, phoneNumber = "6281234567890", callback = object : CoverageCallback { override fun onComplete(result: CoverageResult) { if (result.code == 0) { if (result.isAvailable) { // Le service est pris en charge Log.d("MTVerify", "Opérateur pris en charge : ${result.operatorCode}") } else { // Le service n'est pas pris en charge Log.d("MTVerify", "Opérateur non pris en charge") } } else { // Échec de la vérification Log.e("MTVerify", "Échec de la vérification : ${result.message}") } } } )
              
              MTVerifyApi.checkCoverage(
    context = this,
    phoneNumber = "6281234567890",
    callback = object : CoverageCallback {
        override fun onComplete(result: CoverageResult) {
            if (result.code == 0) {
                if (result.isAvailable) {
                    // Le service est pris en charge
                    Log.d("MTVerify", "Opérateur pris en charge : ${result.operatorCode}")
                } else {
                    // Le service n'est pas pris en charge
                    Log.d("MTVerify", "Opérateur non pris en charge")
                }
            } else {
                // Échec de la vérification
                Log.e("MTVerify", "Échec de la vérification : ${result.message}")
            }
        }
    }
)

            
Afficher ce bloc de code dans la fenêtre flottante

startAuthentication

Démarre le flux d'authentification du numéro de mobile.

Signature de la Méthode

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

            
Afficher ce bloc de code dans la fenêtre flottante

Paramètres

Paramètre Type Obligatoire Description
activity Activity Oui Objet Activity Android, utilisé pour afficher l'interface d'authentification
countryCode String Oui Indicatif du pays
phoneNumber String Oui Numéro de mobile de l'utilisateur (sans indicatif du pays)
callback AuthenticationCallback? Non Interface de rappel d'authentification

Valeur de Retour

Aucune

Résultat du Rappel

Le résultat de l'authentification est renvoyé via AuthenticationCallback.onComplete(result: AuthenticationResult) :

data class AuthenticationResult( val code: Int, // Code de statut ; 0 signifie succès, -1 signifie échec, -2 signifie annulé par l'utilisateur val token: String?, // Données d'authentification chiffrées (une chaîne JSON contenant le code, chiffrée en AES) val message: String? // Message (message de succès ou d'erreur) )
              
              data class AuthenticationResult(
    val code: Int,        // Code de statut ; 0 signifie succès, -1 signifie échec, -2 signifie annulé par l'utilisateur
    val token: String?,   // Données d'authentification chiffrées (une chaîne JSON contenant le code, chiffrée en AES)
    val message: String?  // Message (message de succès ou d'erreur)
)

            
Afficher ce bloc de code dans la fenêtre flottante

Remarque : token est une chaîne JSON chiffrée au format suivant :

{ "version": "1", "content": { "code": "code d'authentification", "state": "paramètre d'état", "appkey": "clé d'application" } }
              
              {
  "version": "1",
  "content": {
    "code": "code d'authentification",
    "state": "paramètre d'état",
    "appkey": "clé d'application"
  }
}

            
Afficher ce bloc de code dans la fenêtre flottante

Exemple d'Utilisation

MTVerifyApi.startAuthentication( activity = this, countryCode = "62", phoneNumber = "81234567890", callback = object : AuthenticationCallback { override fun onComplete(result: AuthenticationResult) { when (result.code) { 0 -> { // Authentification réussie val token = result.token // Le jeton est utilisé pour échanger le résultat Log.d("MTVerify", "Authentification réussie : $token") } -1 -> { // Échec de l'authentification Log.e("MTVerify", "Échec de l'authentification : ${result.message}") } -2 -> { // Annulé par l'utilisateur Log.d("MTVerify", "L'utilisateur a annulé l'authentification") } } } } )
              
              MTVerifyApi.startAuthentication(
    activity = this,
    countryCode = "62",
    phoneNumber = "81234567890",
    callback = object : AuthenticationCallback {
        override fun onComplete(result: AuthenticationResult) {
            when (result.code) {
                0 -> {
                    // Authentification réussie
                    val token = result.token
                    // Le jeton est utilisé pour échanger le résultat
                    Log.d("MTVerify", "Authentification réussie : $token")
                }
                -1 -> {
                    // Échec de l'authentification
                    Log.e("MTVerify", "Échec de l'authentification : ${result.message}")
                }
                -2 -> {
                    // Annulé par l'utilisateur
                    Log.d("MTVerify", "L'utilisateur a annulé l'authentification")
                }
            }
        }
    }
)

            
Afficher ce bloc de code dans la fenêtre flottante

Modèles de Données

IPEnvironment

Énumération du type d'environnement :

enum class IPEnvironment { SANDBOX, // Environnement de test/sandbox PRODUCTION // Environnement de production }
              
              enum class IPEnvironment {
    SANDBOX,      // Environnement de test/sandbox
    PRODUCTION    // Environnement de production
}

            
Afficher ce bloc de code dans la fenêtre flottante

InitResult

Résultat de l'initialisation :

data class InitResult( val code: Int, // Code de statut ; 0 signifie succès val message: String? // Message )
              
              data class InitResult(
    val code: Int,        // Code de statut ; 0 signifie succès
    val message: String?  // Message
)

            
Afficher ce bloc de code dans la fenêtre flottante

CoverageResult

Résultat de la vérification de couverture :

data class CoverageResult( val code: Int, // Code de statut ; 0 signifie succès val isAvailable: Boolean, // Si disponible val operatorCode: String?, // Code de l'opérateur val message: String? // Message )
              
              data class CoverageResult(
    val code: Int,           // Code de statut ; 0 signifie succès
    val isAvailable: Boolean, // Si disponible
    val operatorCode: String?, // Code de l'opérateur
    val message: String?      // Message
)

            
Afficher ce bloc de code dans la fenêtre flottante

AuthenticationResult

Résultat de l'authentification :

data class AuthenticationResult( val code: Int, // Code de statut ; 0 signifie succès, -1 signifie échec, -2 signifie annulé par l'utilisateur val token: String?, // Jeton d'authentification chiffré val message: String? // Message )
              
              data class AuthenticationResult(
    val code: Int,        // Code de statut ; 0 signifie succès, -1 signifie échec, -2 signifie annulé par l'utilisateur
    val token: String?,   // Jeton d'authentification chiffré
    val message: String?  // Message
)

            
Afficher ce bloc de code dans la fenêtre flottante

Interfaces de Rappel

InitCallback

Interface de rappel d'initialisation :

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

            
Afficher ce bloc de code dans la fenêtre flottante

CoverageCallback

Interface de rappel de la vérification de couverture :

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

            
Afficher ce bloc de code dans la fenêtre flottante

AuthenticationCallback

Interface de rappel d'authentification :

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

            
Afficher ce bloc de code dans la fenêtre flottante

Exemple Complet

class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 1. Activer la journalisation (facultatif) MTVerifyApi.setLogEnable(true) // 2. Initialiser le SDK MTVerifyApi.init( context = this, appkey = "your_app_key", environment = IPEnvironment.SANDBOX, callback = object : InitCallback { override fun onComplete(result: InitResult) { if (result.code == 0) { // Initialisation réussie ; vous pouvez commencer à utiliser d'autres fonctionnalités checkCoverage() } } } ) } private fun checkCoverage() { // 3. Vérifier la couverture MTVerifyApi.checkCoverage( context = this, phoneNumber = "6281234567890", callback = object : CoverageCallback { override fun onComplete(result: CoverageResult) { if (result.isAvailable) { // 4. Si pris en charge, effectuer l'authentification startAuthentication() } } } ) } private fun startAuthentication() { // 5. Effectuer l'authentification MTVerifyApi.startAuthentication( activity = this, countryCode = "62", phoneNumber = "81234567890", callback = object : AuthenticationCallback { override fun onComplete(result: AuthenticationResult) { if (result.code == 0) { // Authentification réussie ; traiter le jeton handleToken(result.token) } } } ) } private fun handleToken(token: String?) { // Appeler l'API pour traiter le jeton échangé } }
              
              class MainActivity : AppCompatActivity() {
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        // 1. Activer la journalisation (facultatif)
        MTVerifyApi.setLogEnable(true)
        
        // 2. Initialiser le SDK
        MTVerifyApi.init(
            context = this,
            appkey = "your_app_key",
            environment = IPEnvironment.SANDBOX,
            callback = object : InitCallback {
                override fun onComplete(result: InitResult) {
                    if (result.code == 0) {
                        // Initialisation réussie ; vous pouvez commencer à utiliser d'autres fonctionnalités
                        checkCoverage()
                    }
                }
            }
        )
    }
    
    private fun checkCoverage() {
        // 3. Vérifier la couverture
        MTVerifyApi.checkCoverage(
            context = this,
            phoneNumber = "6281234567890",
            callback = object : CoverageCallback {
                override fun onComplete(result: CoverageResult) {
                    if (result.isAvailable) {
                        // 4. Si pris en charge, effectuer l'authentification
                        startAuthentication()
                    }
                }
            }
        )
    }
    
    private fun startAuthentication() {
        // 5. Effectuer l'authentification
        MTVerifyApi.startAuthentication(
            activity = this,
            countryCode = "62",
            phoneNumber = "81234567890",
            callback = object : AuthenticationCallback {
                override fun onComplete(result: AuthenticationResult) {
                    if (result.code == 0) {
                        // Authentification réussie ; traiter le jeton
                        handleToken(result.token)
                    }
                }
            }
        )
    }
    
    private fun handleToken(token: String?) {
        // Appeler l'API pour traiter le jeton échangé
        
    }
}

            
Afficher ce bloc de code dans la fenêtre flottante

Remarques

  1. Ordre d'initialisation : Vous devez d'abord appeler la méthode init() pour initialiser le SDK avant d'utiliser d'autres fonctionnalités.
  2. Sécurité des threads : Toutes les méthodes de l'API peuvent être appelées sur le thread principal, et les rappels sont également exécutés sur le thread principal.
  3. Exigences d'autorisation : Assurez-vous que l'application a demandé les autorisations réseau nécessaires.
  4. Déchiffrement du jeton : Le jeton renvoyé après une authentification réussie est chiffré et doit être traité avec la méthode de déchiffrement correspondante.
  5. Contrôle des journaux : Il est recommandé de désactiver la sortie des journaux dans l'environnement de production afin d'améliorer les performances et la sécurité.

Informations sur la Version

  • Version du SDK : 1.0.1
Icon Solid Transparent White Qiyu
Contactez-nous