Руководство по реализации для мобильных приложений

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

Введение

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

Оставив настройки Google Analytics по умолчанию, вы сможете узнать следующую информацию:

  • количество пользователей и сеансов;
  • длительность сеанса;
  • операционные системы;
  • модели устройств;
  • географические данные.

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

Перед началом работы

Прежде чем приступить к настройке Google Analytics для мобильных приложений, выполните следующие действия:

Обзор

Игра Dragon Catcher

В качестве примера Google Analytics в этой статье приведена игра Dragon Catcher со следующими характеристиками:

  • на уровне представлены игрок, драконы, загон, колодец и деревья;
  • задача игрока – поймать всех драконов и поместить их в загон;
  • игрок может посещать другие зоны уровня и взаимодействовать с объектами, в том числе с колодцем и волшебным деревом;
  • чтобы перейти на следующий уровень, нужно поймать всех драконов;
  • игра начинается с первого уровня, который называется Barren Fields.

С помощью Google Analytics можно получить ответы на следующие вопросы о Dragon Catcher:

Итак, приступим.

Какие действия выполняют пользователи? (События)

Чтобы отслеживать важные действия пользователей приложения, используйте события Google Analytics. Каждое событие имеет четыре параметра: category (категория), action (действие), label (ярлык) и value (ценность).

В игре Dragon Catcher нам нужно отслеживать такие действия пользователя, как поимка дракона или переход в конкретную зону уровня. Сделать это можно с помощью следующего кода.

SDK для Android

// To determine how many dragons are being rescued, send an event when the
// player rescues a dragon.
tracker.send(new HitBuilders.EventBuilder()
    .setCategory("Barren Fields")
    .setAction("Rescue")
    .setLabel("Dragon")
    .setValue(1)
    .build());

// To determine if players are visiting the magic tree, send an event when the
// player is in the vicinity of the magic tree.
tracker.send(new HitBuilders.EventBuilder()
    .setCategory("Barren Fields")
    .setAction("Visited")
    .setLabel("Magic Tree")
    .setValue(1)
    .build());

// To determine if players are visiting the well, send an event when the player
// is in the vicinity of the well.
tracker.send(new HitBuilders.EventBuilder()
    .setCategory("Barren Fields")
    .setAction("Visited")
    .setLabel("Well")
    .setValue(1)
    .build());

SDK для iOS

// To determine how many dragons are being rescued, send an event when the
// player rescues a dragon.
[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Barren Fields"
                                                      action:@"Rescue"
                                                       label:@"Dragon"
                                                       value:@1] build]];

// To determine if players are visiting the magic tree, send an event when the
// player is in the vicinity of the magic tree.
[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Barren Fields"
                                                      action:@"Visited"
                                                       label:@"Magic Tree"
                                                       value:@1] build]];

// To determine if players are visiting the well, send an event when the player
// is in the vicinity of the well.
[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Barren Fields"
                                                      action:@"Visited"
                                                       label:@"Well"
                                                       value:@1] build]];

Плагин Google Analytics для Unity

// To determine how many dragons are being rescued, send an event when the
// player rescues a dragon.
googleAnalytics.LogEvent("Barren Fields", "Rescue", "Dragon", 1);

// To determine if players are visiting the magic tree, send an event when the
// player is in the vicinity of the magic tree.
googleAnalytics.LogEvent("Barren Fields", "Visited", "Magic Tree", 1);

// To determine if players are visiting the well, send an event when the player
// is in the vicinity of the well.
googleAnalytics.LogEvent("Barren Fields", "Visited", "Well", 1);

Отслеживание достижений игроков

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

SDK для Android

if (numDragonsRescued > 5) {
  if (!user.hasAchievement(RESCUED_ACHIEVEMENT) {
    tracker.send(new HitBuilders.EventBuilder()
        .setCategory("Achievement")
        .setAction("Unlocked")
        .setLabel("5 Dragons Rescued")
        .setValue(1)
        .build());
  } else {
    tracker.send(new HitBuilders.EventBuilder()
        .setCategory("Achievement")
        .setAction("Earned")
        .setLabel("5 Dragons Rescued")
        .setValue(1)
        .build());
  }
}

SDK для iOS

if (numDragonsRescued > 5) {
  if (![user hasAchievement:RESCUED_ACHIEVEMENT]) {
    [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Achievement"
                                                          action:@"Unlocked"
                                                           label:@"5 Dragons Rescued"
                                                           value:@1] build]];
  } else {
    [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Achievement"
                                                          action:@"Earned"
                                                           label:@"5 Dragons Rescued"
                                                           value:@1] build]];
  }
}

Плагин Google Analytics для Unity

