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

