package com.jdroid.android.firebase.analytics; import android.app.Activity; import android.os.Bundle; import com.google.firebase.analytics.FirebaseAnalytics; import com.jdroid.android.analytics.AnalyticsTracker; import com.jdroid.android.application.AbstractApplication; import com.jdroid.android.social.AccountType; import com.jdroid.android.social.SocialAction; import com.jdroid.android.usecase.AbstractUseCase; import com.jdroid.android.utils.DeviceUtils; import com.jdroid.android.utils.ScreenUtils; import java.util.List; import java.util.Map; public class FirebaseAnalyticsTracker extends AbstractFirebaseAnalyticsTracker implements AnalyticsTracker { private static final String INSTALLATION_SOURCE_USER_PROPERTY = "INSTALLATION_SOURCE"; private static final String DEVICE_YEAR_CLASS_USER_PROPERTY = "DEVICE_YEAR_CLASS"; private static final String SCREEN_WIDTH = "SCREEN_WIDTH"; private static final String SCREEN_HEIGHT = "SCREEN_HEIGHT"; private static final String SCREEN_DENSITY = "SCREEN_DENSITY"; private static final String SCREEN_DENSITY_DPI = "SCREEN_DENSITY_DPI"; private Boolean firstTrackingSent = false; @Override public void onInitExceptionHandler(Map<String, String> metadata) { // Do nothing } @Override public void trackFatalException(Throwable throwable, List<String> tags) { // Do nothing } @Override public void trackHandledException(Throwable throwable, List<String> tags) { // Do nothing } @Override public void trackErrorBreadcrumb(String message) { // Do nothing } @Override public void onActivityStart(Class<? extends Activity> activityClass, String referrer, Object data) { if (!firstTrackingSent) { getFirebaseAnalyticsHelper().setUserProperty(DEVICE_YEAR_CLASS_USER_PROPERTY, DeviceUtils.getDeviceYearClass().toString()); getFirebaseAnalyticsHelper().setUserProperty(SCREEN_WIDTH, ScreenUtils.getScreenWidthDp().toString()); getFirebaseAnalyticsHelper().setUserProperty(SCREEN_HEIGHT, ScreenUtils.getScreenHeightDp().toString()); getFirebaseAnalyticsHelper().setUserProperty(SCREEN_DENSITY, ScreenUtils.getScreenDensity()); getFirebaseAnalyticsHelper().setUserProperty(SCREEN_DENSITY_DPI, ScreenUtils.getDensityDpi().toString()); getFirebaseAnalyticsHelper().setUserProperty(INSTALLATION_SOURCE_USER_PROPERTY, AbstractApplication.get().getInstallationSource()); firstTrackingSent = true; } } @Override public void onActivityResume(Activity activity) { // Do nothing } @Override public void onActivityPause(Activity activity) { // Do nothing } @Override public void onActivityStop(Activity activity) { // Do nothing } @Override public void onActivityDestroy(Activity activity) { // Do nothing } @Override public void onFragmentStart(String screenViewName) { // Do nothing } @Override public void trackNotificationDisplayed(String notificationName) { Bundle bundle = new Bundle(); bundle.putString("notificationName", notificationName); getFirebaseAnalyticsHelper().sendEvent("DisplayNotification", bundle); } @Override public void trackNotificationOpened(String notificationName) { Bundle bundle = new Bundle(); bundle.putString("notificationName", notificationName); getFirebaseAnalyticsHelper().sendEvent("OpenNotification", bundle); } @Override public void trackEnjoyingApp(Boolean enjoying) { Bundle bundle = new Bundle(); bundle.putString("enjoying", enjoying.toString()); getFirebaseAnalyticsHelper().sendEvent("EnjoyingApp", bundle); } @Override public void trackRateOnGooglePlay(Boolean rate) { Bundle bundle = new Bundle(); bundle.putString("rate", rate.toString()); getFirebaseAnalyticsHelper().sendEvent("RateOnGooglePlay", bundle); } @Override public void trackGiveFeedback(Boolean feedback) { Bundle bundle = new Bundle(); bundle.putString("feedback", feedback.toString()); getFirebaseAnalyticsHelper().sendEvent("GiveFeedback", bundle); } @Override public void trackWidgetAdded(String widgetName) { Bundle bundle = new Bundle(); bundle.putString("widgetName", widgetName); getFirebaseAnalyticsHelper().sendEvent("AddWidget", bundle); } @Override public void trackWidgetRemoved(String widgetName) { Bundle bundle = new Bundle(); bundle.putString("widgetName", widgetName); getFirebaseAnalyticsHelper().sendEvent("RemoveWidget", bundle); } @Override public void trackUriOpened(String screenName, String referrer) { Bundle bundle = new Bundle(); bundle.putString("screenName", screenName); bundle.putString("referrer", referrer); getFirebaseAnalyticsHelper().sendEvent("OpenUri", bundle); } @Override public void trackUseCaseTiming(Class<? extends AbstractUseCase> useCaseClass, long executionTime) { Bundle bundle = new Bundle(); bundle.putString("useCase", useCaseClass.getSimpleName()); bundle.putLong(FirebaseAnalytics.Param.VALUE, executionTime); getFirebaseAnalyticsHelper().sendEvent("ExecuteUseCase", bundle); } @Override public void trackServiceTiming(String trackingVariable, String trackingLabel, long executionTime) { Bundle bundle = new Bundle(); bundle.putString("service", trackingVariable); bundle.putString("label", trackingLabel); bundle.putLong(FirebaseAnalytics.Param.VALUE, executionTime); getFirebaseAnalyticsHelper().sendEvent("ExecuteService", bundle); } @Override public void trackSocialInteraction(AccountType accountType, SocialAction socialAction, String socialTarget) { Bundle bundle = new Bundle(); if (accountType != null) { bundle.putString("accountType", accountType.getFriendlyName()); } bundle.putString("socialTarget", socialTarget); getFirebaseAnalyticsHelper().sendEvent(socialAction.getName(), bundle); } @Override public void trackSendAppInvitation(String invitationId) { Bundle bundle = new Bundle(); bundle.putString(FirebaseAnalytics.Param.ITEM_ID, invitationId); getFirebaseAnalyticsHelper().sendEvent("sendAppInvitation", bundle); } }