Flutter MoEngage Tracking Event :Practical Guide

Lavkant Kachhwaha
2 min readMay 15, 2022

Prerequisite

MoEngage Dashboard Access
Flutter SDK

Get Moengage App ID from Dashboard -> General -> App ID

moengage_flutter 4.1.0

https://pub.dev/packages/moengage_flutter

Android

android → app → build.gradle

// MOENGAGE EVENTS DEPENDENCY
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation("androidx.core:core:1.3.1")
implementation("androidx.appcompat:appcompat:1.2.0")
implementation("androidx.lifecycle:lifecycle-process:2.2.0")
implementation("com.moengage:moe-android-sdk:11.6.00")
implementation("com.google.firebase:firebase-messaging:20.3.0")
implementation("com.moengage:inbox-core:1.0.00")

MoEngageInit.java

import android.app.Application;
import com.moengage.core.DataCenter;
import com.moengage.core.LogLevel;
import com.moengage.core.MoEngage;
import com.moengage.core.config.LogConfig;
import com.moengage.flutter.MoEInitializer;

public class MoEngageInit extends Application {
@Override
public void onCreate() {
super.onCreate();
//XXX -> APP IDMoEngage moEngage = new MoEngage.Builder(this, "XXX")
// .setDataCenter(DataCenter.DATA_CENTER_3)
.configureLogs(new LogConfig(LogLevel.VERBOSE, false))
.build();
MoEngage.initialise(moEngage);
}
}

Don’t Forget to add — AndroidManifest.xml

Application ->

android:name=”.MoEngageInit”
android:usesCleartextTraffic="true"

Flutter / Dart

final MoEngageFlutter _moengagePlugin = MoEngageFlutter();
final MoEProperties _moeProperties = MoEProperties();
initialise() async {
_moengagePlugin.initialise();
}

Initialise MoEngage SDK from Entry Point -> App.dart/Bootstrap.dart

Adding Events

final MoEProperties _moeProperties = MoEProperties();addEvent({required String eventName, Map<String, dynamic>? payload})
{
//INTIAL PAYLOAD CONTAINS ALL THE DATA
//COPY DEFAULT PAYLOAD TO FINAL PAYLOAD
final moEPropertiesToSend = _moeProperties;//IF USER SEND ANY EXTRA PAYLOAD, ADD TO FINAL PAYLOAD
if (payload != null)
payload.forEach((key, value) {
moEPropertiesToSend.addAttribute(key, value);
});
//PUSH EVENT WITH PAYLOAD TO MOENGAGE
try {
_moengagePlugin.trackEvent(eventName,moEPropertiesToSend,);
} catch (e) {
log(e.toString());
}
log("TRIGGED EVENT NAME: $eventName , PAYLOAD : ${moEPropertiesToSend.toString()}",);
}

Call addEvent Method With Event Name and Event Payload

final _appLaunch ="app_launch";final _payload = {
"TEST_KEY1":"TEST_VALUE1",
"TEsT_KEY2":"TEST_VALUE2"
};
addEvent(eventName: _appLaunch,payload: _payload);

Additional Resources

#ANDROID SDK
https://developers.moengage.com/hc/en-us/articles/4404305258516-
Android-SDK-Initialization
#LOGS
https://developers.moengage.com/hc/en-us/articles/4403843909396-Troubleshooting-and-FAQs
#ENVIRONMENT
https://help.moengage.com/hc/en-us/articles/210845683-Live-Test-environments

Final Results

*while testing, Use Android Phones instead of emulators

--

--