Engagelab Integration Guide: Android Push-Benachrichtigungen und SDK Konfiguration

In dieser Anleitung erfahren Sie Schritt für Schritt, wie Sie die Engagelab Integration für Android Push-Benachrichtigungen umsetzen und das Engagelab SDK korrekt konfigurieren. Mit dieser Lösung steigern Sie die Stabilität Ihrer Push-Kommunikation und optimieren die Zustellrate Ihrer Nachrichten.

Anwendungsinformationen erhalten

Erstellen Sie eine Anwendung in der Engagelab-Konsole. Nach der Erstellung wird automatisch ein AppKey generiert, der Ihre Anwendung eindeutig identifiziert. Weitere Informationen finden Sie unter Anwendungseinstellungen.

Bibliotheken importieren

Manueller Weg

Importieren Sie die mt-sdk-x.x.x.aar aus dem libs-Verzeichnis. Importieren Sie die th-xxx-x.x.x.aar aus dem libs-Verzeichnis.
              
              Importieren Sie die mt-sdk-x.x.x.aar aus dem libs-Verzeichnis.
Importieren Sie die th-xxx-x.x.x.aar aus dem libs-Verzeichnis.

            
Diesen Codeblock im schwebenden Fenster anzeigen

Automatischer Weg

dependencies { // Erforderlich: Hauptpaket implementation 'com.engagelab:engagelab:4.3.9' // Beispiel: Version 4.3.9 // Optional: Google-Anbieter implementation 'com.engagelab.plugin:google:4.3.9' // Optional: Honor-Anbieter implementation 'com.engagelab.plugin:honor:4.3.9' implementation 'com.engagelab.plugin:honor_th_push:4.3.9' // Optional: Huawei-Anbieter implementation 'com.engagelab.plugin:huawei:4.3.9' // Optional: Xiaomi-Anbieter, chinesische Version implementation 'com.engagelab.plugin:mi:4.3.9' // Optional: Meizu-Anbieter implementation 'com.engagelab.plugin:meizu:4.3.9' // Optional: Oppo-Anbieter implementation 'com.engagelab.plugin:oppo:4.3.9' implementation 'com.engagelab.plugin:oppo_th_push:4.3.9' // Optional: Vivo-Anbieter implementation 'com.engagelab.plugin:vivo:4.3.9' // Optional: Sprachbenachrichtigungsfunktion implementation 'com.engagelab.plugin:oth_sound:4.3.9' }
              
              dependencies {
  // Erforderlich: Hauptpaket
  implementation 'com.engagelab:engagelab:4.3.9' // Beispiel: Version 4.3.9
  // Optional: Google-Anbieter
  implementation 'com.engagelab.plugin:google:4.3.9'
  // Optional: Honor-Anbieter
  implementation 'com.engagelab.plugin:honor:4.3.9'
  implementation 'com.engagelab.plugin:honor_th_push:4.3.9'
  // Optional: Huawei-Anbieter
  implementation 'com.engagelab.plugin:huawei:4.3.9'
  // Optional: Xiaomi-Anbieter, chinesische Version
  implementation 'com.engagelab.plugin:mi:4.3.9'
  // Optional: Meizu-Anbieter
  implementation 'com.engagelab.plugin:meizu:4.3.9'
  // Optional: Oppo-Anbieter
  implementation 'com.engagelab.plugin:oppo:4.3.9'
  implementation 'com.engagelab.plugin:oppo_th_push:4.3.9'
  // Optional: Vivo-Anbieter
  implementation 'com.engagelab.plugin:vivo:4.3.9'
  // Optional: Sprachbenachrichtigungsfunktion
  implementation 'com.engagelab.plugin:oth_sound:4.3.9'
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

2. build.gradle konfigurieren

plugins { id 'com.android.application' } android { ... defaultConfig { // App-Paketname, muss mit dem in der Konsole angegebenen Namen übereinstimmen applicationId "com.engagelab.app" ... manifestPlaceholders = [ // AppKey, muss mit dem Wert in der Konsole übereinstimmen; eindeutige Zuordnung zum packageName ENGAGELAB_PRIVATES_APPKEY : "YourAppKey", // Engagelab appChannel, wird für Kanalstatistiken verwendet ENGAGELAB_PRIVATES_CHANNEL: "developer", // Engagelab-Prozess, in dem das Engagelab-SDK läuft; Hinweis: beginnt mit ENGAGELAB_PRIVATES_PROCESS: ":remote", ] } } dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') }
              
              plugins {
    id 'com.android.application'
}

android {
    ...

    defaultConfig {
        // App-Paketname, muss mit dem in der Konsole angegebenen Namen übereinstimmen
        applicationId "com.engagelab.app"
        ...
                
        manifestPlaceholders = [
                // AppKey, muss mit dem Wert in der Konsole übereinstimmen; eindeutige Zuordnung zum packageName
                ENGAGELAB_PRIVATES_APPKEY : "YourAppKey",
                // Engagelab appChannel, wird für Kanalstatistiken verwendet
                ENGAGELAB_PRIVATES_CHANNEL: "developer",
                // Engagelab-Prozess, in dem das Engagelab-SDK läuft; Hinweis: beginnt mit
                ENGAGELAB_PRIVATES_PROCESS: ":remote",
        ]
    }
}

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Erforderliche Komponenten erstellen

package com.engagelab.app.component; import com.engagelab.privates.common.component.MTCommonService; /** * Entwickler können MTCommonService erweitern, um die Stabilität der dauerhaften Verbindung zu erhöhen. * * Eine leere Implementierung genügt. */ public class UserService extends MTCommonService { }
              
              package com.engagelab.app.component;

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

/**
 * Entwickler können MTCommonService erweitern, um die Stabilität der dauerhaften Verbindung zu erhöhen.
 *
 * Eine leere Implementierung genügt.
 */
public class UserService extends MTCommonService {

}

            
Diesen Codeblock im schwebenden Fenster anzeigen
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; /** * Entwickler können MTCommonReceiver erweitern, um Methodenrückrufe vom SDK zu erhalten. * * Alle Rückrufe erfolgen im Hauptthread. */ public class UserReceiver extends MTCommonReceiver { private static final String TAG = "UserReceiver"; /** * Rückruf für den Benachrichtigungsstatus der Anwendung. * * @param context Nicht null * @param enable Benachrichtigungsstatus, true = ein, false = aus */ @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); } } /** * Rückruf für den Status der dauerhaften Verbindung. * * @param context Nicht null * @param enable Gibt an, ob die Verbindung hergestellt ist */ @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); } // RegistrierungId abrufen, wenn die dauerhafte Verbindung hergestellt ist if (enable) { String registrationId = MTCorePrivatesApi.getRegistrationId(context); ExampleLogger.i(TAG, "registrationId:" + registrationId); } } /** * Rückruf bei Eingang einer Benachrichtigung. * * @param context Nicht null * @param notificationMessage Benachrichtigungsnachricht */ @Override public void onNotificationArrived(Context context, NotificationMessage notificationMessage) { ExampleLogger.i(TAG, "onNotificationArrived:" + notificationMessage.toString()); } /** * Rückruf für Benachrichtigungen, die nicht im Vordergrund angezeigt werden. * * @param context Nicht null * @param notificationMessage Benachrichtigungsnachricht */ @Override public void onNotificationUnShow(Context context, NotificationMessage notificationMessage) { ExampleLogger.i(TAG, "onNotificationUnShow:" + notificationMessage.toString()); } /** * Rückruf bei Klick auf eine Benachrichtigung. * * @param context Nicht null * @param notificationMessage Benachrichtigungsnachricht */ @Override public void onNotificationClicked(Context context, NotificationMessage notificationMessage) { ExampleLogger.i(TAG, "onNotificationClicked:" + notificationMessage.toString()); } /** * Rückruf bei Löschung einer Benachrichtigung. * * @param context Nicht null * @param notificationMessage Benachrichtigungsnachricht */ @Override public void onNotificationDeleted(Context context, NotificationMessage notificationMessage) { ExampleLogger.i(TAG, "onNotificationDeleted:" + notificationMessage.toString()); } /** * Rückruf für benutzerdefinierte Nachrichten. * * @param context Nicht null * @param customMessage Benutzerdefinierte Nachricht */ @Override public void onCustomMessage(Context context, CustomMessage customMessage) { ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString()); } /** * Rückruf für Anbieter-Token-Nachrichten. * * @param context Nicht null * @param platformTokenMessage Anbieter-Token-Nachricht */ @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;

