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

Из этого документа вы узнаете о расширенных настройках SDK Google Analytics для Android версии 4.

Обзор

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

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

Для получения аналитических данных необходимо инициализировать хотя бы один счетчик через синглтон GoogleAnalytics, предоставив объект (Context) и идентификатор ресурса Google Analytics. Подробнее…

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

Счетчик также можно инициализировать, используя файл конфигурации. Пример:

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;

/**
 * Расширение для класса Application, предоставляющее счетчик для аналитических целей. Они
 * обеспечивают всем действиям доступ к одинаковым экземплярам счетчика. Счетчики могут быть
 * инициализированы при запуске или по требованию, связанному с показателем эффективности.
 */
public class AnalyticsSampleApp extends Application {

  // Следующая строка должна быть изменена, чтобы включить правильный идентификатор ресурса.
  private static final String PROPERTY_ID = "UA-XXXXX-Y";

  /**
   * Значение перечисляемого типа используется для идентификации счетчика, применяемого для отслеживания.
   *
   * Для большинства целей, как правило, достаточно только одного счетчика. Если вам нужно несколько счетчиков,
   * сохраните их все в объекте Application. Тогда они будут создаваться только один раз
   * для каждого экземпляра приложения.
   */
  public enum TrackerName {
    APP_TRACKER, // Счетчик, используемый только в этом приложении.
    GLOBAL_TRACKER, // Счетчик, применяемый ко всем приложениям компании (например, для отслеживания сводных списков).
    ECOMMERCE_TRACKER, // Счетчик, применяемый ко всем транзакциям электронной торговли компании.
  }

  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.

Ниже показано, как создать представление (профиль) приложения и вызвать метод send для отправки просмотра экрана в Google Analytics.

// Получение счетчика.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Установка названия экрана.
t.setScreenName(screenName);

// Отправка просмотра экрана.
t.send(new HitBuilders.ScreenViewBuilder().build());

Амперсанд-синтаксис протокола передачи статистических данных

Амперсанд-синтаксис протокола Measurement Protocol применяется для задания значений только одного обращения (с помощью класса HitBuilders.ScreenViewBuilder). Чтобы задать значения для всех последующих обращений, используйте объект счетчика.

// Установка поля описания контента для одного обращения при помощи амперсанд-синтаксиса.
tracker.send(new HitBuilders.ScreenViewBuilder()
  .set("&cd", "Home Screen")
  .build()
);

Ознакомьтесь с полным списком всех параметров, которые можно отправлять с помощью протокола Measurement Protocol.

Применение значений к нескольким обращениям

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

// Получение счетчика.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Установка названия экрана.
t.setScreenName(screenName);

// Отправка просмотра экрана.
t.send(new HitBuilders.ScreenViewBuilder().build());

// Это событие также будет отправлено с последним установленным названием экрана.
// Создание и отправка события.
t.send(new HitBuilders.EventBuilder()
    .setCategory(getString(categoryId))
    .setAction(getString(actionId))
    .setLabel(getString(labelId))
    .build());

// Очистка поля с названием экрана после завершения.
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 {
      // Обработка настроек любых дополнительных изменений.
    }
  }
});

Анонимизация IP

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

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

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

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

mTracker.setAnonymizeIp(true)

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

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

SDK Google Analytics для Android версии 4 включает в себя несколько удобных инструментов тестирования и отладки.

Флаг dryRun

Флаг dryRun позволяет запретить отправку данных в Google Analytics. Используйте его при тестировании и отладке, чтобы не засорять отчеты Google Analytics.

Вот как установить этот флаг:

// Когда флаг dryRun установлен, обращения отправляться не будут,
// хотя и будет регистрироваться, что доставка выполнена.
GoogleAnalytics.getInstance(this).setDryRun(true);

Журналирование

Google Analytics регистрируется в LogCat под тегом GAv4 (используется журнал событий Android). По умолчанию включены только уровни ERROR, WARN и INFO. Чтобы включить уровень DEBUG, выполните указанную ниже команду ADB на своем устройстве или в эмуляторе.

adb shell setprop log.tag.GAv4 DEBUG

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

adb logcat -v time -s GAv4

Подробнее читайте в статье об интерфейсе Logger.