Статьи

Работа с Google Analytics API v4 для Android

Для версии 4 Google Analytics API для Android Google перенес реализацию в службы Google Play. В рамках этого шага класс EasyTracker был удален, но все же можно было запустить довольно простой «автоматический» трекер и запустить его без особых усилий. В этом посте я покажу как.

Предположения:

  • Вы уже используете класс EasyTracker API Google Analytics v3 и просто хотите выполнить базовую миграцию на v4 – или –
  • Вы просто хотите настроить базовый аналитический трекер, который отправляет Hit, когда пользователь начинает действие
  • В вашем Android-приложении уже запущены и работают последние версии служб Google Play.

Давайте начнем.

Поскольку в вашей сборке уже есть библиотека Google Play Services, все необходимые вспомогательные классы уже будут доступны для вашего кода (если их здесь нет ). В v4 Google Analytics API есть несколько вспомогательных классов и опций конфигурации, которые могут сделать запуск и запуск довольно простым, но я нашел документацию немного неясной, так что вот что нужно сделать…

Шаг 1.

Создайте следующий файл конфигурации global_tracker.xml и добавьте его в папку res / xml вашего приложения для Android. Это будет использоваться классом GoogleAnalytics в качестве основного глобального конфига. Вам нужно будет настроить отображаемые имена для вашего приложения. Обратите внимание, что в этом файле нет ‘Tracking ID’ – это будет позже. Здесь следует отметить элемент ga_dryRun, который используется для включения или отключения отправки отчетов об отслеживании в Google Analytics. Вы можете использовать этот параметр в отладке, чтобы предотвратить перепутывание живых и отладочных данных.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" <span style="line-height: 1.5; font-style: inherit; font-weight: inherit;">tools:ignore="TypographyDashes"></span>
 
<!-- the Local LogLevel for Analytics -->
<string name="ga_logLevel">verbose</string>
 
<!-- how often the dispatcher should fire -->
<integer name="ga_dispatchPeriod">30</integer>
 
<!-- Treat events as test events and don't send to google -->
<bool name="ga_dryRun">false</bool>
 
<!-- The screen names that will appear in reports -->
<string name="com.mycompany.MyActivity">My Activity</string>
</resources>

Шаг 2.

Теперь добавьте второй файл « app_tracker.xml » в ту же папку ( res / xml ). В этом файле есть несколько примечаний. Вам следует заменить ga_trackingId на идентификатор отслеживания Google Analytics для вашего приложения (вы получаете его из консоли аналитики). Установка ga_autoActivityTracking в значение «true» очень важна для этого урока – это значительно упрощает настройку и отправку отслеживающих попаданий из вашего кода. Наконец, не забудьте настроить свои отображаемые имена, добавьте по одному для каждого действия, в которое вы будете добавлять код отслеживания.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" <span style="line-height: 1.5; font-style: inherit; font-weight: inherit;">tools:ignore="TypographyDashes"></span>
 
<!-- The apps Analytics Tracking Id -->
<string name="ga_trackingId">UX-XXXXXXXX-X</string>
 
<!-- Percentage of events to include in reports -->
<string name="ga_sampleFrequency">100.0</string>
 
<!-- Enable automatic Activity measurement -->
<bool name="ga_autoActivityTracking">true</bool>
 
<!-- catch and report uncaught exceptions from the app -->
<bool name="ga_reportUncaughtExceptions">true</bool>
 
<!-- How long a session exists before giving up -->
<integer name="ga_sessionTimeout">-1</integer>
 
<!-- If ga_autoActivityTracking is enabled, an alternate screen name can be specified to
substitute for the full length canonical Activity name in screen view hit. In order to
specify an alternate screen name use an <screenName> element, with the name attribute
specifying the canonical name, and the value the alias to use instead. -->
<screenName name="com.mycompany.MyActivity">My Activity</screenName>
 
</resources>

Шаг 3.

И наконец, с точки зрения конфигурации, измените ваш AndroidManifest.xml, добавив следующую строку в элементе application. Это настраивает класс GoogleAnalytics (одноэлементный элемент управления, контролирующий создание экземпляров Tracker) с базовой конфигурацией в файле res / xml / global_tracker.xml .

