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