/**
 * Entwickler können MTCommonReceiver erweitern, um Methodenrückrufe vom SDK zu erhalten.
 *
 * Alle Rückrufe erfolgen im Hauptthread.
 */
public class UserReceiver extends MTCommonReceiver {

    private static final String TAG = "UserReceiver";

    /**
     * Rückruf für den Benachrichtigungsstatus der Anwendung.
     *
     * @param context Nicht null
     * @param enable Benachrichtigungsstatus, true = ein, false = aus
     */
    @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);
        }
    }

    /**
     * Rückruf für den Status der dauerhaften Verbindung.
     *
     * @param context Nicht null
     * @param enable Gibt an, ob die Verbindung hergestellt ist
     */
    @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);
        }
        // RegistrierungId abrufen, wenn die dauerhafte Verbindung hergestellt ist
        if (enable) {
            String registrationId = MTCorePrivatesApi.getRegistrationId(context);
            ExampleLogger.i(TAG, "registrationId:" + registrationId);
        }
    }

    /**
     * Rückruf bei Eingang einer Benachrichtigung.
     *
     * @param context Nicht null
     * @param notificationMessage Benachrichtigungsnachricht
     */
    @Override
    public void onNotificationArrived(Context context, NotificationMessage notificationMessage) {
        ExampleLogger.i(TAG, "onNotificationArrived:" + notificationMessage.toString());
    }

    /**
     * Rückruf für Benachrichtigungen, die nicht im Vordergrund angezeigt werden.
     *
     * @param context Nicht null
     * @param notificationMessage Benachrichtigungsnachricht
     */
    @Override
    public void onNotificationUnShow(Context context, NotificationMessage notificationMessage) {
        ExampleLogger.i(TAG, "onNotificationUnShow:" + notificationMessage.toString());
    }

    /**
     * Rückruf bei Klick auf eine Benachrichtigung.
     *
     * @param context Nicht null
     * @param notificationMessage Benachrichtigungsnachricht
     */
    @Override
    public void onNotificationClicked(Context context, NotificationMessage notificationMessage) {
        ExampleLogger.i(TAG, "onNotificationClicked:" + notificationMessage.toString());
    }

    /**
     * Rückruf bei Löschung einer Benachrichtigung.
     *
     * @param context Nicht null
     * @param notificationMessage Benachrichtigungsnachricht
     */
    @Override
    public void onNotificationDeleted(Context context, NotificationMessage notificationMessage) {
        ExampleLogger.i(TAG, "onNotificationDeleted:" + notificationMessage.toString());
    }

    /**
     * Rückruf für benutzerdefinierte Nachrichten.
     *
     * @param context Nicht null
     * @param customMessage Benutzerdefinierte Nachricht
     */
    @Override
    public void onCustomMessage(Context context, CustomMessage customMessage) {
        ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString());
    }

    /**
     * Rückruf für Anbieter-Token-Nachrichten.
     *
     * @param context Nicht null
     * @param platformTokenMessage Anbieter-Token-Nachricht
     */
    @Override
    public void onPlatformToken(Context context, PlatformTokenMessage platformTokenMessage) {
        ExampleLogger.i(TAG, "onPlatformToken:" + platformTokenMessage.toString());
    }

}

            
Diesen Codeblock im schwebenden Fenster anzeigen

