Расширенная конфигурация

В этом документе представлен обзор некоторых расширенных функций настройки Google Analytics SDK v4 для Android.

Обзор

Google Analytics SDK v4 для Android предоставляет класс Tracker для установки и отправки данных в Google Analytics, а также одноэлементный элемент GoogleAnalytics , который служит интерфейсом для глобальных значений конфигурации вашей реализации.

Инициализация

Прежде чем какие-либо данные можно будет измерить, вы должны инициализировать хотя бы один трекер с помощью синглтона GoogleAnalytics , предоставив объект Context и идентификатор свойства Google Analytics. Подробности см. в Справочнике GoogleAnalytics .

Использование файла конфигурации

Также возможно инициализировать трекер с помощью файла конфигурации. Например:

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

Настройка и отправка данных

Данные отправляются в Google Analytics с помощью конструкторов для установки пар параметр-значение, отправляющих их с помощью метода send трекера.

В следующем примере показано, как отправить представление экрана в Google Analytics, создав представление приложения и вызвав метод отправки трекера:

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

Синтаксис протокола измерения амперсанда

Вы можете использовать синтаксис амперсанда протокола измерений для установки значений при одном обращении с помощью HitBuilders.ScreenViewBuilder . Чтобы установить значения для всех последующих обращений, используйте сам объект трекера.

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

Полный список доступных параметров протокола измерений см. в Справочнике параметров протокола измерений .

Применение значений к множественным обращениям

Любые значения, установленные непосредственно на трекере, будут сохранены и применены к нескольким обращениям, как в этом примере:

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

Непосредственно на трекере следует задавать только те значения, которые вы хотите сохранить при нескольких обращениях. Установка имени экрана на трекере имеет смысл, поскольку одно и то же значение может применяться к последующим просмотрам экрана и обращениям к событиям. Однако не рекомендуется задавать на трекере такое поле, как тип попадания, поскольку оно, скорее всего, будет меняться при каждом попадании.

Использование нескольких трекеров

В своем мобильном приложении вы можете использовать несколько трекеров для отправки данных на разные объекты:


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;

  ...
}

Хотя ваше мобильное приложение может иметь несколько трекеров, вы можете использовать только один трекер для сообщения о неперехваченных исключениях, вызвав метод enableExceptionReporting() на трекере.

Выборка

Вы можете включить выборку на стороне клиента, чтобы ограничить количество обращений, отправляемых в Google Analytics. Если ваше приложение имеет большое количество пользователей или иным образом отправляет большой объем данных в Google Analytics, включение выборки поможет обеспечить бесперебойную отчетность.

Например, чтобы включить выборку на стороне клиента с частотой 50 %, используйте следующий параметр в файле конфигурации:

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

Чтобы программно включить выборку на стороне клиента для трекера:

mTracker.setSampleRate(50.0d);

Отказ на уровне приложения

Вы можете включить флаг отказа на уровне приложения, который отключит Google Analytics во всем приложении. Обратите внимание, что этот флаг должен устанавливаться каждый раз при запуске приложения, и по умолчанию он имеет значение false .

Чтобы получить настройку отказа на уровне приложения, используйте:

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

Чтобы настроить отказ на уровне приложения, используйте:

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

В типичной реализации приложение может прослушивать изменения в SharedPreferences и соответствующим образом обновлять настройку отказа от 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.
    }
  }
});

Удаление пользовательских данных на стороне клиента

Если вам нужно сбросить или удалить клиентские данные Google Analytics для ваших конечных пользователей, вы можете удалить файл идентификатора клиента.

Удаление файла gaClientId приведет к принудительному созданию нового идентификатора клиента, и все последующие обращения будут использовать новый идентификатор клиента. Предыдущие данные не будут связаны с новым идентификатором клиента.

Чтобы удалить файл gaClientId, используйте метод Context.deleteFile :

context.deleteFile("gaClientId");

Анонимизировать IP

Включение функции анонимизации IP указывает Google Analytics анонимизировать информацию IP, отправленную SDK, путем удаления последнего октета IP-адреса перед ее сохранением.

Чтобы включить функцию анонимизации IP, используйте следующий параметр в файле конфигурации:

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

Чтобы программно включить функцию анонимизации IP для трекера, используйте метод setAnonymizeIp :

mTracker.setAnonymizeIp(true)

Метод setAnonymizeIp можно вызвать в любое время.

Тестирование и отладка

Google Analytics SDK 4 для Android предоставляет инструменты, упрощающие тестирование и отладку.

Пробный прогон

SDK предоставляет флаг dryRun , который, если он установлен, предотвращает отправку любых данных в Google Analytics. Флаг dryRun следует устанавливать всякий раз, когда вы тестируете или отлаживаете реализацию и не хотите, чтобы тестовые данные появлялись в ваших отчетах Google Analytics.

Чтобы установить флаг пробного запуска:

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

Регистратор

Google Analytics будет регистрировать данные в logcat под тегом GAv4 , используя систему Android Log . По умолчанию включены только уровни ERROR, WARN и INFO. Чтобы включить уровень DEBUG, выполните следующую команду adb на своем устройстве или в эмуляторе:

adb shell setprop log.tag.GAv4 DEBUG

Чтобы просмотреть только сообщения Google Analytics из logcat, используйте следующую команду:

adb logcat -v time -s GAv4

Дополнительную информацию см. в Справочнике по регистратору GoogleAnalytics .