Guide d'intégration du canal EngageLab

Obtenir les informations de l'application

Créez une application dans la console. Après la création de l'application, une AppKey est automatiquement générée pour identifier l'application. Pour plus d'informations, consultez Paramètres de l'application.

Importation des bibliothèques

  • Méthode manuelle
Importez le fichier mt-sdk-x.x.x.aar du dossier libs dans le répertoire libs. Importez th-xxx-x.x.x.aar sous le package libs dans le répertoire libs.
              
                  Importez le fichier mt-sdk-x.x.x.aar du dossier libs dans le répertoire libs.
    Importez th-xxx-x.x.x.aar sous le package libs dans le répertoire libs.

            
Afficher ce bloc de code dans la fenêtre flottante
  • Méthode automatique
dependencies { // Obligatoire : package principal implementation 'com.engagelab:engagelab:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple. // Optionnel : fournisseur Google implementation 'com.engagelab.plugin:google:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple. // Optionnel : fournisseur Honor implementation 'com.engagelab.plugin:honor:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple. implementation 'com.engagelab.plugin:honor_th_push:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple. // Optionnel : fournisseur Huawei implementation 'com.engagelab.plugin:huawei:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple. // Optionnel : fournisseur Xiaomi, version chinoise implementation 'com.engagelab.plugin:mi:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple. // Optionnel : fournisseur Meizu implementation 'com.engagelab.plugin:meizu:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple. // Optionnel : fournisseur Oppo implementation 'com.engagelab.plugin:oppo:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple. implementation 'com.engagelab.plugin:oppo_th_push:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple. // Optionnel : fournisseur Vivo implementation 'com.engagelab.plugin:vivo:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple. // Optionnel : fonction de diffusion vocale implementation 'com.engagelab.plugin:oth_sound:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple. }
              
              dependencies {
  // Obligatoire : package principal
  implementation 'com.engagelab:engagelab:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple.
  // Optionnel : fournisseur Google
  implementation 'com.engagelab.plugin:google:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple.
  // Optionnel : fournisseur Honor
  implementation 'com.engagelab.plugin:honor:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple.
  implementation 'com.engagelab.plugin:honor_th_push:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple.
  // Optionnel : fournisseur Huawei
  implementation 'com.engagelab.plugin:huawei:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple.
  // Optionnel : fournisseur Xiaomi, version chinoise
  implementation 'com.engagelab.plugin:mi:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple.
  // Optionnel : fournisseur Meizu
  implementation 'com.engagelab.plugin:meizu:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple.
  // Optionnel : fournisseur Oppo
  implementation 'com.engagelab.plugin:oppo:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple.
  implementation 'com.engagelab.plugin:oppo_th_push:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple.
  // Optionnel : fournisseur Vivo
  implementation 'com.engagelab.plugin:vivo:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple.
  // Optionnel : fonction de diffusion vocale
  implementation 'com.engagelab.plugin:oth_sound:4.3.9' // Ici, nous utilisons la version 4.3.9 à titre d'exemple.
}

            
Afficher ce bloc de code dans la fenêtre flottante

2. Configurer build.gradle

plugins { id 'com.android.application' } android { ... defaultConfig { // Nom du package de l'application, doit être identique à celui de la console applicationId "com.engagelab.app" ... manifestPlaceholders = [ // AppKey, doit être identique à celui de la console ; relation un-à-un avec packageName ENGAGELAB_PRIVATES_APPKEY : "YourAppKey", // appChannel EngageLab, utilisé pour les statistiques de canal ENGAGELAB_PRIVATES_CHANNEL: "developer", // Processus EngageLab, le processus où le SDK EngageLab fonctionne ; note : commence par ENGAGELAB_PRIVATES_PROCESS: ":remote", ] } } dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') }
              
              plugins {
    id 'com.android.application'
}

android {
    ...

    defaultConfig {
        // Nom du package de l'application, doit être identique à celui de la console
        applicationId "com.engagelab.app"
        ...
                
        manifestPlaceholders = [
                // AppKey, doit être identique à celui de la console ; relation un-à-un avec packageName
                ENGAGELAB_PRIVATES_APPKEY : "YourAppKey",
                // appChannel EngageLab, utilisé pour les statistiques de canal
                ENGAGELAB_PRIVATES_CHANNEL: "developer",
                // Processus EngageLab, le processus où le SDK EngageLab fonctionne ; note : commence par
                ENGAGELAB_PRIVATES_PROCESS: ":remote",
        ]
    }
}

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

            
Afficher ce bloc de code dans la fenêtre flottante

Créer les composants requis

package com.engagelab.app.component; import com.engagelab.privates.common.component.MTCommonService; /** * Les développeurs peuvent étendre MTCommonService pour prolonger la longévité de la connexion longue. * * 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 peuvent étendre MTCommonService pour prolonger la longévité de la connexion longue.
 *
 * 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 peuvent étendre MTCommonReceiver pour recevoir les callbacks de méthodes du SDK. * * Tous les callbacks sont dans le thread principal. */ public class UserReceiver extends MTCommonReceiver { private static final String TAG = "UserReceiver"; /** * Callback pour l'état de l'interrupteur de notification de l'application. * * @param context Non nul * @param enable État de l'interrupteur de notification, true pour activé, false pour désactivé */ @Override public void onNotificationStatus(Context context, boolean enable) { ExampleLogger.i(TAG, "onNotificationStatus:" + enable); Toast.makeText(context.getApplicationContext(), "onNotificationStatus " + enable, Toast.LENGTH_SHORT).show(); ExampleGlobal.isNotificationEnable = enable; if (StatusObserver.getInstance().getListener() != null) { StatusObserver.getInstance().getListener().onNotificationStatus(enable); } } /** * Callback de l'état de la connexion longue. * * @param context Non nul * @param enable Si la connexion est établie */ @Override public void onConnectStatus(Context context, boolean enable) { ExampleLogger.i(TAG, "onConnectState:" + enable); Toast.makeText(context.getApplicationContext(), "onConnectStatus " + enable, Toast.LENGTH_SHORT).show(); ExampleGlobal.isConnectEnable = enable; if (StatusObserver.getInstance().getListener() != null) { StatusObserver.getInstance().getListener().onConnectStatus(enable); } // Obtenir le registrationId lorsque la connexion longue est établie if (enable) { String registrationId = MTCorePrivatesApi.getRegistrationId(context); ExampleLogger.i(TAG, "registrationId:" + registrationId); } } /** * Callback lors de l'arrivée d'un message de notification. * * @param context Non nul * @param notificationMessage Message de notification */ @Override public void onNotificationArrived(Context context, NotificationMessage notificationMessage) { ExampleLogger.i(TAG, "onNotificationArrived:" + notificationMessage.toString()); } /** * Callback pour les messages de notification non affichés au premier plan. * * @param context Non nul * @param notificationMessage Message de notification */ @Override public void onNotificationUnShow(Context context, NotificationMessage notificationMessage) { ExampleLogger.i(TAG, "onNotificationUnShow:" + notificationMessage.toString()); } /** * Callback lors du clic sur un message de notification. * * @param context Non nul * @param notificationMessage Message de notification */ @Override public void onNotificationClicked(Context context, NotificationMessage notificationMessage) { ExampleLogger.i(TAG, "onNotificationClicked:" + notificationMessage.toString()); } /** * Callback lors de la suppression d'un message de notification. * * @param context Non nul * @param notificationMessage Message de notification */ @Override public void onNotificationDeleted(Context context, NotificationMessage notificationMessage) { ExampleLogger.i(TAG, "onNotificationDeleted:" + notificationMessage.toString()); } /** * Callback pour les messages personnalisés. * * @param context Non nul * @param customMessage Message personnalisé */ @Override public void onCustomMessage(Context context, CustomMessage customMessage) { ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString()); } /** * Callback pour le message de token du fournisseur. * * @param context Non nul * @param platformTokenMessage Message de token du fournisseur */ @Override public void onPlatformToken(Context context, PlatformTokenMessage platformTokenMessage) { ExampleLogger.i(TAG, "onPlatformToken:" + platformTokenMessage.toString()); } }
              
              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 peuvent étendre MTCommonReceiver pour recevoir les callbacks de méthodes du SDK.
 *
 * Tous les callbacks sont dans le thread principal.
 */
public class UserReceiver extends MTCommonReceiver {

    private static final String TAG = "UserReceiver";

    /**
     * Callback pour l'état de l'interrupteur de notification de l'application.
     *
     * @param context Non nul
     * @param enable État de l'interrupteur de notification, true pour activé, false pour désactivé
     */
    @Override
    public void onNotificationStatus(Context context, boolean enable) {
        ExampleLogger.i(TAG, "onNotificationStatus:" + enable);
        Toast.makeText(context.getApplicationContext(), "onNotificationStatus " + enable, Toast.LENGTH_SHORT).show();
        ExampleGlobal.isNotificationEnable = enable;
        if (StatusObserver.getInstance().getListener() != null) {
            StatusObserver.getInstance().getListener().onNotificationStatus(enable);
        }
    }

    /**
     * Callback de l'état de la connexion longue.
     *
     * @param context Non nul
     * @param enable Si la connexion est établie
     */
    @Override
    public void onConnectStatus(Context context, boolean enable) {
        ExampleLogger.i(TAG, "onConnectState:" + enable);
        Toast.makeText(context.getApplicationContext(), "onConnectStatus " + enable, Toast.LENGTH_SHORT).show();
        ExampleGlobal.isConnectEnable = enable;
        if (StatusObserver.getInstance().getListener() != null) {
            StatusObserver.getInstance().getListener().onConnectStatus(enable);
        }
        // Obtenir le registrationId lorsque la connexion longue est établie
        if (enable) {
            String registrationId = MTCorePrivatesApi.getRegistrationId(context);
            ExampleLogger.i(TAG, "registrationId:" + registrationId);
        }
    }

    /**
     * Callback lors de l'arrivée d'un message de notification.
     *
     * @param context Non nul
     * @param notificationMessage Message de notification
     */
    @Override
    public void onNotificationArrived(Context context, NotificationMessage notificationMessage) {
        ExampleLogger.i(TAG, "onNotificationArrived:" + notificationMessage.toString());
    }

    /**
     * Callback pour les messages de notification non affichés au premier plan.
     *
     * @param context Non nul
     * @param notificationMessage Message de notification
     */
    @Override
    public void onNotificationUnShow(Context context, NotificationMessage notificationMessage) {
        ExampleLogger.i(TAG, "onNotificationUnShow:" + notificationMessage.toString());
    }

    /**
     * Callback lors du clic sur un message de notification.
     *
     * @param context Non nul
     * @param notificationMessage Message de notification
     */
    @Override
    public void onNotificationClicked(Context context, NotificationMessage notificationMessage) {
        ExampleLogger.i(TAG, "onNotificationClicked:" + notificationMessage.toString());
    }

    /**
     * Callback lors de la suppression d'un message de notification.
     *
     * @param context Non nul
     * @param notificationMessage Message de notification
     */
    @Override
    public void onNotificationDeleted(Context context, NotificationMessage notificationMessage) {
        ExampleLogger.i(TAG, "onNotificationDeleted:" + notificationMessage.toString());
    }

    /**
     * Callback pour les messages personnalisés.
     *
     * @param context Non nul
     * @param customMessage Message personnalisé
     */
    @Override
    public void onCustomMessage(Context context, CustomMessage customMessage) {
        ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString());
    }

    /**
     * Callback pour le message de token du fournisseur.
     *
     * @param context Non nul
     * @param platformTokenMessage Message de token du fournisseur
     */
    @Override
    public void onPlatformToken(Context context, PlatformTokenMessage platformTokenMessage) {
        ExampleLogger.i(TAG, "onPlatformToken:" + platformTokenMessage.toString());
    }

}

            
Afficher ce bloc de code dans la fenêtre flottante

4. Configurer 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"> <!-- Obligatoire : permission Internet --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Optionnel : vibration pour les notifications --> <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, autorisez HTTP --> ..................................................................................................... <!-- En raison de la fonctionnalité de connexion longue de cette classe, l'optimisation d'économie d'énergie du fabricant peut tuer directement le service avec un nom de package contenant "Engagelab". --> <!-- Par conséquent, les développeurs doivent étendre com.engagelab.app.component.MTCommonService pour améliorer le taux de survie de la connexion longue et augmenter le taux d'arrivée 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 métier EngageLab, incluant état de la connexion longue/interrupteur de notification/arrivée de message de notification/clic sur message de notification/suppression de message de notification/message personnalisé/callback de token fournisseur --> <!-- Pas besoin de configurer des sous-processus ; ce callback est dans le processus principal pour faciliter 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">
        
    <!-- Obligatoire : permission Internet -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- Optionnel : vibration pour les notifications -->
    <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, autorisez HTTP -->

                .....................................................................................................
                
        <!-- En raison de la fonctionnalité de connexion longue de cette classe, l'optimisation d'économie d'énergie du fabricant peut tuer directement le service avec un nom de package contenant "Engagelab". -->
        <!-- Par conséquent, les développeurs doivent étendre com.engagelab.app.component.MTCommonService pour améliorer le taux de survie de la connexion longue et augmenter le taux d'arrivée 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 métier EngageLab, incluant état de la connexion longue/interrupteur de notification/arrivée de message de notification/clic sur message de notification/suppression de message de notification/message personnalisé/callback de token fournisseur -->
        <!-- Pas besoin de configurer des sous-processus ; ce callback est dans le processus principal pour faciliter 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. Configuration de l'environnement

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; /** * Utilisé pour démontrer la configuration du SDK ENGAGELAB. */ public class MainApplication extends Application { private static final String TAG = "MainApplication"; @Override public void onCreate() { super.onCreate(); // La configuration doit être effectuée dans application.onCreate, inutile de vérifier les processus, le SDK effectue une vérification interne. MTCorePrivatesApi.configDebugMode(this, true); // Pour les versions antérieures au tag : V3.5.4-newportal-20210823-gamma.57, cette méthode doit être appelée par les développeurs frontend ; sinon, il y aura des problèmes de redirection lors du clic sur la notification. // MTPushPrivatesApi.configOldPushVersion(context.getApplicationContext()); // Initialiser le 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;

/**
 * Utilisé pour démontrer la configuration du SDK ENGAGELAB.
 */
public class MainApplication extends Application {

    private static final String TAG = "MainApplication";

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

        // La configuration doit être effectuée dans application.onCreate, inutile de vérifier les processus, le SDK effectue une vérification interne.
        MTCorePrivatesApi.configDebugMode(this, true);

        // Pour les versions antérieures au tag : V3.5.4-newportal-20210823-gamma.57, cette méthode doit être appelée par les développeurs frontend ; sinon, il y aura des problèmes de redirection lors du clic sur la notification.
        // MTPushPrivatesApi.configOldPushVersion(context.getApplicationContext());

        // Initialiser le push
        // MTPushPrivatesApi.init(this);
    }
}

            
Afficher ce bloc de code dans la fenêtre flottante

6. Créer un composant de redirection sur clic de notification

package com.engagelab.app.component; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; import com.engagelab.app.R; import com.engagelab.app.log.ExampleLogger; import com.engagelab.privates.push.api.MTPushPrivatesApi; import com.engagelab.privates.push.api.NotificationMessage; import com.engagelab.privates.push.constants.MTPushConstants; /** * Utilisé pour démontrer le clic sur une notification pour rediriger vers une activité. * * Assurez-vous que MTPushPrivatesApi.configOldPushVersion(Context) n'est pas appelé, sinon la redirection sur clic de notification n'ira pas sur cette page. * <p> * Inutile d'appeler MTPushPrivatesApi.reportNotificationOpened(Context, String, byte, String) ; le SDK le gère en interne. */ public class UserActivity400 extends Activity { private static final String TAG = "UserActivity400"; private TextView tvMessage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_intent); tvMessage = findViewById(R.id.tv_message); onIntent(getIntent()); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); onIntent(intent); } private void onIntent(Intent intent) { try { Toast.makeText(this, TAG, Toast.LENGTH_SHORT).show(); if (intent == null) { return; } // À partir de la version 3.4.0, les objets ne sont plus utilisés ; les données JSON sont utilisées à la place String notificationMessage = intent.getStringExtra("message_json"); if (notificationMessage == null) { return; } ExampleLogger.d(TAG, "notificationMessage:" + notificationMessage.toString()); tvMessage.setText(notificationMessage.toString()); } catch (Throwable throwable) { throwable.printStackTrace(); } } }
              
              package com.engagelab.app.component;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

import com.engagelab.app.R;
import com.engagelab.app.log.ExampleLogger;
import com.engagelab.privates.push.api.MTPushPrivatesApi;
import com.engagelab.privates.push.api.NotificationMessage;
import com.engagelab.privates.push.constants.MTPushConstants;

/**
 * Utilisé pour démontrer le clic sur une notification pour rediriger vers une activité.
 *
 * Assurez-vous que MTPushPrivatesApi.configOldPushVersion(Context) n'est pas appelé, sinon la redirection sur clic de notification n'ira pas sur cette page.
 * <p>
 * Inutile d'appeler MTPushPrivatesApi.reportNotificationOpened(Context, String, byte, String) ; le SDK le gère en interne.
 */
public class UserActivity400 extends Activity {

    private static final String TAG = "UserActivity400";

    private TextView tvMessage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_intent);
        tvMessage = findViewById(R.id.tv_message);
        onIntent(getIntent());
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        onIntent(intent);
    }

    private void onIntent(Intent intent) {
        try {
            Toast.makeText(this, TAG, Toast.LENGTH_SHORT).show();
            if (intent == null) {
                return;
            }
            // À partir de la version 3.4.0, les objets ne sont plus utilisés ; les données JSON sont utilisées à la place
            String notificationMessage = intent.getStringExtra("message_json");
            if (notificationMessage == null) {
                return;
            }
            ExampleLogger.d(TAG, "notificationMessage:" + notificationMessage.toString());
            tvMessage.setText(notificationMessage.toString());
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
    }
}

            
Afficher ce bloc de code dans la fenêtre flottante

7. Configurer l'AndroidManifest.xml pour la redirection sur clic

<?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"> <!-- Obligatoire : permission Internet --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Optionnel : vibration pour les notifications --> <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, autorisez HTTP --> .............................................................. <!-- Utilisé pour démontrer la redirection sur clic de notification --> <activity android:name="com.engagelab.app.component.UserActivity400" android:exported="false" android:launchMode="singleTask" /> <!-- Utilisé pour démontrer la redirection sur clic de notification avec deep links --> <!-- <activity--> <!-- android:name="com.engagelab.app.component.UserActivity400"--> <!-- android:exported="false" >--> <!-- <intent-filter>--> <!-- <data android:scheme="YourScheme"/>--> <!-- <data android:host="YourHost"/>--> <!-- <action android:name="android.intent.action.VIEW" />--> <!-- <category android:name="android.intent.category.DEFAULT" />--> <!-- <category android:name="android.intent.category.BROWSABLE" />--> <!-- </intent-filter>--> <!-- </activity>--> <!-- Vérification de transfert local en liste blanche : À partir de MTPush 4.2.3, après configuration de ENGAGELAB_PRIVATES_TRANSFER, le SDK effectuera une vérification locale. Si la vérification locale est activée, veuillez configurer ici l'Activity cible à atteindre. S'il y a plusieurs Activities cibles, séparez-les par /. --> <meta-data android:name="ENGAGELAB_PRIVATES_TRANSFER" android:value="com.engagelab.app.component.UserActivity400" /> <!-- Nécessaire pour le push Google : à retirer si le canal Google n'est pas nécessaire --> <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/mtpush_notification_icon" /> <!-- Nécessaire pour le push Huawei : à retirer si le canal Huawei n'est pas nécessaire --> <meta-data android:name="com.huawei.messaging.default_notification_icon" android:resource="@drawable/mtpush_notification_icon" /> </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">

    <!-- Obligatoire : permission Internet -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- Optionnel : vibration pour les notifications -->
    <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, autorisez HTTP -->

        ..............................................................

        <!-- Utilisé pour démontrer la redirection sur clic de notification -->
        <activity
            android:name="com.engagelab.app.component.UserActivity400"
            android:exported="false"
            android:launchMode="singleTask" />

        <!-- Utilisé pour démontrer la redirection sur clic de notification avec deep links -->
<!--        <activity-->
<!--            android:name="com.engagelab.app.component.UserActivity400"-->
<!--            android:exported="false" >-->
<!--            <intent-filter>-->
<!--                <data android:scheme="YourScheme"/>-->
<!--                <data android:host="YourHost"/>-->
<!--                <action android:name="android.intent.action.VIEW" />-->
<!--                <category android:name="android.intent.category.DEFAULT" />-->
<!--                <category android:name="android.intent.category.BROWSABLE" />-->
<!--            </intent-filter>-->
<!--        </activity>-->

        <!-- Vérification de transfert local en liste blanche : À partir de MTPush 4.2.3, après configuration de ENGAGELAB_PRIVATES_TRANSFER, le SDK effectuera une vérification locale. Si la vérification locale est activée, veuillez configurer ici l'Activity cible à atteindre. S'il y a plusieurs Activities cibles, séparez-les par /. -->
        <meta-data
            android:name="ENGAGELAB_PRIVATES_TRANSFER"
            android:value="com.engagelab.app.component.UserActivity400" />
                
        <!-- Nécessaire pour le push Google : à retirer si le canal Google n'est pas nécessaire -->
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_icon"
            android:resource="@drawable/mtpush_notification_icon" />

        <!-- Nécessaire pour le push Huawei : à retirer si le canal Huawei n'est pas nécessaire -->
        <meta-data
            android:name="com.huawei.messaging.default_notification_icon"
            android:resource="@drawable/mtpush_notification_icon" />

    </application>

</manifest>

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