Руководство по внедрению мобильного приложения

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

Введение

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

Реализация Google Analytics по умолчанию автоматически предоставит следующую информацию о вашем приложении:

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

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

Прежде чем вы начнете

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

Обзор

Ловец драконов

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

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

Используя Google Analytics, можно получить ответы на некоторые вопросы о поведении пользователей в Dragon Catcher :

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

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

Если в вашем приложении есть важные действия, которые вы хотите отслеживать, события можно использовать для описания этого действия в Google Analytics. Событие состоит из четырех параметров: category , action , label и value . Подробную информацию о том, как события работают в Google Analytics, см. в разделе «Анатомия отслеживания событий» .

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

Android SDK 4.

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

iOS SDK v3

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

Плагин GA для Unity v3

// 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. Например, чтобы измерить достижение по спасению 5 драконов, записывается количество драконов, которых спас игрок, а затем, как только игрок достигает порогового значения, событие отправляется в Google Analytics:

Android SDK 4.

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

iOS SDK v3

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

Плагин GA для Unity v3

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 с событием:

Android SDK 4.

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

iOS SDK v3

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]];

Плагин GA для Unity v3

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

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

Android SDK 4.

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

iOS SDK v3

/**
 * 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 *builder = [GAIDictionaryBuilder createScreenView];

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

// Send the transaction with the screenview.
[tracker set:kGAIScreenName value:@"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.
 */
GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createEventWithCategory:@"In-Game Store"
                                                                       action:@"Purchase"
                                                                        label:@"Sword"
                                                                        value:@35];
[tracker send:[builder build]];

Плагин GA для Unity v3

// 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 можно настроить цель для отслеживания совершения покупок в приложении, если для каждой покупки в Google Analytics отправляется событие . Цель можно определить в админке веб-интерфейса без дополнительного кода, используя следующие параметры:

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

Отчет о целях

Данные о целях доступны в:

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

Если вы хотите отслеживать пользователей с определенными атрибутами/признаками/метаданными, тогда можно использовать специальные параметры для отправки данных этого типа в Google Analytics и для анализа. Дополнительную информацию о том, как работают специальные параметры, см. в справочнике по функциям «Специальные параметры и показатели» .

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

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

В следующем фрагменте показано, как обновить состояние пользователя в Google Analytics, где индекс специального измерения уровня пользователя равен 1 , а уровень пользователя изменился на Barren Fields :

Android SDK 4.

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

iOS SDK v3

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

Плагин GA для Unity v3

// 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 , чтобы измерить, сколько времени понадобится пользователю, чтобы спасти своего первого дракона, вы можете отправить что-то вроде:

Android SDK 4.

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

iOS SDK v3

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

Плагин GA для Unity v3

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

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

Отчеты по индивидуальному времени

Пользовательские данные таймингов доступны в:

  • Академия аналитики . Улучшите свои навыки аналитики с помощью бесплатных онлайн-курсов, включающих основы аналитики мобильных приложений.
  • API и SDK для сбора данных : узнайте обо всех способах отправки данных в Google Analytics.