Guide d'intégration de la fonction MA Android

Astuces d'utilisation

Pour utiliser la fonction MA du SDK EngageLab, vous devez intégrer en même temps le module AppPush. Commencez par créer une application sur la plateforme AppPush afin d'obtenir l'AppKey.

1. Importation des packages dans libs

  • Méthode manuelle
Importez mt-sdk-x.x.x-engagelab.aar du package libs dans le répertoire libs Importez mt-sdk-ma-x.x.x.aar du package libs dans le répertoire libs
              
                  Importez mt-sdk-x.x.x-engagelab.aar du package libs dans le répertoire libs
    Importez mt-sdk-ma-x.x.x.aar du package libs dans le répertoire libs

            
Afficher ce bloc de code dans la fenêtre flottante
  • Méthode automatique
dependencies { // Nécessaire, package principal implementation 'com.engagelab:engagelab:5.0.0' // Ici, la version 5.0.0 est prise à titre d'exemple. // Optionnel, fonction MA implementation 'com.engagelab.plugin:oth_ma:5.0.0' // Ici, la version 5.0.0 est prise à titre d'exemple. }
              
              dependencies {
  // Nécessaire, package principal
  implementation 'com.engagelab:engagelab:5.0.0' // Ici, la version 5.0.0 est prise à titre d'exemple.
  // Optionnel, fonction MA
  implementation 'com.engagelab.plugin:oth_ma:5.0.0' // Ici, la version 5.0.0 est prise à titre d'exemple.
}

            
Afficher ce bloc de code dans la fenêtre flottante

2. Configuration de build.gradle

plugins { id 'com.android.application' } android { ... defaultConfig { // packageName de l'application, doit être identique à celui du console applicationId "com.engagelab.app" ... manifestPlaceholders = [ // appKey, doit être identique à celui du console et a une relation un-à-un avec le packageName ENGAGELAB_PRIVATES_APPKEY : "Votre appkey", // appChannel Engagelab, utilisé pour les statistiques de canal ENGAGELAB_PRIVATES_CHANNEL: "developer", // process Engagelab, le processus où fonctionne l'Engagelab SDK. Remarque : le début ENGAGELAB_PRIVATES_PROCESS: ":remote" ] } } dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') }
              
              plugins {
    id 'com.android.application'
}

android {
    ...

    defaultConfig {
        // packageName de l'application, doit être identique à celui du console
        applicationId "com.engagelab.app"
        ...
                
        manifestPlaceholders = [
                // appKey, doit être identique à celui du console et a une relation un-à-un avec le packageName
                ENGAGELAB_PRIVATES_APPKEY : "Votre appkey",
                // appChannel Engagelab, utilisé pour les statistiques de canal
                ENGAGELAB_PRIVATES_CHANNEL: "developer",
                // process Engagelab, le processus où fonctionne l'Engagelab SDK. Remarque : le début
                ENGAGELAB_PRIVATES_PROCESS: ":remote"
        ]
    }
}

dependencies {
    implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
}

            
Afficher ce bloc de code dans la fenêtre flottante

3. Création des composants nécessaires

package com.engagelab.app.component; import com.engagelab.privates.common.component.MTCommonService; /** * Les développeurs héritent de MTCommonService, ce qui permet de maintenir la connexion longue plus longtemps * <p> * Une implémentation vide suffit. */ public class UserService extends MTCommonService { }
              
              package com.engagelab.app.component;

import com.engagelab.privates.common.component.MTCommonService;

/**
 * Les développeurs héritent de MTCommonService, ce qui permet de maintenir la connexion longue plus longtemps
 * <p>
 * Une implémentation vide suffit.
 */
public class UserService extends MTCommonService {


}

            
Afficher ce bloc de code dans la fenêtre flottante
package com.engagelab.app.component; import android.content.Context; import android.widget.Toast; import java.util.Arrays; import com.engagelab.app.common.ExampleGlobal; import com.engagelab.app.listener.StatusObserver; import com.engagelab.app.log.ExampleLogger; import com.engagelab.privates.common.component.MTCommonReceiver; import com.engagelab.privates.core.api.MTCorePrivatesApi; import com.engagelab.privates.core.api.WakeMessage; import com.engagelab.privates.push.api.CustomMessage; import com.engagelab.privates.push.api.MobileNumberMessage; import com.engagelab.privates.push.api.NotificationMessage; import com.engagelab.privates.push.api.PlatformTokenMessage; /** * Les développeurs héritent de MTCommonReceiver et peuvent obtenir les callbacks des méthodes du SDK * <p> * Tous les callbacks sont dans le thread principal. */ public class UserReceiver extends MTCommonReceiver { private static final String TAG = "UserReceiver"; /** * Callback de statut de connexion longue * * @param context Non nul * @param enable Indique si la connexion est établie */ @Override public void onConnectStatus(Context context, boolean enable) { ExampleLogger.i(TAG, "onConnectState:" + enable); if (enable) { // Dès qu'une connexion longue est réussie une fois, elle peut être appelée partout par la suite MTMAApi.getInstance(this).start(new CallBack() { @Override public void onCallBack(int code, String msg) { Log.e(TAG, "start code:" + code); Log.e(TAG, "startmsg:" + msg); } }); } } }
              
              package com.engagelab.app.component;

import android.content.Context;
import android.widget.Toast;

import java.util.Arrays;

import com.engagelab.app.common.ExampleGlobal;
import com.engagelab.app.listener.StatusObserver;
import com.engagelab.app.log.ExampleLogger;
import com.engagelab.privates.common.component.MTCommonReceiver;
import com.engagelab.privates.core.api.MTCorePrivatesApi;
import com.engagelab.privates.core.api.WakeMessage;
import com.engagelab.privates.push.api.CustomMessage;
import com.engagelab.privates.push.api.MobileNumberMessage;
import com.engagelab.privates.push.api.NotificationMessage;
import com.engagelab.privates.push.api.PlatformTokenMessage;

/**
 * Les développeurs héritent de MTCommonReceiver et peuvent obtenir les callbacks des méthodes du SDK
 * <p>
 * Tous les callbacks sont dans le thread principal.
 */
public class UserReceiver extends MTCommonReceiver {

    private static final String TAG = "UserReceiver";

    /**
     * Callback de statut de connexion longue
     *
     * @param context Non nul
     * @param enable  Indique si la connexion est établie
     */
    @Override
    public void onConnectStatus(Context context, boolean enable) {
        ExampleLogger.i(TAG, "onConnectState:" + enable);

        if (enable) { // Dès qu'une connexion longue est réussie une fois, elle peut être appelée partout par la suite
            MTMAApi.getInstance(this).start(new CallBack() {
                    @Override
                    public void onCallBack(int code, String msg) {
                        Log.e(TAG, "start code:" + code);
                        Log.e(TAG, "startmsg:" + msg);

                    }
                });
        }


    }

}

            
Afficher ce bloc de code dans la fenêtre flottante

4. Configuration du AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.engagelab.app"> <!-- Nécessaire, permission réseau --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Optionnel, vibration de notification --> <uses-permission android:name="android.permission.VIBRATE" /> <application android:name="com.engagelab.app.MainApplication" android:allowBackup="false" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Theme.MT" android:usesCleartextTraffic="true" tools:targetApi="m"> <!-- Si vous utilisez des requêtes http, alors l'utilisation de http doit être autorisée --> ..................................................................................................... <!-- Comme cette classe possède la fonction de connexion longue, le service dont le nom de package contient Engagelab peut être directement tué lors de l'optimisation d'économie d'énergie par le fabricant du téléphone --> <!-- Par conséquent, les développeurs doivent hériter de com.engagelab.app.component.MTCommonService pour améliorer le taux de survie de la connexion longue, afin d'augmenter le taux de réception des messages --> <service android:name="com.engagelab.app.component.UserService" android:exported="false" android:process="${ENGAGELAB_PRIVATES_PROCESS}"> <intent-filter> <action android:name="com.engagelab.privates.intent.USER_SERVICE" /> </intent-filter> </service> <!-- Utilisé pour recevoir les callbacks des services Engagelab, y compris le statut de connexion longue/changement de statut de notification/réception de notification/clic sur notification/suppression de notification/message personnalisé/callback de token fournisseur --> <!-- Il n'est pas nécessaire de configurer un sous-processus. Ce callback est dans le processus principal, ce qui est pratique pour les opérations métier --> <receiver android:name="com.engagelab.app.component.UserReceiver" android:exported="false"> <intent-filter> <action android:name="com.engagelab.privates.intent.USER_RECEIVER" /> </intent-filter> </receiver> </application> </manifest>
              
              <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.engagelab.app">
        
    <!-- Nécessaire, permission réseau -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- Optionnel, vibration de notification -->
    <uses-permission android:name="android.permission.VIBRATE" /> 
        
    <application
        android:name="com.engagelab.app.MainApplication"
        android:allowBackup="false"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.MT"
        android:usesCleartextTraffic="true"
        tools:targetApi="m"> <!-- Si vous utilisez des requêtes http, alors l'utilisation de http doit être autorisée -->

                .....................................................................................................
                
        <!-- Comme cette classe possède la fonction de connexion longue, le service dont le nom de package contient Engagelab peut être directement tué lors de l'optimisation d'économie d'énergie par le fabricant du téléphone -->
        <!-- Par conséquent, les développeurs doivent hériter de com.engagelab.app.component.MTCommonService pour améliorer le taux de survie de la connexion longue, afin d'augmenter le taux de réception des messages -->
        <service
            android:name="com.engagelab.app.component.UserService"
            android:exported="false"
            android:process="${ENGAGELAB_PRIVATES_PROCESS}">
            <intent-filter>
                <action android:name="com.engagelab.privates.intent.USER_SERVICE" />
            </intent-filter>
        </service>

        <!-- Utilisé pour recevoir les callbacks des services Engagelab, y compris le statut de connexion longue/changement de statut de notification/réception de notification/clic sur notification/suppression de notification/message personnalisé/callback de token fournisseur -->
        <!-- Il n'est pas nécessaire de configurer un sous-processus. Ce callback est dans le processus principal, ce qui est pratique pour les opérations métier -->
        <receiver
            android:name="com.engagelab.app.component.UserReceiver"
            android:exported="false">
            <intent-filter>
                <action android:name="com.engagelab.privates.intent.USER_RECEIVER" />
            </intent-filter>
        </receiver>

    </application>

</manifest>

            
Afficher ce bloc de code dans la fenêtre flottante

5. Initialisation

package com.engagelab.app; import android.app.Application; import com.engagelab.privates.core.api.Address; import com.engagelab.privates.core.api.MTCorePrivatesApi; import com.engagelab.privates.push.api.MTPushPrivatesApi; public class MainApplication extends Application { private static final String TAG = "MainApplication"; @Override public void onCreate() { super.onCreate(); // Doit être configuré dans application.onCreate, ne pas vérifier le process, le SDK effectue sa propre vérification en interne MTCorePrivatesApi.configDebugMode(this, true); // Initialiser push pour la notification push // MTPushPrivatesApi.init(this); } }
              
              package com.engagelab.app;

import android.app.Application;

import com.engagelab.privates.core.api.Address;
import com.engagelab.privates.core.api.MTCorePrivatesApi;
import com.engagelab.privates.push.api.MTPushPrivatesApi;

public class MainApplication extends Application {

    private static final String TAG = "MainApplication";

    @Override
    public void onCreate() {
        super.onCreate();

        // Doit être configuré dans application.onCreate, ne pas vérifier le process, le SDK effectue sa propre vérification en interne
        MTCorePrivatesApi.configDebugMode(this, true);

        // Initialiser push pour la notification push
        // MTPushPrivatesApi.init(this);

    }

}

            
Afficher ce bloc de code dans la fenêtre flottante
icon
Contactez-nous