if (numDragonsRescued > 5) {
  if (!user.HasAchievement(RESCUED_ACHIEVEMENT)) {
    googleAnalytics.LogEvent("Achievement", "Unlocked", "5 Dragons Rescued", 1);
  } else {
    googleAnalytics.LogEvent("Achievement", "Earned", "5 Dragons Rescued", 1);
  }
}

Руководства по событиям для разработчиков

Отчеты по событиям

Где можно найти данные по событиям:

Сколько пользователи тратят на покупки в приложении? (Расширенная электронная торговля)

Если вы хотите знать всё о покупках товаров или игровой валюты, которые пользователи совершают в вашем приложении, воспользуйтесь функцией отслеживания электронной торговли.

В игре Dragon Catcher данные транзакций передаются в Google Analytics вместе с информацией о событии:

SDK для Android

Product product = new Product()
    .setName("Dragon Food")
    .setPrice(40.00);

ProductAction productAction = new ProductAction(ProductAction.ACTION_PURCHASE)
    .setTransactionId("T12345");

// Add the transaction data to the event.
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .setCategory("In-Game Store")
    .setAction("Purchase")
    .addProduct(product)
    .setProductAction(productAction);

// Send the transaction data with the event.
tracker.send(builder.build());

SDK для iOS

GAIEcommerceProduct *product = [[GAIEcommerceProduct alloc] init];
[product setName:@"Dragon Food"];
[product setPrice:@40.00];

GAIEcommerceProductAction *productAction = [[GAIEcommerceProductAction alloc] init];
[productAction setAction:kGAIPAPurchase];
[productAction setTransactionId:@"T12345"];

GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createEventWithCategory:@"In-Game Store"
                                                                       action:@"Purchase"
                                                                        label:nil
                                                                        value:nil];
// Add the transaction data to the event.
[builder setProductAction:productAction];
[builder addProduct:product];

// Send the transaction data with the event.
[tracker send:[builder build]];

Плагин Google Analytics для Unity

// Note: Using Android SDK v3 and standard Ecommerce tracking.

googleAnalytics.LogItem("T12345", "Dragon Food", "Food_SKU", "Items", 40.00, 1);
googleAnalytics.LogTransaction("T12345", "In-Game Store", 40.00, 0.00, 0.00);

Все суммы рекомендуется выражать в реальной валюте. Покупки, которые пользователь совершает на виртуальные средства, также можно отслеживать с помощью событий. Пример:

SDK для Android

/**
 * When the user purchases the virtual currency (Gems) measure the transaction
 * using enhanced ecommerce.
 */
Product product = new Product()
    .setName("2500 Gems")
    .setPrice(5.99);

ProductAction productAction = new ProductAction(ProductAction.ACTION_PURCHASE)
    .setTransactionId("T67890");

// Add the transaction to the screenview.
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

// Send the transaction with the screenview.
tracker.setScreenName("In-Game Store");
tracker.send(builder.build());


/**
 * When the user purchases an item using the virtual currency (Gems) send an
 * event to measure this in Google Analytics.
 */
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .setCategory("In-Game Store")
    .setAction("Purchase")
    .setLabel("Sword")
    .setValue(35);
tracker.send(builder.build());

SDK для iOS

/**
 * When the user purchases the virtual currency (Gems) measure the transaction
 * using enhanced ecommerce.
 */
GAIEcommerceProduct *product = [[GAIEcommerceProduct alloc] init];
[product setName:@"2500 Gems"];
[product setPrice:@5.99];

GAIEcommerceProductAction *productAction = [[GAIEcommerceProductAction alloc] init];
[productAction setAction:kGAIPAPurchase];
[productAction setTransactionId:@"T67890"];

GAIDictionaryBuilder *viewBuilder = [GAIDictionaryBuilder createScreenView];

// Add the transaction data to the screenview.
[viewBuilder setProductAction:productAction];
[viewBuilder addProduct:product];

// Send the transaction with the screenview.
[tracker set:kGAIScreenName value:@"In-Game Store"];
[tracker send:[viewBuilder build]];


/**
 * When the user purchases an item using the virtual currency (Gems) send an
 * event to measure this in Google Analytics.
 */
GAIDictionaryBuilder *eventBuilder = [GAIDictionaryBuilder createEventWithCategory:@"In-Game Store"
                                                                       action:@"Purchase"
                                                                        label:@"Sword"
                                                                        value:@35];
[tracker send:[eventBuilder build]];

Плагин Google Analytics для Unity

// Note: Using Android SDK v3 and standard Ecommerce tracking.

/**
 * When the user purchases the virtual currency (Gems) measure the transaction
 * using enhanced ecommerce.
 */

