Erweiterte Konfiguration

Dieses Dokument bietet einen Überblick über einige der erweiterten Konfigurationsfunktionen des Google Analytics SDK Version 4 für Android.

Übersicht

Version 4 des Google Analytics SDK bietet eine Tracker-Klasse zum Festlegen und Senden von Daten an Google Analytics und ein GoogleAnalytics-Singleton, das als Schnittstelle für die globalen Konfigurationswerte deiner Implementierung dient.

Initialisierung

Bevor Daten gemessen werden können, müssen Sie mindestens einen Tracker über den Singleton GoogleAnalytics initialisieren. Geben Sie dazu ein Context-Objekt und eine Google Analytics-Property-ID an. Weitere Informationen finden Sie in der Google Analytics-Referenz.

Konfigurationsdatei verwenden

Es ist auch möglich, einen Tracker mithilfe einer Konfigurationsdatei zu initialisieren. Beispiel:

package com.google.android.apps.mobileplayground;

import android.app.Application;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
import java.util.HashMap;

/**
 * An extension to Application class to provide tracker for analytics purposes. Having the tracker
 * instances here allows all the activities to access the same tracker instances. The trackers can
 * be initialised on startup or when they are required based on performance requirements.
 */
public class AnalyticsSampleApp extends Application {

  // The following line should be changed to include the correct property id.
  private static final String PROPERTY_ID = "UA-XXXXX-Y";

  /**
   * Enum used to identify the tracker that needs to be used for tracking.
   *
   * A single tracker is usually enough for most purposes. In case you do need multiple trackers,
   * storing them all in Application object helps ensure that they are created only once per
   * application instance.
   */
  public enum TrackerName {
    APP_TRACKER, // Tracker used only in this app.
    GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking.
    ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company.
  }

  HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();

  public AnalyticsSampleApp() {
    super();
  }
  synchronized Tracker getTracker(TrackerName trackerId) {
    if (!mTrackers.containsKey(trackerId)) {

      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
      Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID)
          : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker)
              : analytics.newTracker(R.xml.ecommerce_tracker);
      mTrackers.put(trackerId, t);

    }
    return mTrackers.get(trackerId);
  }
}

Daten festlegen und senden

Die Daten werden mithilfe von Buildern an Google Analytics gesendet, um Parameter/Wert-Paare festzulegen, die sie über die Tracker-Methode send senden.

Das folgende Beispiel zeigt, wie Sie einen Bildschirmaufruf an Google Analytics senden, indem Sie einen App-Aufruf erstellen und die Methode zum Senden des Trackers aufrufen:

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Set screen name.
t.setScreenName(screenName);

// Send a screen view.
t.send(new HitBuilders.ScreenViewBuilder().build());

Measurement Protocol-Kaufmännische Syntax

Sie können das Measurement Protocol-kaufmännische Und-Syntax verwenden, um Werte für einen einzelnen Treffer mit einem HitBuilders.ScreenViewBuilder festzulegen. Mit dem Tracker-Objekt selbst können Sie Werte für alle nachfolgenden Treffer festlegen.

// Setting the content description field on a single hit using ampersand syntax.
tracker.send(new HitBuilders.ScreenViewBuilder()
  .set("&cd", "Home Screen")
  .build()
);

Eine vollständige Liste der verfügbaren Measurement Protocol-Parameter finden Sie in der Measurement Protocol Parameter Reference.

Anwenden mehrerer Werte auf mehrere Treffer

Alle direkt im Tracker festgelegten Werte werden beibehalten und auf mehrere Treffer angewendet, wie in diesem Beispiel:

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Set screen name.
t.setScreenName(screenName);

// Send a screen view.
t.send(new HitBuilders.ScreenViewBuilder().build());

// This event will also be sent with the most recently set screen name.
// Build and send an Event.
t.send(new HitBuilders.EventBuilder()
    .setCategory(getString(categoryId))
    .setAction(getString(actionId))
    .setLabel(getString(labelId))
    .build());

// Clear the screen name field when we're done.
t.setScreenName(null);

Nur Werte, die über mehrere Treffer hinweg beibehalten werden sollen, sollten direkt im Tracker festgelegt werden. Das Festlegen eines Bildschirmnamens für einen Tracker ist sinnvoll, da derselbe Wert auf nachfolgende Bildschirmaufrufe und Ereignistreffer angewendet werden kann. Es wird jedoch nicht empfohlen, ein Feld wie den Treffertyp für den Tracker festzulegen, da sich dieser wahrscheinlich bei jedem Treffer ändert.

Verwendung mehrerer Tracker

In Ihrer mobilen App können Sie mehrere Tracker verwenden, um Daten an verschiedene Properties zu senden:


public class MyApp extends Application {

  public void initTrackers() {
    GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);

