package com.jdroid.android.analytics; import android.app.Activity; import com.jdroid.android.social.AccountType; import com.jdroid.android.social.SocialAction; import com.jdroid.android.usecase.AbstractUseCase; import com.jdroid.java.analytics.BaseAnalyticsTracker; import java.util.List; import java.util.Map; public interface AnalyticsTracker extends BaseAnalyticsTracker { // Error handling public void onInitExceptionHandler(Map<String, String> metadata); public void trackFatalException(Throwable throwable, List<String> tags); public void trackHandledException(Throwable throwable, List<String> tags); public void trackErrorBreadcrumb(String message); // Activity/fragment life cycle public void onActivityStart(Class<? extends Activity> activityClass, String referrer, Object data); public void onActivityResume(Activity activity); public void onActivityPause(Activity activity); public void onActivityStop(Activity activity); public void onActivityDestroy(Activity activity); public void onFragmentStart(String screenViewName); // Notifications public void trackNotificationDisplayed(String notificationName); public void trackNotificationOpened(String notificationName); // Feedback public void trackEnjoyingApp(Boolean enjoying); public void trackRateOnGooglePlay(Boolean rate); public void trackGiveFeedback(Boolean feedback); // Widgets public void trackWidgetAdded(String widgetName); public void trackWidgetRemoved(String widgetName); // App Invitations public void trackSendAppInvitation(String invitationId); // More public void trackUriOpened(String screenName, String referrer); public void trackSocialInteraction(AccountType accountType, SocialAction socialAction, String socialTarget); public void trackUseCaseTiming(Class<? extends AbstractUseCase> useCaseClass, long executionTime); public void trackServiceTiming(String trackingVariable, String trackingLabel, long executionTime); }