Konfiguracja zaawansowana

Ten dokument zawiera przegląd niektórych zaawansowanych funkcji konfiguracyjnych pakietu SDK Google Analytics w wersji 4 na Androida.

Przegląd

Pakiet SDK Google Analytics w wersji 4 na Androida zawiera klasę Tracker służącą do ustawiania i wysyłania danych do Google Analytics oraz klasykę GoogleAnalytics, która służy jako interfejs do globalnych wartości konfiguracyjnych implementacji.

Zdarzenie inicjujące

Zanim będzie można mierzyć dane, musisz zainicjować co najmniej 1 tag śledzenia za pomocą singletonu GoogleAnalytics, przesyłając obiekt Context oraz identyfikator usługi Google Analytics. Więcej informacji znajdziesz w materiałach referencyjnych Google Analytics.

Przy użyciu pliku konfiguracji

Możesz też zainicjować tracker przy użyciu pliku konfiguracji. Na przykład:

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);
  }
}

Ustawianie i wysyłanie danych

Dane są wysyłane do Google Analytics za pomocą kreatorów, aby ustawiać pary parametr-wartość wysyłające je metodą send modułu śledzenia.

W tym przykładzie pokazujemy, jak wysłać widok ekranu do Google Analytics przez utworzenie widoku aplikacji i wywołanie metody wysyłania elementu śledzącego:

// 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());

Składnia platformy Measurement Protocol

Za pomocą składni ampersand platformy Measurement Protocol możesz ustawiać wartości dla pojedynczego działania z elementem HitBuilders.ScreenViewBuilder. Aby ustawić wartości dla wszystkich kolejnych działań, użyj samego obiektu śledzenia.

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

Pełną listę dostępnych parametrów platformy Measurement Protocol znajdziesz w dokumentacji parametrów platformy Measurement Protocol.

Stosowanie wartości do wielu działań

Wszelkie wartości ustawione bezpośrednio w trackerze zostaną zachowane i zastosowane do wielu działań, jak w tym przykładzie:

// 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);

Bezpośrednio w narzędziu do śledzenia należy ustawiać tylko te wartości, które mają być pozostawiane dla wielu działań. Nadanie nazwy ekranu w narzędziu do śledzenia ma sens, ponieważ ta sama wartość może być stosowana do kolejnych wyświetleń ekranu i działań związanych ze zdarzeniem. Nie zalecamy jednak ustawiania w module śledzenia pól takich jak typ trafienia, ponieważ będzie się ono zmieniać z każdym działaniem.

Korzystanie z wielu trackerów

W swojej aplikacji mobilnej możesz używać wielu skryptów śledzenia, aby wysyłać dane do różnych usług:


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;

  ...
}

Chociaż Twoja aplikacja mobilna może mieć wiele trackerów, możesz użyć tylko jednego do zgłaszania niewykrytych wyjątków, wywołując w nim metodę enableExceptionReporting().

Próbkowanie

Możesz włączyć próbkowanie po stronie klienta, aby ograniczyć liczbę działań wysyłanych do Google Analytics. Jeśli Twoja aplikacja ma dużą liczbę użytkowników lub w inny sposób wysyła do Google Analytics dużą ilość danych, włączenie próbkowania pomoże zapewnić nieprzerwane raportowanie.

Aby na przykład włączyć próbkowanie po stronie klienta z częstotliwością 50%, użyj w pliku konfiguracji tego parametru:

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

Aby włączyć dla skryptu śledzenia próbkowanie po stronie klienta automatycznie:

mTracker.setSampleRate(50.0d);

Rezygnacja na poziomie aplikacji

Możesz włączyć flagę rezygnacji na poziomie aplikacji, która spowoduje wyłączenie Google Analytics w całej aplikacji. Pamiętaj, że tę flagę należy ustawić przy każdym uruchomieniu aplikacji. Domyślna wartość to false.

Aby uzyskać ustawienie rezygnacji na poziomie aplikacji:

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

Aby ustawić rezygnację na poziomie aplikacji:

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

W typowej implementacji aplikacja może wychwycić zmianę parametru SharedPreferences i odpowiednio zaktualizować ustawienie rezygnacji z Google Analytics:

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.
    }
  }
});

Usuwanie danych użytkownika po stronie klienta

Jeśli musisz zresetować lub usunąć dane Google Analytics odnoszące się do użytkowników, możesz usunąć plik identyfikatora klienta.

Usunięcie pliku gaClientId wymusi wygenerowanie nowego identyfikatora klienta, a wszystkie kolejne działania będą z niego korzystać. Wcześniejsze dane nie będą powiązane z nowym identyfikatorem klienta.

Aby usunąć plik gaClientId, użyj metody Context.deleteFile:

context.deleteFile("gaClientId");

Ukryj adres IP

Włączenie funkcji anonimizacji adresów IP informuje Google Analytics o anonimizacji informacji IP wysyłanych przez pakiet SDK przez usunięcie ostatniego oktetu adresu IP przed jego przechowywaniem.

Aby włączyć funkcję anonimizacji adresów IP, użyj tego parametru w pliku konfiguracji:

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

Aby włączyć funkcję anonimizacji adresów IP automatycznie dla lokalizatora, użyj metody setAnonymizeIp:

mTracker.setAnonymizeIp(true)

Metodę setAnonymizeIp możesz wywołać w dowolnym momencie.

Testowanie i debugowanie

Pakiet SDK Google Analytics w wersji 4 na Androida zawiera narzędzia ułatwiające testowanie i debugowanie.

Uruchomienie próbne

Pakiet SDK udostępnia flagę dryRun, która po skonfigurowaniu uniemożliwia wysyłanie danych do Google Analytics. Flaga dryRun należy ustawić za każdym razem, gdy testujesz lub debugujesz implementację i nie chcesz, aby dane testowe pojawiały się w raportach Google Analytics.

Aby ustawić flagę uruchomienia próbnego:

// 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);

Rejestrator

Google Analytics będzie logować się w celu logcat w ramach tagu GAv4 za pomocą systemu Log Androida. Domyślnie włączone są tylko poziomy ERROR, WARN i INFO. Aby włączyć poziom DEBUGOWANIA, uruchom na urządzeniu lub w emulatorze to polecenie adb:

adb shell setprop log.tag.GAv4 DEBUG

Aby wyświetlić z logcat tylko komunikaty Google Analytics, użyj tego polecenia:

adb logcat -v time -s GAv4

Więcej informacji znajdziesz w dokumentacji Loggera Google Analytics.