logoDocumentation
Rechercher

Guide d'intégration CAPTCHA Android

Présentation du produit

Élément Description
Fonctionnalités principales CAPTCHA de nouvelle génération, répond intelligemment aux pertes commerciales et aux risques de sécurité causés par les attaques automatisées de scripts.
Politique de confidentialité du SDK Politique
Guide de conformité du SDK Guide
Lien de téléchargement du SDK Télécharger

Prérequis système

Élément Ressource
Cible de développement Android 5.0+ (minSdk 21)
Environnement de développement Android Studio 2020.3.1 Arctic Fox+
Outil de build Gradle (Android Gradle Plugin 7+)
Dépendances système Aucune
Dépendances tierces du SDK Aucune
Taille du package SDK vérifié : 60K

Intégration du SDK

Importation du SDK

Glissez le fichier .aar (incluant engagelab_captcha_android_vx.y.z.aar) depuis le package zip dans le dossier libs de votre projet. Après avoir déplacé le fichier .aar dans le dossier libs, assurez-vous qu'il est ajouté à la bibliothèque. Ajoutez le code suivant dans le fichier build.gradle du projet :

repositories { flatDir { dirs 'libs' } }
              
              repositories {
    flatDir {
        dirs 'libs'
    }
}

            
Afficher ce bloc de code dans la fenêtre flottante

Ajoutez également manuellement le package aar comme dépendance (aar n'inclut pas automatiquement les dépendances tierces, vous devez donc les ajouter manuellement) :

implementation(name: 'engagelab_captcha_android_vx.y.z', ext: 'aar')
              
              implementation(name: 'engagelab_captcha_android_vx.y.z', ext: 'aar')

            
Afficher ce bloc de code dans la fenêtre flottante

Configuration pour les projets non-Kotlin

Dans la configuration build.gradle du répertoire racine :

ext.kotlin_version = "1.6.22" dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" }
              
              ext.kotlin_version = "1.6.22"

dependencies {
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}

            
Afficher ce bloc de code dans la fenêtre flottante

Dans la configuration build.gradle du module :

apply plugin: 'kotlin-android' dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" }
              
              apply plugin: 'kotlin-android'
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}

            
Afficher ce bloc de code dans la fenêtre flottante

En cas de conflit avec la version de kotlin, excluez la dépendance kotlin : exclude(group: 'org.jetbrains.kotlin')

Ajout des permissions

