Skip to content

Commit

Permalink
Convert to Firebase Analytics and Crashlytics
Browse files Browse the repository at this point in the history
  • Loading branch information
abaker committed Apr 25, 2018
1 parent db582a7 commit 33bf34f
Show file tree
Hide file tree
Showing 12 changed files with 92 additions and 185 deletions.
8 changes: 6 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
apply plugin: 'com.android.application'
apply plugin: 'checkstyle'
apply plugin: 'io.fabric'

repositories {
jcenter()
Expand Down Expand Up @@ -108,7 +109,7 @@ configurations {

final DAGGER_VERSION = '2.9'
final BUTTERKNIFE_VERSION = '8.8.1'
final GPS_VERSION = '12.0.1'
final GPS_VERSION = '15.0.0'
final SUPPORT_VERSION = '27.1.1'
final ROOM_VERSION = '1.1.0-beta3'
final STETHO_VERSION = '1.5.0'
Expand Down Expand Up @@ -169,8 +170,9 @@ dependencies {
implementation 'com.google.api-client:google-api-client-android:1.22.0'
implementation 'com.android.billingclient:billing:1.0'

googleplayImplementation 'com.crashlytics.sdk.android:crashlytics:2.9.1'
googleplayImplementation "com.google.firebase:firebase-core:${GPS_VERSION}"
googleplayImplementation "com.google.android.gms:play-services-location:${GPS_VERSION}"
googleplayImplementation "com.google.android.gms:play-services-analytics:${GPS_VERSION}"
googleplayImplementation "com.google.android.gms:play-services-auth:${GPS_VERSION}"
googleplayImplementation "com.google.android.gms:play-services-places:${GPS_VERSION}"

Expand All @@ -184,3 +186,5 @@ dependencies {
androidTestImplementation "com.android.support.test:rules:${TESTING_SUPPORT_VERSION}"
androidTestImplementation "com.android.support:support-annotations:${SUPPORT_VERSION}"
}

apply plugin: 'com.google.gms.google-services'
42 changes: 42 additions & 0 deletions app/google-services.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"project_info": {
"project_number": "363426363175",
"firebase_url": "https://tasks-98543.firebaseio.com",
"project_id": "tasks-98543",
"storage_bucket": "tasks-98543.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:363426363175:android:9bc4739db40ecb39",
"android_client_info": {
"package_name": "org.tasks"
}
},
"oauth_client": [
{
"client_id": "363426363175-n0862rti6ect01fr3t4m229hqvvu1s8a.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyACOYpQZEIkpF2EykbufMOZXn9QVrP_5lI"
}
],
"services": {
"analytics_service": {
"status": 1
},
"appinvite_service": {
"status": 1,
"other_platform_oauth_client": []
},
"ads_service": {
"status": 2
}
}
}
],
"configuration_version": "1"
}
4 changes: 0 additions & 4 deletions app/src/debug/res/xml/google_analytics.xml

This file was deleted.

4 changes: 4 additions & 0 deletions app/src/googleplay/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@

<application tools:ignore="GoogleAppIndexingWarning">

<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false"/>

<meta-data
android:name="com.google.android.backup.api_key"
android:value="AEdPqrEAAAAI49v5bBusi_bq1bgLBB1LIsepNV0eBrFkQrBZkw"/>
Expand Down
90 changes: 31 additions & 59 deletions app/src/googleplay/java/org/tasks/analytics/Tracker.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,70 +3,43 @@
import static org.tasks.billing.BillingClient.BillingResponseToString;

import android.content.Context;
import android.os.Bundle;
import com.android.billingclient.api.BillingClient.BillingResponse;
import com.google.android.gms.analytics.ExceptionParser;
import com.google.android.gms.analytics.ExceptionReporter;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.StandardExceptionParser;
import com.google.common.base.Strings;
import com.crashlytics.android.Crashlytics;
import com.google.firebase.analytics.FirebaseAnalytics;
import com.google.firebase.analytics.FirebaseAnalytics.Event;
import com.google.firebase.analytics.FirebaseAnalytics.Param;
import io.fabric.sdk.android.Fabric;
import javax.inject.Inject;
import org.tasks.BuildConfig;
import org.tasks.R;
import org.tasks.injection.ApplicationScope;
import org.tasks.injection.ForApplication;
import org.tasks.preferences.Preferences;
import timber.log.Timber;