4. AndroidManifest.xml konfigurieren

<?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"> <!-- Erforderlich: Internetberechtigung --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Optional: Vibration für Benachrichtigungen --> <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"> <!-- HTTP-Anfragen zulassen, falls verwendet --> ..................................................................................................... <!-- Aufgrund der dauerhaften Verbindung kann die Energiesparoptimierung des Herstellers den Dienst mit einem Paketnamen, der "Engagelab" enthält, direkt beenden. --> <!-- Daher sollten Entwickler com.engagelab.app.component.MTCommonService erweitern, um die Stabilität der dauerhaften Verbindung zu erhöhen und die Zustellrate von Nachrichten zu verbessern. --> <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> <!-- Wird verwendet, um Engagelab-Geschäftsrückrufe zu empfangen, einschließlich Status der dauerhaften Verbindung/Benachrichtigungsstatus/Eingang von Benachrichtigungen/Klick auf Benachrichtigungen/Löschung von Benachrichtigungen/benutzerdefinierte Nachrichten/Anbieter-Token-Rückrufe --> <!-- Keine Konfiguration von Unterprozessen erforderlich; dieser Rückruf erfolgt im Hauptprozess, um Geschäftsoperationen zu erleichtern --> <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">
        
    <!-- Erforderlich: Internetberechtigung -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- Optional: Vibration für Benachrichtigungen -->
    <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"> <!-- HTTP-Anfragen zulassen, falls verwendet -->

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

        <!-- Aufgrund der dauerhaften Verbindung kann die Energiesparoptimierung des Herstellers den Dienst mit einem Paketnamen, der "Engagelab" enthält, direkt beenden. -->
        <!-- Daher sollten Entwickler com.engagelab.app.component.MTCommonService erweitern, um die Stabilität der dauerhaften Verbindung zu erhöhen und die Zustellrate von Nachrichten zu verbessern. -->
        <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>

        <!-- Wird verwendet, um Engagelab-Geschäftsrückrufe zu empfangen, einschließlich Status der dauerhaften Verbindung/Benachrichtigungsstatus/Eingang von Benachrichtigungen/Klick auf Benachrichtigungen/Löschung von Benachrichtigungen/benutzerdefinierte Nachrichten/Anbieter-Token-Rückrufe -->
        <!-- Keine Konfiguration von Unterprozessen erforderlich; dieser Rückruf erfolgt im Hauptprozess, um Geschäftsoperationen zu erleichtern -->
        <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>

            