1
2
3
<!-- Google Analytics Version v4 needs this value for easy tracking -->
<meta-data android:name="com.google.android.gms.analytics.globalConfigResource"
android:resource="@xml/global_tracker" />

Это все, что нужно сделать для базовой конфигурации xml.

Шаг 4

Теперь мы можем добавить (или изменить) класс «Application» вашего приложения, чтобы он содержал некоторые трекеры, на которые мы можем ссылаться из нашей деятельности.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.mycompany;
 
import android.app.Application;
 
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
 
import java.util.HashMap;
 
public class MyApplication extends Application {
 
// The following line should be changed to include the correct property id.
private static final String PROPERTY_ID = "UX-XXXXXXXX-X";
 
//Logging TAG
private static final String TAG = "MyApp";
 
public static int GENERAL_TRACKER = 0;
 
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 MyApplication() {
super();
}
 
synchronized Tracker getTracker(TrackerName trackerId) {
if (!mTrackers.containsKey(trackerId)) {
 
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(R.xml.app_tracker)
: (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(PROPERTY_ID)
: analytics.newTracker(R.xml.ecommerce_tracker);
mTrackers.put(trackerId, t);
 
}
return mTrackers.get(trackerId);
}
}

Либо проигнорируйте ECOMMERCE_TRACKER, либо создайте XML-файл в res / xml с именем ecommerce_tracker.xml, чтобы настроить его. Я оставил это в коде, чтобы показать, что возможно иметь дополнительные трекеры помимо APP и GLOBAL. В файле ecommerce_tracker есть пример файла конфигурации XML \ extras \ google \ google_play_services \ samples \ analytics \ res \ xml, но он просто содержит свойство tracking_id, обсуждавшееся ранее.

Шаг 5

Наконец, теперь мы можем добавить некоторый фактический код отслеживания попаданий в нашу деятельность. Сначала импортируйте класс com.google.android.gms.analytics.GoogleAnalytics и инициализируйте средство отслеживания уровня приложения в методе действий onCreate () . Делайте это в каждом упражнении, которое вы хотите отслеживать.

1
2
//Get a Tracker (should auto-report)
((MyApplication) getApplication()).getTracker(MyApplication.TrackerName.APP_TRACKER);

Затем в onStart () запишите, как пользователь запускает аналитику при запуске действия. Делайте это в каждом упражнении, которое вы хотите отслеживать.

1
2
//Get an Analytics tracker to report app starts & uncaught exceptions etc.
GoogleAnalytics.getInstance(this).reportActivityStart(this);

Наконец, запишите окончание активности пользователей, отправив стоп- запрос в аналитику в методе onStop () нашей операции . Делайте это в каждом упражнении, которое вы хотите отслеживать.

1
2
//Stop the analytics tracking
GoogleAnalytics.getInstance(this).reportActivityStop(this);

И наконец…

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

1
2
3
4
5
6
7
8
9
com.mycompany.myapp V/GAV3? Thread[GAThread,5,main]: connecting to Analytics service
com.mycompany.myapp V/GAV3? Thread[GAThread,5,main]: connect: bindService returned false for Intent { act=com.google.android.gms.analytics.service.START cmp=com.google.android.gms/.analytics.service.AnalyticsService (has extras) }
com.mycompany.myapp V/GAV3? Thread[GAThread,5,main]: Loaded clientId
com.mycompany.myapp I/GAV3? Thread[GAThread,5,main]: No campaign data found.
com.mycompany.myapp V/GAV3? Thread[GAThread,5,main]: Initialized GA Thread
com.mycompany.myapp V/GAV3? Thread[GAThread,5,main]: putHit called
...
com.mycompany.myapp V/GAV3? Thread[GAThread,5,main]: Dispatch running...
com.mycompany.myapp V/GAV3? Thread[GAThread,5,main]: sent 1 of 1 hits

Еще лучше, если вы войдете в панель отчетности для консоли Google Analytics на странице «Реальное время – Обзор», вы можете даже заметить следующее:

Страница обзора аналитики в реальном времени

Страница обзора аналитики в реальном времени