    globalTracker = analytics.newTracker(R.xml.global_tracker);
    ecommerceTracker = analytics.newTracker(R.xml.ecommerce_tracker);
  }

  public static Tracker globalTracker;
  public static Tracker ecommerceTracker;

  ...
}

Obwohl deine mobile App mehrere Tracker haben kann, kannst du nur einen Tracker verwenden, um nicht erfasste Ausnahmen zu melden. Rufe dazu die Methode enableExceptionReporting() für den Tracker auf.

Probenahme

Sie können clientseitige Stichproben aktivieren, um die Anzahl der an Google Analytics gesendeten Treffer zu begrenzen. Wenn Ihre App eine große Anzahl von Nutzern hat oder anderweitig eine große Datenmenge an Google Analytics sendet, können Sie durch die Verwendung von Probenahmen eine unterbrechungsfreie Berichterstellung gewährleisten.

Wenn Sie beispielsweise die clientseitige Probe mit einer Rate von 50 % aktivieren möchten, verwenden Sie den folgenden Parameter in Ihrer Konfigurationsdatei:

<string name="ga_sampleFrequency">50.0</string>

So aktivierst du die clientseitige Stichprobenerhebung für einen Tracker:

mTracker.setSampleRate(50.0d);

Deaktivierung auf App-Ebene

Sie können ein Opt-out-Flag auf App-Ebene aktivieren, mit dem Google Analytics für die gesamte App deaktiviert wird. Beachten Sie, dass dieses Flag bei jedem Start der App festgelegt werden muss und standardmäßig auf false gesetzt ist.

So rufen Sie die Einstellung auf App-Ebene ab:

boolean isOptedOut = GoogleAnalytics.getInstance(this).getAppOptOut();

So legen Sie die Deaktivierung auf App-Ebene fest:

GoogleAnalytics.getInstance(this).setAppOptOut(true);

In einer typischen Implementierung wartet eine App möglicherweise auf eine Änderung in SharedPreferences und aktualisiert die Einstellung für Google Analytics entsprechend:

SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this);

userPrefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener () {

  @Override
  public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    if (key.equals(TRACKING_PREF_KEY)) {
      GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(sharedPreferences.getBoolean(key, false));
    } else {
      // Any additional changed preference handling.
    }
  }
});

Clientseitige Nutzerdaten löschen

Wenn Sie die clientseitigen Google Analytics-Daten für Ihre Endnutzer zurücksetzen oder löschen möchten, können Sie die Client-ID-Datei löschen.

Wenn Sie die Datei gaClientId löschen, wird das Generieren einer neuen Client-ID erzwungen. Für alle nachfolgenden Treffer wird die neue Client-ID verwendet. Vorherige Daten werden der neuen Client-ID nicht zugeordnet.

Löschen Sie die Datei gaClientId mit der Methode Context.deleteFile:

context.deleteFile("gaClientId");

IP-Anonymisierung

Durch das Aktivieren der Anonymisierung von IP-Adressen wird Google Analytics angewiesen, die vom SDK gesendeten IP-Informationen zu anonymisieren. Dabei wird das letzte Oktett der IP-Adresse vor dem Speichern entfernt.

Verwenden Sie den folgenden Parameter in Ihrer Konfigurationsdatei, um die Anonymisierung von IP-Funktionen zu aktivieren:

<string name="ga_anonymizeIp">true</string>

Mit der Methode setAnonymizeIp kannst du die Anonymisierung von IP-Funktionen für einen Tracker programmatisch aktivieren:

mTracker.setAnonymizeIp(true)

Die Methode setAnonymizeIp kann jederzeit aufgerufen werden.

Testen und Fehler beheben

Version 4 des Google Analytics SDK bietet Tools, die das Testen und Debuggen von Daten erleichtern.

Probelauf

Das SDK enthält das Flag dryRun. Wird dieses Flag festgelegt, wird verhindert, dass Daten an Google Analytics gesendet werden. Das Flag dryRun sollte festgelegt werden, wenn Sie eine Implementierung testen oder Fehler darin beheben und keine Testdaten in Ihren Google Analytics-Berichten sehen möchten.

So legen Sie das Flag für den Probelauf fest:

// When dry run is set, hits will not be dispatched, but will still be logged as
// though they were dispatched.
GoogleAnalytics.getInstance(this).setDryRun(true);

Logger

Google Analytics protokolliert mit dem Android- Log-System den Logcat unter dem GAv4-Tag. Standardmäßig sind die Ebenen ERROR, WARN und INFO aktiviert. Führen Sie den folgenden ADB-Befehl auf Ihrem Gerät oder Emulator aus, um die DEBUG-Ebene zu aktivieren:

adb shell setprop log.tag.GAv4 DEBUG

Verwenden Sie den folgenden Befehl, um nur Google Analytics-Nachrichten von logcat aufzurufen:

adb logcat -v time -s GAv4

Weitere Informationen findest du in der Referenz zu Google Analytics Logger.