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

Из этого документа вы узнаете о расширенных настройках 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;

/**
 * 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.

Ниже показано, как создать представление (профиль) приложения и вызвать метод 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());

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

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

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

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

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

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

// 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 о конечном пользователе на стороне клиента, удалите файл Google Analytics.

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

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

context.deleteFile("gaClientId");

Анонимизация 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.

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

// 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 (используется система Log для Android). По умолчанию включены только уровни ERROR, WARN и INFO. Чтобы включить уровень DEBUG, выполните указанную ниже команду ADB на своем устройстве или в эмуляторе.

adb shell setprop log.tag.GAv4 DEBUG

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

adb logcat -v time -s GAv4

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