package com.aracem.sample.tracking; import android.app.Activity; import android.app.Application; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.aracem.sample.tracking.trackingservice.MixpanelTrackingHelper; import com.aracem.sample.tracking.trackingservice.GoogleAnalyticsTrackingHelper; import com.aracem.sample.tracking.trackingservice.FlurryTrackingHelper; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Master {@link TrackingHelper} that encapsulates all tracking implementations and helps you call all the * tracking libraries without doing nothing. *

* Please use this implementation instead of other more specific. */ public class MasterTrackingHelper implements TrackingHelper { private List mTrackersList = new ArrayList<>(); public MasterTrackingHelper() { mTrackersList.add(new MixpanelTrackingHelper()); mTrackersList.add(new GoogleAnalyticsTrackingHelper()); mTrackersList.add(new FlurryTrackingHelper()); } @Override public void initializeTrackingInApplication(Application application) { for (TrackingHelper tracker : mTrackersList) { tracker.initializeTrackingInApplication(application); } } @Override public void onFinalizeAppTracking(Activity activity) { for (TrackingHelper tracker : mTrackersList) { tracker.onFinalizeAppTracking(activity); } } @Override public void onStartPage(Context context) { for (TrackingHelper tracker : mTrackersList) { tracker.onStartPage(context); } } @Override public void onResumePage(Context context) { for (TrackingHelper tracker : mTrackersList) { tracker.onResumePage(context); } } @Override public void onPausePage(Context context) { for (TrackingHelper tracker : mTrackersList) { tracker.onPausePage(context); } } @Override public void trackEvent(@NonNull String eventName, @Nullable Map eventInfo) { for (TrackingHelper tracker : mTrackersList) { tracker.trackEvent(eventName, eventInfo); } } @Override public void trackVisitEvent(Context context, VisitEventInfo eventInfo) { for (TrackingHelper tracker : mTrackersList) { tracker.trackVisitEvent(context, eventInfo); } } @Override public void trackClickEvent(Context context, ClickEventInfo eventInfo) { for (TrackingHelper tracker : mTrackersList) { tracker.trackClickEvent(context, eventInfo); } } @Override public void identifyUser(@Nullable User user) { for (TrackingHelper tracker : mTrackersList) { tracker.identifyUser(user); } } @Override public void resetUser() { for (TrackingHelper tracker : mTrackersList) { tracker.resetUser(); } } @Override public void updateSuperproperties(@Nullable User user) { for (TrackingHelper tracker : mTrackersList) { tracker.updateSuperproperties(user); } } }