Panduan Integrasi Fungsi MA Android

Tips Penggunaan

Untuk menggunakan fungsi MA dari EngageLab SDK, Anda perlu mengintegrasikan modul AppPush secara bersamaan. Pertama, buat aplikasi di platform AppPush untuk mendapatkan AppKey.

1. Mengimpor Paket di libs

  • Metode Manual
Impor mt-sdk-x.x.x-engagelab.aar dari paket libs ke direktori libs Impor mt-sdk-ma-x.x.x.aar dari paket libs ke direktori libs
              
              Impor mt-sdk-x.x.x-engagelab.aar dari paket libs ke direktori libs
Impor mt-sdk-ma-x.x.x.aar dari paket libs ke direktori libs

            
Tampilkan blok kode ini di jendela mengambang
  • Metode Otomatis
dependencies { // Wajib, paket utama implementation 'com.engagelab:engagelab:5.0.0' // Contoh menggunakan versi 5.0.0. // Opsional, fungsi ma implementation 'com.engagelab.plugin:oth_ma:5.0.0' // Contoh menggunakan versi 5.0.0. }
              
              dependencies {
  // Wajib, paket utama
  implementation 'com.engagelab:engagelab:5.0.0' // Contoh menggunakan versi 5.0.0.
  // Opsional, fungsi ma
  implementation 'com.engagelab.plugin:oth_ma:5.0.0' // Contoh menggunakan versi 5.0.0.
}

            
Tampilkan blok kode ini di jendela mengambang

2. Konfigurasi build.gradle

plugins { id 'com.android.application' } android { ... defaultConfig { // packageName aplikasi, harus sama dengan yang ada di konsol applicationId "com.engagelab.app" ... manifestPlaceholders = [ // appKey, harus sama dengan yang ada di konsol dan memiliki hubungan satu banding satu dengan packageName ENGAGELAB_PRIVATES_APPKEY : "Appkey Anda", // appChannel Engagelab, digunakan untuk statistik channel ENGAGELAB_PRIVATES_CHANNEL: "developer", // proses Engagelab, proses di mana Engagelabsdk berjalan. Catatan: diawali dengan : ENGAGELAB_PRIVATES_PROCESS: ":remote" ] } } dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') }
              
              plugins {
    id 'com.android.application'
}

android {
    ...

    defaultConfig {
        // packageName aplikasi, harus sama dengan yang ada di konsol
        applicationId "com.engagelab.app"
        ...
        manifestPlaceholders = [
            // appKey, harus sama dengan yang ada di konsol dan memiliki hubungan satu banding satu dengan packageName
            ENGAGELAB_PRIVATES_APPKEY : "Appkey Anda",
            // appChannel Engagelab, digunakan untuk statistik channel
            ENGAGELAB_PRIVATES_CHANNEL: "developer",
            // proses Engagelab, proses di mana Engagelabsdk berjalan. Catatan: diawali dengan :
            ENGAGELAB_PRIVATES_PROCESS: ":remote"
        ]
    }
}

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

            
Tampilkan blok kode ini di jendela mengambang

3. Membuat Komponen yang Dibutuhkan

package com.engagelab.app.component; import com.engagelab.privates.common.component.MTCommonService; /** * Developer mewarisi dari MTCommonService, yang dapat menjaga koneksi panjang tetap aktif lebih lama * Implementasi kosong sudah cukup. */ public class UserService extends MTCommonService { }
              
              package com.engagelab.app.component;

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

/**
 * Developer mewarisi dari MTCommonService, yang dapat menjaga koneksi panjang tetap aktif lebih lama
 * Implementasi kosong sudah cukup.
 */
public class UserService extends MTCommonService {

}

            
Tampilkan blok kode ini di jendela mengambang
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; /** * Developer mewarisi dari MTCommonReceiver dan dapat memperoleh callback metode dari SDK * Semua callback berjalan di thread utama. */ public class UserReceiver extends MTCommonReceiver { private static final String TAG = "UserReceiver"; /** * Callback status koneksi panjang * * @param context Tidak null * @param enable Apakah sudah terhubung */ @Override public void onConnectStatus(Context context, boolean enable) { ExampleLogger.i(TAG, "onConnectState:" + enable); if (enable) { // Selama koneksi panjang berhasil sekali, dapat dipanggil di mana saja setelahnya 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;

/**
 * Developer mewarisi dari MTCommonReceiver dan dapat memperoleh callback metode dari SDK
 * Semua callback berjalan di thread utama.
 */
public class UserReceiver extends MTCommonReceiver {

    private static final String TAG = "UserReceiver";

    /**
     * Callback status koneksi panjang
     *
     * @param context Tidak null
     * @param enable  Apakah sudah terhubung
     */
    @Override
    public void onConnectStatus(Context context, boolean enable) {
        ExampleLogger.i(TAG, "onConnectState:" + enable);

        if (enable) { // Selama koneksi panjang berhasil sekali, dapat dipanggil di mana saja setelahnya
            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);
                }
            });
        }
    }
}

            
Tampilkan blok kode ini di jendela mengambang

4. Konfigurasi 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"> <!-- Wajib, izin jaringan --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Opsional, getaran notifikasi --> <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"> <!-- Karena kelas ini memiliki fungsi koneksi panjang, layanan dengan kata Engagelab di nama paketnya dapat langsung dimatikan selama optimasi penghematan daya oleh produsen ponsel --> <!-- Oleh karena itu, developer perlu mewarisi dari com.engagelab.app.component.MTCommonService untuk meningkatkan tingkat bertahannya koneksi panjang, sehingga tujuan meningkatkan tingkat keberhasilan pesan tercapai --> <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> <!-- Digunakan untuk menerima callback layanan Engagelab, termasuk status koneksi panjang/status saklar notifikasi/penerimaan pesan notifikasi/klik pesan notifikasi/penghapusan pesan notifikasi/pesan kustom/callback token vendor --> <!-- Tidak perlu mengonfigurasi sub-proses. Callback ini berada di proses utama, sehingga memudahkan pengoperasian bisnis --> <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">
        
    <!-- Wajib, izin jaringan -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- Opsional, getaran notifikasi -->
    <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">

        <!-- Karena kelas ini memiliki fungsi koneksi panjang, layanan dengan kata Engagelab di nama paketnya dapat langsung dimatikan selama optimasi penghematan daya oleh produsen ponsel -->
        <!-- Oleh karena itu, developer perlu mewarisi dari com.engagelab.app.component.MTCommonService untuk meningkatkan tingkat bertahannya koneksi panjang, sehingga tujuan meningkatkan tingkat keberhasilan pesan tercapai -->
        <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>

        <!-- Digunakan untuk menerima callback layanan Engagelab, termasuk status koneksi panjang/status saklar notifikasi/penerimaan pesan notifikasi/klik pesan notifikasi/penghapusan pesan notifikasi/pesan kustom/callback token vendor -->
        <!-- Tidak perlu mengonfigurasi sub-proses. Callback ini berada di proses utama, sehingga memudahkan pengoperasian bisnis -->
        <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>

            
Tampilkan blok kode ini di jendela mengambang

5. Inisialisasi

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(); // Harus dikonfigurasi di application.onCreate, jangan melakukan pengecekan proses, SDK sudah melakukan pengecekan secara internal MTCorePrivatesApi.configDebugMode(this, true); // Inisialisasi push untuk push // MTPushPrivatesApi.init(this); } }
              
              package com.engagelab.app;

import android.app.Application;

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

public class MainApplication extends Application {

    private static final String TAG = "MainApplication";

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

        // Harus dikonfigurasi di application.onCreate, jangan melakukan pengecekan proses, SDK sudah melakukan pengecekan secara internal
        MTCorePrivatesApi.configDebugMode(this, true);

        // Inisialisasi push untuk push
        // MTPushPrivatesApi.init(this);

    }

}

            
Tampilkan blok kode ini di jendela mengambang
icon
Hubungi Sales