Android MA-Funktionsintegrationsleitfaden

Anwendungstipps

Um die MA-Funktion des EngageLab SDK zu nutzen, müssen Sie gleichzeitig das AppPush-Modul integrieren, und zunächst eine Anwendung auf der AppPush-Plattform erstellen, um den AppKey zu erhalten.

Pakete in libs importieren

  • Manueller Weg
Importieren Sie mt-sdk-x.x.x-engagelab.aar aus dem libs-Paket in das libs-Verzeichnis Importieren Sie mt-sdk-ma-x.x.x.aar aus dem libs-Paket in das libs-Verzeichnis
              
                  Importieren Sie mt-sdk-x.x.x-engagelab.aar aus dem libs-Paket in das libs-Verzeichnis
    Importieren Sie mt-sdk-ma-x.x.x.aar aus dem libs-Paket in das libs-Verzeichnis

            
Diesen Codeblock im schwebenden Fenster anzeigen
  • Automatischer Weg
dependencies { // Notwendig, Hauptpaket implementation 'com.engagelab:engagelab:5.0.0' // Beispiel: Version 5.0.0. // Optional, MA-Funktion implementation 'com.engagelab.plugin:oth_ma:5.0.0' // Beispiel: Version 5.0.0. }
              
              dependencies {
  // Notwendig, Hauptpaket
  implementation 'com.engagelab:engagelab:5.0.0' // Beispiel: Version 5.0.0.
  // Optional, MA-Funktion
  implementation 'com.engagelab.plugin:oth_ma:5.0.0' // Beispiel: Version 5.0.0.
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

1. build.gradle-Konfiguration

plugins { id 'com.android.application' } android { ... defaultConfig { // App-PackageName, der mit dem in der Konsole übereinstimmen muss applicationId "com.engagelab.app" ... manifestPlaceholders = [ // AppKey, muss mit dem auf der Konsole übereinstimmen und steht in 1:1-Beziehung zum PackageName ENGAGELAB_PRIVATES_APPKEY : "Ihr AppKey", // Engagelab appChannel, dient der Kanalstatistik ENGAGELAB_PRIVATES_CHANNEL: "developer", // Engagelab-Prozess, der Prozess, in dem das EngageLab SDK läuft. Hinweis: beginnt mit ':remote' ENGAGELAB_PRIVATES_PROCESS: ":remote" ] } } dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') }
              
              plugins {
    id 'com.android.application'
}

android {
    ...

    defaultConfig {
        // App-PackageName, der mit dem in der Konsole übereinstimmen muss
        applicationId "com.engagelab.app"
        ...
                
        manifestPlaceholders = [
                // AppKey, muss mit dem auf der Konsole übereinstimmen und steht in 1:1-Beziehung zum PackageName
                ENGAGELAB_PRIVATES_APPKEY : "Ihr AppKey",
                // Engagelab appChannel, dient der Kanalstatistik
                ENGAGELAB_PRIVATES_CHANNEL: "developer",
                // Engagelab-Prozess, der Prozess, in dem das EngageLab SDK läuft. Hinweis: beginnt mit ':remote'
                ENGAGELAB_PRIVATES_PROCESS: ":remote"
        ]
    }
}

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

2. Notwendige Komponenten erstellen

package com.engagelab.app.component; import com.engagelab.privates.common.component.MTCommonService; /** * Entwickler:innen erben von MTCommonService, um die Langzeitverbindung länger aufrechtzuerhalten. * <p> * Eine leere Implementierung ist ausreichend. */ public class UserService extends MTCommonService { }
              
              package com.engagelab.app.component;

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

/**
 * Entwickler:innen erben von MTCommonService, um die Langzeitverbindung länger aufrechtzuerhalten.
 * <p>
 * Eine leere Implementierung ist ausreichend.
 */
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:innen erben von MTCommonReceiver und können die Methoden-Callbacks des SDK erhalten. * <p> * Alle Callbacks laufen im Hauptthread. */ public class UserReceiver extends MTCommonReceiver { private static final String TAG = "UserReceiver"; /** * Langzeitverbindungsstatus-Callback * * @param context Nicht null * @param enable Gibt an, ob eine Verbindung besteht */ @Override public void onConnectStatus(Context context, boolean enable) { ExampleLogger.i(TAG, "onConnectState:" + enable); if (enable) { // Sobald die Langzeitverbindung einmal erfolgreich hergestellt wurde, kann sie später überall aufgerufen werden MTMAApi.getInstance(this).start(new CallBack() { @Override public void onCallBack(int code, String msg) { Log.e(TAG, "start code:" + code); Log.e(TAG, "startmsg:" + msg); } }); } } }
              
              package com.engagelab.app.component;

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

import java.util.Arrays;

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

/**
 * Entwickler:innen erben von MTCommonReceiver und können die Methoden-Callbacks des SDK erhalten.
 * <p>
 * Alle Callbacks laufen im Hauptthread.
 */
public class UserReceiver extends MTCommonReceiver {

    private static final String TAG = "UserReceiver";

    /**
     * Langzeitverbindungsstatus-Callback
     *
     * @param context Nicht null
     * @param enable  Gibt an, ob eine Verbindung besteht
     */
    @Override
    public void onConnectStatus(Context context, boolean enable) {
        ExampleLogger.i(TAG, "onConnectState:" + enable);

        if (enable) { // Sobald die Langzeitverbindung einmal erfolgreich hergestellt wurde, kann sie später überall aufgerufen werden
            MTMAApi.getInstance(this).start(new CallBack() {
                    @Override
                    public void onCallBack(int code, String msg) {
                        Log.e(TAG, "start code:" + code);
                        Log.e(TAG, "startmsg:" + msg);

                    }
                });
        }


    }

}

            
Diesen Codeblock im schwebenden Fenster anzeigen

3. AndroidManifest.xml-Konfiguration

<?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"> <!-- Notwendig, Netzwerkberechtigung --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Optional, Benachrichtigungsvibration --> <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"> <!-- Wenn HTTP-Anfragen verwendet werden, muss die Nutzung von HTTP erlaubt sein --> ..................................................................................................... <!-- Da diese Klasse die Langzeitverbindungsfunktion besitzt, kann der Service mit dem Namensteil Engagelab im Paketnamen durch die Energiesparoptimierung des Geräteherstellers direkt beendet werden --> <!-- Daher sollten Entwickler:innen von com.engagelab.app.component.MTCommonService erben, um die Überlebensrate der Langzeitverbindung zu erhöhen und so die Nachrichten-Zustellrate 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> <!-- Dient zum Empfangen der Callback-Methoden der Engagelab-Services, einschließlich Langzeitverbindungsstatus/Benachrichtigungsschalterstatus/Benachrichtigungsnachricht empfangen/Benachrichtigungsnachricht geklickt/Benachrichtigungsnachricht gelöscht/Custom Message/Vendor Token Callback --> <!-- Es ist keine Konfiguration eines Subprozesses notwendig. Dieser Callback läuft im Hauptprozess und ist somit für Geschäftslogik geeignet --> <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">
        
    <!-- Notwendig, Netzwerkberechtigung -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- Optional, Benachrichtigungsvibration -->
    <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"> <!-- Wenn HTTP-Anfragen verwendet werden, muss die Nutzung von HTTP erlaubt sein -->

                .....................................................................................................
                
        <!-- Da diese Klasse die Langzeitverbindungsfunktion besitzt, kann der Service mit dem Namensteil Engagelab im Paketnamen durch die Energiesparoptimierung des Geräteherstellers direkt beendet werden -->
        <!-- Daher sollten Entwickler:innen von com.engagelab.app.component.MTCommonService erben, um die Überlebensrate der Langzeitverbindung zu erhöhen und so die Nachrichten-Zustellrate 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>

        <!-- Dient zum Empfangen der Callback-Methoden der Engagelab-Services, einschließlich Langzeitverbindungsstatus/Benachrichtigungsschalterstatus/Benachrichtigungsnachricht empfangen/Benachrichtigungsnachricht geklickt/Benachrichtigungsnachricht gelöscht/Custom Message/Vendor Token Callback -->
        <!-- Es ist keine Konfiguration eines Subprozesses notwendig. Dieser Callback läuft im Hauptprozess und ist somit für Geschäftslogik geeignet -->
        <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

4. Initialisierung

package com.engagelab.app; import android.app.Application; import com.engagelab.privates.core.api.Address; import com.engagelab.privates.core.api.MTCorePrivatesApi; import com.engagelab.privates.push.api.MTPushPrivatesApi; public class MainApplication extends Application { private static final String TAG = "MainApplication"; @Override public void onCreate() { super.onCreate(); // Muss in application.onCreate konfiguriert werden; eine Prozessprüfung ist nicht notwendig, da das SDK dies intern übernimmt MTCorePrivatesApi.configDebugMode(this, true); // Initialisierung für Push-Benachrichtigungen // MTPushPrivatesApi.init(this); } }
              
              package com.engagelab.app;

import android.app.Application;

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

public class MainApplication extends Application {

    private static final String TAG = "MainApplication";

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

        // Muss in application.onCreate konfiguriert werden; eine Prozessprüfung ist nicht notwendig, da das SDK dies intern übernimmt
        MTCorePrivatesApi.configDebugMode(this, true);

        // Initialisierung für Push-Benachrichtigungen
        // MTPushPrivatesApi.init(this);

    }

}

            
Diesen Codeblock im schwebenden Fenster anzeigen
icon
Vertrieb kontaktieren