Flutter MoEngage Tracking Event :Practical Guide
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 PAYLOADfinal 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