@ApplicationScope
public class Tracker {

private final GoogleAnalytics analytics;
private final com.google.android.gms.analytics.Tracker tracker;
private final ExceptionParser exceptionParser;
private final FirebaseAnalytics analytics;
private final Context context;
private final boolean enabled;

@Inject
public Tracker(@ForApplication Context context) {
public Tracker(@ForApplication Context context, Preferences preferences) {
this.context = context;
analytics = GoogleAnalytics.getInstance(context);
tracker = analytics.newTracker(R.xml.google_analytics);
tracker.setAppVersion(Integer.toString(BuildConfig.VERSION_CODE));
final StandardExceptionParser standardExceptionParser =
new StandardExceptionParser(context, null);
exceptionParser =
(thread, throwable) -> {
StringBuilder stack =
new StringBuilder()
.append(standardExceptionParser.getDescription(thread, throwable))
.append("\n")
.append(throwable.getClass().getName())
.append("\n");
for (StackTraceElement element : throwable.getStackTrace()) {
stack.append(element.toString()).append("\n");
}
return stack.toString();
};
ExceptionReporter reporter =
new ExceptionReporter(tracker, Thread.getDefaultUncaughtExceptionHandler(), context);
reporter.setExceptionParser(exceptionParser);
Thread.setDefaultUncaughtExceptionHandler(reporter);
}

public void setTrackingEnabled(boolean enabled) {
analytics.setAppOptOut(!enabled);
enabled = preferences.isTrackingEnabled();
if (enabled) {
analytics = FirebaseAnalytics.getInstance(context);
Fabric.with(context, new Crashlytics());
} else {
analytics = null;
}
}

public void reportException(Throwable t) {
reportException(Thread.currentThread(), t);
}

public void reportException(Thread thread, Throwable t) {
Timber.e(t);
tracker.send(
new HitBuilders.ExceptionBuilder()
.setDescription(exceptionParser.getDescription(thread.getName(), t))
.setFatal(false)
.build());
if (enabled) {
Crashlytics.logException(t);
}
}

public void reportEvent(Tracking.Events event) {
Expand All @@ -85,21 +58,20 @@ public void reportEvent(Tracking.Events event, String action, String label) {
reportEvent(event.category, action, label);
}

private void reportEvent(int category, String action, String label) {
HitBuilders.EventBuilder eventBuilder =
new HitBuilders.EventBuilder().setCategory(context.getString(category)).setAction(action);
if (!Strings.isNullOrEmpty(label)) {
eventBuilder.setLabel(label);
private void reportEvent(int categoryRes, String action, String label) {
if (!enabled) {
return;
}
tracker.send(eventBuilder.build());
}

public void reportIabResult(@BillingResponse int response, String sku) {
tracker.send(
new HitBuilders.EventBuilder()
.setCategory(context.getString(R.string.tracking_category_iab))
.setAction(sku)
.setLabel(BillingResponseToString(response))
.build());
if (!enabled) {
return;
}

Bundle bundle = new Bundle();
bundle.putString(Param.ITEM_ID, sku);
bundle.putString(Param.SUCCESS, BillingResponseToString(response));
analytics.logEvent(Event.ECOMMERCE_PURCHASE, bundle);
}
}

This file was deleted.

4 changes: 0 additions & 4 deletions app/src/main/java/org/tasks/Tasks.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.jakewharton.threetenabp.AndroidThreeTen;
import com.todoroo.astrid.service.StartupService;
import javax.inject.Inject;
import org.tasks.analytics.Tracker;
import org.tasks.injection.ApplicationComponent;
import org.tasks.injection.InjectingApplication;
import org.tasks.jobs.JobCreator;
Expand All @@ -16,7 +15,6 @@ public class Tasks extends InjectingApplication {

@Inject StartupService startupService;
@Inject Preferences preferences;
@Inject Tracker tracker;
@Inject FlavorSetup flavorSetup;
@Inject BuildSetup buildSetup;
@Inject ThemeCache themeCache;
Expand All @@ -28,8 +26,6 @@ public class Tasks extends InjectingApplication {
public void onCreate() {
super.onCreate();

tracker.setTrackingEnabled(preferences.isTrackingEnabled());

if (!buildSetup.setup()) {
return;
}
Expand Down
10 changes: 0 additions & 10 deletions app/src/main/java/org/tasks/injection/ApplicationModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
import com.todoroo.astrid.provider.Astrid2TaskProvider;
import dagger.Module;
import dagger.Provides;
import java.util.concurrent.Executor;
import javax.inject.Named;
import org.tasks.ErrorReportingSingleThreadExecutor;
import org.tasks.analytics.Tracker;
import org.tasks.data.AlarmDao;
import org.tasks.data.CaldavDao;
Expand Down Expand Up @@ -53,13 +50,6 @@ public Context getApplicationContext() {
return context;
}

@Provides
@ApplicationScope
@Named("iab-executor")
public Executor getIabExecutor(Tracker tracker) {
return new ErrorReportingSingleThreadExecutor("iab-executor", tracker);
}

@Provides
@ApplicationScope
public Database getAppDatabase(Tracker tracker) {
Expand Down
7 changes: 2 additions & 5 deletions app/src/main/java/org/tasks/preferences/BasicPreferences.java
Original file line number Diff line number Diff line change
Expand Up @@ -125,11 +125,8 @@ public void onCreate(Bundle savedInstanceState) {
findPreference(getString(R.string.p_collect_statistics))
.setOnPreferenceChangeListener(
(preference, newValue) -> {
if (newValue != null) {
tracker.setTrackingEnabled((boolean) newValue);
return true;
}
return false;
showRestartDialog();
return true;
});

findPreference(R.string.backup_BAc_import)
Expand Down
3 changes: 2 additions & 1 deletion app/src/main/java/org/tasks/preferences/Preferences.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import javax.inject.Inject;
import org.tasks.BuildConfig;
import org.tasks.R;
import org.tasks.data.TaskAttachment;
import org.tasks.injection.ForApplication;
Expand Down Expand Up @@ -182,7 +183,7 @@ public Uri getRingtone() {
}

public boolean isTrackingEnabled() {
return getBoolean(R.string.p_collect_statistics, true);
return !BuildConfig.DEBUG && getBoolean(R.string.p_collect_statistics, true);
}

public String getDefaultCalendar() {
Expand Down
Loading

0 comments on commit 33bf34f

Please sign in to comment.