rename "Tracking" to "Analytics"

This commit is contained in:
Vincent Breitmoser
2018-07-16 13:42:03 +02:00
parent 10466101c0
commit fef79c7f73
9 changed files with 46 additions and 45 deletions

View File

@@ -1,4 +1,4 @@
package org.sufficientlysecure.keychain;
package org.sufficientlysecure.keychain.analytics;
import java.util.concurrent.TimeUnit;
@@ -6,11 +6,14 @@ import java.util.concurrent.TimeUnit;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager.NameNotFoundException;
import android.preference.PreferenceActivity;
import org.sufficientlysecure.keychain.BuildConfig;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.KeychainApplication;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.ui.SettingsActivity;
import org.sufficientlysecure.keychain.ui.SettingsActivity.ExperimentalPrefsFragment;
import org.sufficientlysecure.keychain.ui.util.Notify;
@@ -18,14 +21,14 @@ import org.sufficientlysecure.keychain.ui.util.Notify.Style;
import org.sufficientlysecure.keychain.util.Preferences;
public class TrackingConsentRequester {
public class AnalyticsConsentRequester {
private final Activity activity;
public static TrackingConsentRequester getInstance(Activity activity) {
return new TrackingConsentRequester(activity);
public static AnalyticsConsentRequester getInstance(Activity activity) {
return new AnalyticsConsentRequester(activity);
}
private TrackingConsentRequester(Activity activity) {
private AnalyticsConsentRequester(Activity activity) {
this.activity = activity;
}
@@ -61,20 +64,20 @@ public class TrackingConsentRequester {
preferences.setAnalyticsLastAskedNow();
TrackingManager trackingManager = ((KeychainApplication) activity.getApplication()).getTrackingManager();
AnalyticsManager analyticsManager = ((KeychainApplication) activity.getApplication()).getAnalyticsManager();
AlertDialog show = new Builder(activity)
.setMessage(R.string.dialog_analytics_text)
.setPositiveButton(R.string.button_analytics_yes, (dialog, which) -> {
preferences.setAnalyticsAskedPolitely();
preferences.setAnalyticsGotUserConsent(true);
trackingManager.refreshSettings(activity);
analyticsManager.refreshSettings(activity);
Notify.create(activity, R.string.snack_analytics_accept, Style.OK,
this::startExperimentalSettingsActivity, R.string.snackbutton_analytics_settings).show();
})
.setNegativeButton(R.string.button_analytics_no, (dialog, which) -> {
preferences.setAnalyticsAskedPolitely();
preferences.setAnalyticsGotUserConsent(false);
trackingManager.refreshSettings(activity);
analyticsManager.refreshSettings(activity);
Notify.create(activity, R.string.snack_analytics_reject, Style.OK,
this::startExperimentalSettingsActivity, R.string.snackbutton_analytics_settings).show();
})

View File

@@ -0,0 +1,117 @@
package org.sufficientlysecure.keychain.analytics;
import android.app.Activity;
import android.app.Application;
import android.app.Application.ActivityLifecycleCallbacks;
import android.content.Context;
import android.os.Bundle;
import org.piwik.sdk.Piwik;
import org.piwik.sdk.Tracker;
import org.piwik.sdk.TrackerConfig;
import org.piwik.sdk.extra.DownloadTracker.Extra.ApkChecksum;
import org.piwik.sdk.extra.TrackHelper;
import org.sufficientlysecure.keychain.util.Preferences;
public class AnalyticsManager {
private Tracker piwikTracker;
public static AnalyticsManager getInstance(Context context) {
return new AnalyticsManager(context);
}
private AnalyticsManager(Context context) {
refreshSettings(context);
}
public void initialize(Application application) {
if (piwikTracker != null) {
TrackHelper.track().download().identifier(new ApkChecksum(application)).with(piwikTracker);
}
application.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
if (piwikTracker == null) {
return;
}
TrackHelper.track().screen(activity.getClass().getSimpleName()).with(piwikTracker);
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
});
}
public void trackFragmentImpression(String opClassName, String fragmentName) {
if (piwikTracker == null) {
return;
}
TrackHelper.track().screen(opClassName + "/" + fragmentName).with(piwikTracker);
}
public void trackInternalServiceCall(String opClassName) {
if (piwikTracker == null) {
return;
}
TrackHelper.track()
.interaction("internalApiCall", opClassName)
.with(piwikTracker);
}
public void trackApiServiceCall(String opClassName, String currentCallingPackage) {
if (piwikTracker == null) {
return;
}
TrackHelper.track()
.interaction("externalApiCall", opClassName)
.piece(currentCallingPackage.replace(".", "/"))
.with(piwikTracker);
}
public synchronized void refreshSettings(Context context) {
boolean analyticsHasConsent = Preferences.getPreferences(context).isAnalyticsHasConsent();
boolean analyticsEnabled = piwikTracker != null;
if (analyticsHasConsent != analyticsEnabled) {
if (analyticsHasConsent) {
TrackerConfig trackerConfig = new TrackerConfig("https://piwik.openkeychain.org/", 1, "OpenKeychain");
piwikTracker = Piwik.getInstance(context).newTracker(trackerConfig);
piwikTracker.setDispatchInterval(60000);
piwikTracker.setOptOut(false);
} else {
piwikTracker.setOptOut(true);
piwikTracker = null;
}
}
}
}