Diesen Codeblock im schwebenden Fenster anzeigen

5. Umgebungskonfiguration

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; /** * Beispiel für die Konfiguration des ENGAGELAB-SDK. */ public class MainApplication extends Application { private static final String TAG = "MainApplication"; @Override public void onCreate() { super.onCreate(); // Die Konfiguration muss in application.onCreate erfolgen; eine Prozessprüfung ist nicht notwendig, das SDK prüft dies intern. MTCorePrivatesApi.configDebugMode(this, true); // Für Versionen vor Tag: V3.5.4-newportal-20210823-gamma.57 muss diese Methode von Frontend-Entwicklern aufgerufen werden, sonst gibt es Probleme beim Klick auf Benachrichtigungen. // MTPushPrivatesApi.configOldPushVersion(context.getApplicationContext()); // Push initialisieren // 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;

/**
 * Beispiel für die Konfiguration des ENGAGELAB-SDK.
 */
public class MainApplication extends Application {

    private static final String TAG = "MainApplication";

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

        // Die Konfiguration muss in application.onCreate erfolgen; eine Prozessprüfung ist nicht notwendig, das SDK prüft dies intern.
        MTCorePrivatesApi.configDebugMode(this, true);

        // Für Versionen vor Tag: V3.5.4-newportal-20210823-gamma.57 muss diese Methode von Frontend-Entwicklern aufgerufen werden, sonst gibt es Probleme beim Klick auf Benachrichtigungen.
        // MTPushPrivatesApi.configOldPushVersion(context.getApplicationContext());

        // Push initialisieren
        // MTPushPrivatesApi.init(this);
    }

}

            
Diesen Codeblock im schwebenden Fenster anzeigen

6. Komponente für Benachrichtigungsklick erstellen

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; /** * Beispiel für das Öffnen einer Activity beim Klick auf eine Benachrichtigung. * * Stellen Sie sicher, dass MTPushPrivatesApi.configOldPushVersion(Context) nicht aufgerufen wird, sonst erfolgt die Navigation nicht auf diese Seite. * <p> * Es ist nicht notwendig, MTPushPrivatesApi.reportNotificationOpened(Context, String, byte, String) aufzurufen; das SDK übernimmt dies intern. */ 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; } // Ab Version 3.4.0 werden keine Objekte mehr verwendet, sondern JSON-Daten 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;

