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

