rename "Tracking" to "Analytics"
This commit is contained in:
@@ -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();
|
||||
})
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user