/**
 * Beispiel für das Öffnen einer Activity beim Klick auf eine Benachrichtigung.
 *
 * Stellen Sie sicher, dass MTPushPrivatesApi.configOldPushVersion(Context) nicht aufgerufen wird, sonst erfolgt die Navigation nicht auf diese Seite.
 * <p>
 * Es ist nicht notwendig, MTPushPrivatesApi.reportNotificationOpened(Context, String, byte, String) aufzurufen; das SDK übernimmt dies intern.
 */
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;
            }
            // Ab Version 3.4.0 werden keine Objekte mehr verwendet, sondern JSON-Daten
            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();
        }
    }
        
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

7. AndroidManifest.xml für Benachrichtigungsklick konfigurieren

<?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"> <!-- Erforderlich: Internetberechtigung --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Optional: Vibration für Benachrichtigungen --> <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"> <!-- HTTP-Anfragen zulassen, falls verwendet --> .............................................................. <!-- Beispiel für das Öffnen einer Activity beim Klick auf eine Benachrichtigung --> <activity android:name="com.engagelab.app.component.UserActivity400" android:exported="false" android:launchMode="singleTask" /> <!-- Beispiel für die Navigation mit 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>--> <!-- Whitelist für lokale Transfer-Verifizierung: Ab MTPush 4.2.3 führt das SDK nach Konfiguration von ENGAGELAB_PRIVATES_TRANSFER eine lokale Verifizierung durch. Ist die lokale Verifizierung aktiviert, bitte hier die Ziel-Activity für die Navigation konfigurieren. Bei mehreren Ziel-Activities bitte mit / trennen. --> <meta-data android:name="ENGAGELAB_PRIVATES_TRANSFER" android:value="com.engagelab.app.component.UserActivity400" /> <!-- Google Push erforderlich: Entfernen, falls Google-Anbieter nicht benötigt wird --> <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/mtpush_notification_icon" /> <!-- Huawei Push erforderlich: Entfernen, falls Huawei-Anbieter nicht benötigt wird --> <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">

    <!-- Erforderlich: Internetberechtigung -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- Optional: Vibration für Benachrichtigungen -->
    <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"> <!-- HTTP-Anfragen zulassen, falls verwendet -->

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

        <!-- Beispiel für das Öffnen einer Activity beim Klick auf eine Benachrichtigung -->
        <activity
            android:name="com.engagelab.app.component.UserActivity400"
            android:exported="false"
            android:launchMode="singleTask" />

        <!-- Beispiel für die Navigation mit 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>-->

        <!-- Whitelist für lokale Transfer-Verifizierung: Ab MTPush 4.2.3 führt das SDK nach Konfiguration von ENGAGELAB_PRIVATES_TRANSFER eine lokale Verifizierung durch. Ist die lokale Verifizierung aktiviert, bitte hier die Ziel-Activity für die Navigation konfigurieren. Bei mehreren Ziel-Activities bitte mit / trennen. -->
        <meta-data
            android:name="ENGAGELAB_PRIVATES_TRANSFER"
            android:value="com.engagelab.app.component.UserActivity400" />
                
        <!-- Google Push erforderlich: Entfernen, falls Google-Anbieter nicht benötigt wird -->
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_icon"
            android:resource="@drawable/mtpush_notification_icon" />

        <!-- Huawei Push erforderlich: Entfernen, falls Huawei-Anbieter nicht benötigt wird -->
        <meta-data
            android:name="com.huawei.messaging.default_notification_icon"
            android:resource="@drawable/mtpush_notification_icon" />

    </application>

</manifest>

            
Diesen Codeblock im schwebenden Fenster anzeigen

Weitere Informationen zur Engagelab Integration, Android Push-Benachrichtigungen und SDK Konfiguration finden Sie in unserer Dokumentation.

Jetzt starten:
Demo buchen | Mehr erfahren

icon
Vertrieb kontaktieren