Created
July 21, 2015 21:23
-
-
Save Aracem/5d7be915af98d8ab9f11 to your computer and use it in GitHub Desktop.
Aspect Oriented Development with a Tracking Sample
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. | |
* <p/> | |
* Please use this implementation instead of other more specific. | |
*/ | |
public class MasterTrackingHelper implements TrackingHelper { | |
private List<TrackingHelper> 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<String, Object> 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); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 java.util.Map; | |
public interface TrackingHelper { | |
void initializeTrackingInApplication(Application application); | |
/** | |
* Track the end of an application session. We know that there aren't any form to know when the app finish but some | |
* trackers needs to know when more or less the user exit the app to flush the info or other stuff. | |
* Call this method in your onDestroy MainActivity method | |
*/ | |
void onFinalizeAppTracking(Activity activity); | |
void onStartPage(Context context); | |
void onResumePage(Context context); | |
void onPausePage(Context context); | |
void trackVisitEvent(Context context, VisitEventInfo eventInfo); | |
void trackClickEvent(Context context, ClickEventInfo eventInfo); | |
void trackEvent(@NonNull String eventName, @Nullable Map<String, Object> eventInfo); | |
void identifyUser(@Nullable User user); | |
void resetUser(); | |
void updateSuperproperties(@Nullable User user); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment