Erweiterte Konfiguration

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

Überblick

Das Google Analytics SDK Version 4 für Android bietet eine Tracker-Klasse zum Festlegen und Senden von Daten an Google Analytics sowie einen GoogleAnalytics-Singleton, der als Schnittstelle zu den globalen Konfigurationswerten Ihrer Implementierung dient.

Initialisierung

Bevor Daten gemessen werden können, müssen Sie mindestens einen Tracker über das 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 Parameterwertpaare festzulegen, die sie über die Tracker-Methode send senden.

Das folgende Beispiel zeigt, wie Sie eine Bildschirmansicht an Google Analytics senden, indem Sie eine App-Datenansicht erstellen und die Sendungsmethode 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());

kaufmännisches Und-Zeichen (Measurement Protocol)

Sie können die Measurement Protocol-Syntax (kaufmännisches Und-Zeichen) verwenden, um Werte bei einem einzelnen Treffer mit einem HitBuilders.ScreenViewBuilder festzulegen. Verwenden Sie das Tracker-Objekt selbst, um Werte für alle nachfolgenden Treffer festzulegen.

// 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 Referenz zu Measurement Protocol-Parametern.

Werte auf mehrere Treffer anwenden

Alle Werte, die direkt im Tracker festgelegt werden, 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 für mehrere Treffer beibehalten werden sollen, sollten direkt im Tracker festgelegt werden. Es wäre sinnvoll, einen Bildschirmnamen für einen Tracker festzulegen, da derselbe Wert auf nachfolgende Bildschirmaufrufe und Ereignistreffer angewendet werden kann. Es wird jedoch nicht empfohlen, auf dem Tracker ein Feld wie den Treffertyp festzulegen, da es sich wahrscheinlich mit jedem Treffer ändert.

Mehrere Tracker verwenden

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;

  ...
}

Auch wenn Ihre mobile App mehrere Tracker haben kann, können Sie nur einen Tracker verwenden, um nicht abgefangene Ausnahmen zu melden. Dazu rufen Sie auf dem Tracker die Methode enableExceptionReporting() auf.

Probenahme

Sie können die clientseitige Stichprobenerhebung aktivieren, um die Anzahl der Treffer zu begrenzen, die an Google Analytics gesendet werden. Wenn Ihre Anwendung eine große Anzahl von Nutzern hat oder anderweitig ein großes Datenvolumen an Google Analytics sendet, können Sie durch Aktivieren der Stichprobenerhebung eine unterbrechungsfreie Berichterstellung gewährleisten.

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

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

So aktivieren Sie clientseitige Stichproben für einen Tracker programmatisch:

mTracker.setSampleRate(50.0d);

Deaktivierung auf App-Ebene

Sie können ein Deaktivierungs-Flag auf App-Ebene aktivieren, durch das Google Analytics für die gesamte App deaktiviert wird. Dieses Flag muss bei jedem Start der App gesetzt werden und wird standardmäßig auf false gesetzt.

So rufen Sie die Deaktivierungseinstellung 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 kann eine App auf eine Änderung in SharedPreferences warten und die Google Analytics-Deaktivierungseinstellung entsprechend aktualisieren:

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 clientseitige Daten von Google Analytics für Ihre Endnutzer zurücksetzen oder löschen müssen, können Sie die Client-ID-Datei löschen.

Durch das Löschen der Datei gaClientId wird die Generierung einer neuen Client-ID erzwungen. Für alle nachfolgenden Treffer wird diese neue Client-ID verwendet. Vorherige Daten werden nicht der neuen Client-ID zugeordnet.

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

context.deleteFile("gaClientId");

IP-Anonymisierung

Wenn Sie die Funktion zur Anonymisierung von IP-Adressen aktivieren, werden die vom SDK gesendeten IP-Informationen in Google Analytics anonymisiert, indem das letzte Oktett der IP-Adresse vor dem Speichern entfernt wird.

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

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

Wenn Sie die Anonymisierung der IP-Adresse programmatisch für einen Tracker aktivieren möchten, verwenden Sie die Methode setAnonymizeIp:

mTracker.setAnonymizeIp(true)

Die Methode setAnonymizeIp kann jederzeit aufgerufen werden.

Testen und Fehler beheben

Das Google Analytics SDK Version 4 für Android enthält Tools, die das Testen und die Fehlerbehebung erleichtern.

Probelauf

Im SDK wird das Flag dryRun bereitgestellt, das verhindert, dass Daten an Google Analytics gesendet werden. Das Flag dryRun sollte immer dann gesetzt werden, wenn Sie eine Implementierung testen oder Fehler beheben und die Testdaten nicht in Ihren Google Analytics-Berichten erscheinen sollen.

So legen Sie das Probelauf-Flag 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

In Google Analytics werden Logs unter dem GAv4-Tag mit dem Log-System von Android in logcat protokolliert. Standardmäßig sind nur die Ebenen ERROR, WARN und INFO aktiviert. Führen Sie zum Aktivieren der Fehlerbehebungsstufe den folgenden ADB-Befehl auf Ihrem Gerät oder Emulator aus:

adb shell setprop log.tag.GAv4 DEBUG

Wenn Sie nur Google Analytics-Nachrichten von Logcat anzeigen lassen möchten, verwenden Sie den folgenden Befehl:

adb logcat -v time -s GAv4

Weitere Informationen finden Sie in der Google Analytics-Logger-Referenz.