package com.lechucksoftware.proxy.proxysettings.utils;
import android.content.Context;
import android.text.TextUtils;
import com.crashlytics.android.Crashlytics;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import com.lechucksoftware.proxy.proxysettings.BuildConfig;
import java.util.Map;
import io.fabric.sdk.android.Fabric;
import timber.log.Timber;
public class EventsReporting
{
private static boolean analyticsSetupDone;
private static boolean crashLyticsSetupDone;
private Context context;
private Tracker defaultTracker;
public EventsReporting(Context ctx)
{
context = ctx;
analyticsSetupDone = false;
crashLyticsSetupDone = false;
setup();
}
public void setup()
{
analyticsSetupDone = setupAnalytics(context);
crashLyticsSetupDone = setupCrashLytics(context);
}
private boolean setupCrashLytics(Context ctx)
{
Boolean setupDone;
if (!Fabric.isInitialized()) {
final Fabric fabric = new Fabric.Builder(ctx)
.kits(new Crashlytics())
.debuggable(true)
.build();
Fabric.with(fabric);
}
setupDone = true;
return setupDone;
}
public boolean setupAnalytics(Context upAnalytics)
{
String key;
Boolean setupDone;
key = BuildConfig.ANALYTICS_TRACK_ID;
if (!TextUtils.isEmpty(key))
{
defaultTracker = GoogleAnalytics.getInstance(context).newTracker(BuildConfig.ANALYTICS_TRACK_ID);
defaultTracker.setAppVersion(String.valueOf(BuildConfig.VERSION_CODE));
defaultTracker.enableExceptionReporting(true);
defaultTracker.enableAutoActivityTracking(true);
// defaultTracker.setAppName(ApplicationStatistics.getInstallationDetails(context));
setupDone = true;
Timber.d("Setup of Analytics completed");
}
else
{
setupDone = false;
Timber.e("Cannot perform setup of Analytics");
}
return setupDone;
}
public void sendEvent(final int categoryId, final int actionId, final int labelId, final Long eventValue)
{
String category = context.getString(categoryId);
String action = context.getString(actionId);
String label = context.getString(labelId);
sendEvent(category, action, label, eventValue);
}
public void sendEvent(final String category, final String action, final String label, final Long eventValue)
{
String msg = String.format("Event Cat:'%s', Act:'%s' Lab:'%s' Ev:'%d'", category, action, label, eventValue);
if (analyticsSetupDone)
{
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder();
builder.setCategory(category); // Event category (required)
builder.setAction(action); // Event action (required)
builder.setLabel(label); // Event label
if (eventValue != null)
builder.setValue(eventValue);
Map<String, String> map = builder.build();
Timber.d(msg);
defaultTracker.send(map);
}
else
{
Timber.e(msg);
}
}
}