<!-- Obligatoire - Application par défaut --> <uses-permission android:name="android.permission.INTERNET" /> <!-- Doit être déclaré pour la compatibilité avec les API inférieures à 23 (non incluses) (c'est-à-dire que les applications fonctionnant sur Android 4.x et 5.x doivent le déclarer) - Non appliqué par défaut --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
              
              <!-- Obligatoire - Application par défaut -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Doit être déclaré pour la compatibilité avec les API inférieures à 23 (non incluses) (c'est-à-dire que les applications fonctionnant sur Android 4.x et 5.x doivent le déclarer) - Non appliqué par défaut -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

            
Afficher ce bloc de code dans la fenêtre flottante

Règles Proguard

Le package aar du SDK a déjà été obfusqué. Une double obfuscation peut entraîner des erreurs inattendues. Par défaut, le package aar inclut la configuration d'obfuscation du SDK actuel. Les dépendances distantes et les dépendances locales aar garantissent que le SDK n'est pas obfusqué à nouveau. Si vous devez extraire le package aar et intégrer séparément les fichiers jar et ressources, assurez-vous de copier le contenu du fichier proguard.txt du répertoire extrait dans la configuration d'obfuscation de votre application pour éviter une double obfuscation du SDK.

Si vous utilisez andRes pour l'obfuscation des ressources, excluez les ressources incluses dans le SDK de l'obfuscation pour éviter les erreurs dues à des ressources manquantes. La configuration d'exclusion est la suivante :

"R.string.gt4_*", "R.style.gt4_*",
              
              "R.string.gt4_*",
"R.style.gt4_*",

            
Afficher ce bloc de code dans la fenêtre flottante

Configuration de l'interface

Logique d'appel

  1. Configurer l'initialisation
  2. Démarrer la vérification
  3. Obtenir le callback de vérification
  4. Détruire les ressources

Consultez le Processus de structure produit pour la vérification comportementale. Vous devez d'abord configurer l'interface côté serveur correspondante sur votre backend et configurer le captchaId et la Key obtenus depuis la Console d'administration EngageLab.

Initialisation

Les informations de configuration de l'initialisation du SDK peuvent être placées dans la méthode onCreate ou onCreateView pour l'initialisation.

Description des méthodes

public static GTCaptcha4Client getClient(Context context); public GTCaptcha4Client init(String captchaId); public GTCaptcha4Client init(String captchaId, GTCaptcha4Config config)
              
              public static GTCaptcha4Client getClient(Context context);
public GTCaptcha4Client init(String captchaId);
public GTCaptcha4Client init(String captchaId, GTCaptcha4Config config)

            
Afficher ce bloc de code dans la fenêtre flottante

Description des paramètres

Paramètre Type Description
context Context Objet Context, doit être une instance d'Activity
appId String APP_ID, paramètre obligatoire
config GTCaptcha4Config Objet de configuration, optionnel

La méthode init() lance le préchargement. Si l'initialisation est effectuée dans la méthode onCreate ou onCreateView, le processus de vérification sera préchargé, permettant une vérification plus rapide. Si init() est appelé au moment de la vérification, la vitesse de chargement sera plus lente que le préchargement. Il est recommandé d'initialiser dans la méthode onCreate ou onCreateView.

Démarrer la vérification

Démarrer le processus de vérification.

Description de la méthode

public void verifyWithCaptcha();
              
              public void verifyWithCaptcha();

            
Afficher ce bloc de code dans la fenêtre flottante

Annuler la vérification

Annuler le processus de vérification et fermer la fenêtre de vérification.

Description de la méthode

public void cancel();
              
              public void cancel();

            
Afficher ce bloc de code dans la fenêtre flottante

Activer/désactiver la surveillance des logs

Définir l'activation ou la désactivation de la surveillance des logs.

Description de la méthode

public void setLogEnable(boolean enable);
              
              public void setLogEnable(boolean enable);

            
Afficher ce bloc de code dans la fenêtre flottante

Obtenir le callback de vérification

public GTCaptcha4Client addOnSuccessListener(OnSuccessListener listener); public GTCaptcha4Client addOnFailureListener(OnFailureListener listener); public GTCaptcha4Client addOnWebViewShowListener(OnWebViewShowListener listener);
              
              public GTCaptcha4Client addOnSuccessListener(OnSuccessListener listener);
public GTCaptcha4Client addOnFailureListener(OnFailureListener listener);
public GTCaptcha4Client addOnWebViewShowListener(OnWebViewShowListener listener);

            
Afficher ce bloc de code dans la fenêtre flottante

Exemple de code

gtCaptcha4Client.addOnSuccessListener(new GTCaptcha4Client.OnSuccessListener() { @Override public void onSuccess(boolean status, String response) { if(status){ // TODO Activer la vérification secondaire }else { // TODO Échec de la vérification de la réponse utilisateur } } }).addOnFailureListener(new GTCaptcha4Client.OnFailureListener() { @Override public void onFailure(String error) { } }).addOnWebViewShowListener(new GTCaptcha4Client.OnWebViewShowListener() { @Override public void onWebViewShow() { } })
              
              gtCaptcha4Client.addOnSuccessListener(new GTCaptcha4Client.OnSuccessListener() {
    @Override
    public void onSuccess(boolean status, String response) {
        if(status){
            // TODO Activer la vérification secondaire
        }else {
            // TODO Échec de la vérification de la réponse utilisateur
        }
    }
}).addOnFailureListener(new GTCaptcha4Client.OnFailureListener() {
    @Override
    public void onFailure(String error) {
    }
}).addOnWebViewShowListener(new GTCaptcha4Client.OnWebViewShowListener() {
      @Override
      public void onWebViewShow() {
      }
  })

            
Afficher ce bloc de code dans la fenêtre flottante

Détruire les ressources

Détruire les ressources dans le cycle de vie onDestroy

public void onDestroy(){ super.onDestroy(); if(gtCaptcha4Client != null){ gtCaptcha4Client.destroy(); } }
              
              public void onDestroy(){
    super.onDestroy();
    if(gtCaptcha4Client != null){
        gtCaptcha4Client.destroy();
    }
}

            
Afficher ce bloc de code dans la fenêtre flottante

Changement d'orientation d'écran

@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if(gtCaptcha4Client != null){ gtCaptcha4Client.configurationChanged(newConfig); } }
              
              @Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if(gtCaptcha4Client != null){
        gtCaptcha4Client.configurationChanged(newConfig);
    }
}

            
Afficher ce bloc de code dans la fenêtre flottante

Exemple de code de préchargement

@Override public void onViewCreated(View view, Bundle savedInstanceState){ super.onViewCreated(view, savedInstanceState); String[] apiServers = {"captcha-api.engagelab.com"}; String[] staticServers = {"captcha-stat.engagelab.com/www/js"}; GTCaptcha4Config config = new GTCaptcha4Config.Builder() // Définir l'adresse du service .setResourcePath("https://captcha-stat.engagelab.com/www/gt4-index.html") .setApiServers(apiServers) .setStaticServers(staticServers) .setDebug(true) // TODO Désactiver en production .setLanguage("zh") .setTimeOut(10000) .setCanceledOnTouchOutside(true) .build(); gtCaptcha4Client = GTCaptcha4Client.getClient(activity) .init("your captcha_id", config); } private void click(){ gtCaptcha4Client.addOnSuccessListener(new GTCaptcha4Client.OnSuccessListener { @Override public void onSuccess(boolean status, String response) { if(status){ // TODO Activer la vérification secondaire }else { // TODO Échec de la vérification de la réponse utilisateur } } }) .addOnFailureListener(new GTCaptcha4Client.OnFailureListener { @Override public void onFailure(String error) { } }) .verifyWithCaptcha(); }
              
              @Override
public void onViewCreated(View view, Bundle savedInstanceState){
    super.onViewCreated(view, savedInstanceState);
    String[] apiServers = {"captcha-api.engagelab.com"};
    String[] staticServers = {"captcha-stat.engagelab.com/www/js"};
    GTCaptcha4Config config = new GTCaptcha4Config.Builder()
            // Définir l'adresse du service
            .setResourcePath("https://captcha-stat.engagelab.com/www/gt4-index.html")
            .setApiServers(apiServers)
            .setStaticServers(staticServers)
            .setDebug(true) // TODO Désactiver en production
            .setLanguage("zh")
            .setTimeOut(10000)
            .setCanceledOnTouchOutside(true)
            .build();
    gtCaptcha4Client = GTCaptcha4Client.getClient(activity)
            .init("your captcha_id", config);
}

private void click(){
    gtCaptcha4Client.addOnSuccessListener(new GTCaptcha4Client.OnSuccessListener {
                @Override
                public void onSuccess(boolean status, String response) {
                    if(status){
                        // TODO Activer la vérification secondaire
                    }else {
                        // TODO Échec de la vérification de la réponse utilisateur
                    }
                }
            })
            .addOnFailureListener(new GTCaptcha4Client.OnFailureListener {
                @Override
                public void onFailure(String error) {
                }
            })
            .verifyWithCaptcha();
}

            
Afficher ce bloc de code dans la fenêtre flottante

Exemple de code de chargement normal

private void click(){ String[] apiServers = {"captcha-api.engagelab.com"}; String[] staticServers = {"captcha-stat.engagelab.com/www/js"}; GTCaptcha4Config config = new GTCaptcha4Config.Builder() // Définir l'adresse du service .setResourcePath("https://captcha-stat.engagelab.com/www/gt4-index.html") .setApiServers(apiServers) .setStaticServers(staticServers) .setDebug(true) // TODO Désactiver en production .setLanguage("zh") .setTimeOut(10000) .setCanceledOnTouchOutside(true) .build(); gtCaptcha4Client = GTCaptcha4Client.getClient(activity) .init("your captcha_id", config) .addOnSuccessListener(new GTCaptcha4Client.OnSuccessListener { @Override public void onSuccess(boolean status, String response) { if(status){ // TODO Activer la vérification secondaire }else { // TODO Échec de la vérification de la réponse utilisateur } } }) .addOnFailureListener(new GTCaptcha4Client.OnFailureListener { @Override public void onFailure(String error) { } }) .verifyWithCaptcha(); }
              
              private void click(){
    String[] apiServers = {"captcha-api.engagelab.com"};
    String[] staticServers = {"captcha-stat.engagelab.com/www/js"};
    GTCaptcha4Config config = new GTCaptcha4Config.Builder()
            // Définir l'adresse du service
            .setResourcePath("https://captcha-stat.engagelab.com/www/gt4-index.html")
            .setApiServers(apiServers)
            .setStaticServers(staticServers)
            .setDebug(true) // TODO Désactiver en production
            .setLanguage("zh")
            .setTimeOut(10000)
            .setCanceledOnTouchOutside(true)
            .build();
    gtCaptcha4Client = GTCaptcha4Client.getClient(activity)
            .init("your captcha_id", config)
            .addOnSuccessListener(new GTCaptcha4Client.OnSuccessListener {
                @Override
                public void onSuccess(boolean status, String response) {
                    if(status){
                        // TODO Activer la vérification secondaire
                    }else {
                        // TODO Échec de la vérification de la réponse utilisateur
                    }
                }
            })
            .addOnFailureListener(new GTCaptcha4Client.OnFailureListener {
                @Override
                public void onFailure(String error) {
                }
            })
            .verifyWithCaptcha();
}

            
Afficher ce bloc de code dans la fenêtre flottante

Pour des exemples de code détaillés, consultez le Demo officiel

Configuration des paramètres

Configurez les paramètres via la classe GTCaptcha4Config.Builder

Définition Description
setResourcePath Doit être défini sur : https://captcha-stat.engagelab.com/www/gt4-index.html
setApiServers Doit être défini sur : captcha-api.engagelab.com
setStaticServers Doit être défini sur : captcha-stat.engagelab.com/www/js
setParams Paramètres supplémentaires transmis au frontend js pour utilisation
setDebug Activer ou non le mode debug, par défaut false, à définir sur false en production
setLanguage Spécifier la langue, par défaut la langue de l'application
setCanceledOnTouchOutside Fermer lors d'un clic en dehors, par défaut true
setTimeOut Définir le délai d'expiration en ms, par défaut 10000
setBackgroundColor Définir la couleur de fond, par défaut transparent
setDialogStyle Définir le style du thème du dialogue, par défaut gt4_captcha_dialog_style
setDialogShowListener Définir le callback lors de l'affichage de la fenêtre de vérification
build Construire l'objet GTCaptcha4Config

Les paramètres peuvent être configurés via l'interface setParams selon la documentation de l'API.

L'interface setParams n'accepte que les types de données de base, les chaînes de caractères et les données de type JSONArray.

Gestion des erreurs

Des erreurs inattendues peuvent survenir lors de la vérification. Vous pouvez les gérer en implémentant l'interface addOnFailureListener et en les traitant dans la méthode de callback suivante :

Remarque : Les callbacks d'erreur incluent les annulations de vérification initiées par l'utilisateur, qui peuvent être filtrées séparément.

gtCaptcha4Client.addOnFailureListener(new GTCaptcha4Client.OnFailureListener() { @Override public void onFailure(String error){ // Exemple de contenu d'erreur retourné // {"code":"-14460","msg":"Vérification annulée","desc":{"description":"L'utilisateur a annulé 'Captcha'"}} // Vous pouvez analyser l'erreur en JSON, remplacer la description de l'erreur et conserver le code d'erreur Toast.makeText(context, "Erreur de vérification : $error", Toast.LENGTH_SHORT).show(); } });
              
              gtCaptcha4Client.addOnFailureListener(new GTCaptcha4Client.OnFailureListener() {
    @Override
    public void onFailure(String error){
        // Exemple de contenu d'erreur retourné
        // {"code":"-14460","msg":"Vérification annulée","desc":{"description":"L'utilisateur a annulé 'Captcha'"}}
        // Vous pouvez analyser l'erreur en JSON, remplacer la description de l'erreur et conserver le code d'erreur
        Toast.makeText(context, "Erreur de vérification : $error", Toast.LENGTH_SHORT).show();
    }
});

            
Afficher ce bloc de code dans la fenêtre flottante

Il est fortement recommandé d'afficher le code d'erreur ainsi que la raison de l'erreur à l'utilisateur pour faciliter la résolution des problèmes en ligne.

Consultez la liste suivante pour les codes d'erreur possibles : Liste des codes d'erreur

icon
Contactez-nous