googleAnalytics.LogItem("T12345", "2500 Gems", "GEM2500_SKU", "Items", 5.99, 1);
googleAnalytics.LogTransaction("T12345", "In-Game Store", 5.99, 0.00, 0.00);

/**
 * When the user purchases an item using the virtual currency (Gems) send an
 * event to measure this in Google Analytics.
 */
googleAnalytics.LogEvent("In-Game Store", "Purchase", "Sword", 35);

Руководства по расширенной электронной торговле для разработчиков

Отчеты по расширенной электронной торговле

Где можно найти данные по расширенной электронной торговле:

Достигаются ли определенные для приложения цели? (Цели)

Если вы хотите определить и отслеживать конкретные показатели, которых должны достигнуть пользователи, обратите внимание на цели Google Analytics. Например, это может быть переход на нужный уровень игры или покупка определенного товара. Подробнее о целях…

В игре Dragon Catcher с помощью целей можно отслеживать покупки, однако для этого нужно настроить отправку событий. Определить цель можно в веб-интерфейсе с помощью следующих параметров:

  • Тип цели (равно): Событие.
  • Категория (равно): Магазин в игре.
  • Действие (равно): Покупка.
  • Использовать ценность события в качестве ценности цели конверсии: Да.

Отчеты по целям

Где можно найти данные по целям:

Как следить за действиями пользователей с определенными характеристиками? (Специальные параметры и показатели)

Чтобы отслеживать пользователей с определенными атрибутами, характеристиками или метаданными, вам потребуются специальные параметры. Подробнее…

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

  1. Создайте специальный параметр с областью действия User (пользователь) (значение должно храниться для всех сеансов конкретного пользователя). Подробнее о создании и изменении специальных параметров…
  2. При переходе пользователя на другой уровень измените значение специального параметра.

Это показано в следующем примере (пользователь находится на уровне 1 и переходит на уровень Barren Fields):

SDK для Android

// Set the user level custom dimension when sending a hit to Google Analytics
// such as a screenview or event.
tracker.setScreenName("BarrenFields");
tracker.send(new HitBuilders.ScreenViewBuilder()
    .setCustomDimension(1, "Barren Fields")
    .build()
);

SDK для iOS

// Set the user level custom dimension when sending a hit to Google Analytics
// such as a screenview or event.
[tracker set:kGAIScreenName value:@"BarrenFields"];
[tracker send:[[[GAIDictionaryBuilder createScreenView]
         set:@"Barren Fields"
      forKey:[GAIFields customDimensionForIndex:1]] build]];

Плагин Google Analytics для Unity

// Set the user level custom dimension when sending a hit to Google Analytics
// such as a screenview or event.
googleAnalytics.LogScreen(new AppViewHitBuilder()
    .SetScreenName("BarrenFields").SetCustomDimension(1, "Barren Fields"));

Руководства по специальным параметрам и показателям для разработчиков

Отчеты по специальным параметрам и показателям

Специальные параметры можно включать в виде сегментов в следующие объекты:

Сделав это, вы сможете анализировать поведение пользователей, находящихся на определенном уровне игры.

Сколько времени нужно пользователю, чтобы выполнить задание? (Специальные временные метки)

С помощью Google Analytics вы можете отслеживать, сколько времени понадобится пользователю на выполнение определенного задания в игре. Для этого используются специальные метки, которые похожи на события, но основываются на времени и имеют следующие атрибуты: category (категория), value (ценность), name (variable) (название или переменная) и label (ярлык). Подробнее читайте в статье, посвященной отчету Скорость загрузки сайта.

Так, в игре Dragon Catcher можно отслеживать, сколько времени понадобится пользователю на поимку первого дракона:

SDK для Android

// Build and send a timing hit.
tracker.send(new HitBuilders.TimingBuilder()
    .setCategory("Barren Fields")
    .setValue(45000)  // 45 seconds.
    .setVariable("First Rescue")
    .setLabel("Dragon")
    .build());

SDK для iOS

[tracker send:[[GAIDictionaryBuilder createTimingWithCategory:@"Barren Fields"
                                                     interval:@45000   // 45 seconds.
                                                         name:@"First Rescue"
                                                        label:@"Dragon"] build]];

Плагин Google Analytics для Unity

// Build and send a timing hit.
googleAnalytics.LogTiming("Barren Fields",45000,"First Rescue","Dragon");

Руководства по специальным временным меткам для разработчиков

Отчеты по специальным временным меткам

Где можно найти нужные данные:

  • Analytics Academy – бесплатная обучающая платформа по работе с Google Analytics, в том числе и для мобильных приложений.
  • API и SDK сбора данных – все о сборе данных в Google Analytics.