Przewodnik po implementacji aplikacji mobilnej

Ten dokument jest przeznaczony dla deweloperów aplikacji mobilnych i zawiera informacje o tym, jak za pomocą Google Analytics mierzyć interakcje użytkowników i uzyskiwać odpowiedzi na pytania o korzystanie z aplikacji.

Wstęp

Google Analytics dla aplikacji mobilnych to platforma do pomiaru interakcji użytkowników, która pozwala lepiej zrozumieć i zoptymalizować zaangażowanie użytkowników w aplikację.

Domyślna implementacja Google Analytics automatycznie udostępnia te informacje o Twojej aplikacji:

  • liczbę użytkowników i sesji,
  • Czas trwania sesji
  • Systemy operacyjne
  • Modele urządzeń
  • Region

Z tego przewodnika dowiesz się, jak zaimplementować dodatkowe funkcje Google Analytics, aby lepiej zrozumieć użytkowników i ich zachowanie.

Zanim zaczniesz

Zanim zapoznasz się z tym przewodnikiem, by skonfigurować Google Analytics dla aplikacji mobilnych:

Przegląd

Łapacz smoków

W tym przewodniku skorzystamy z przykładowej aplikacji, która pomoże Ci wdrożyć dodatkowe funkcje Google Analytics. Aplikacja nazywa się Dragon Catcher i ma następujące cechy gry:

  • Na każdym poziomie składają się gracz, smoki, ogrodzony obszar, studnia i drzewa.
  • Celem gracza jest złapanie smoków poprzez przesunięcie ich na ogrodzony obszar.
  • Gracz może odwiedzać różne obszary poziomu i obiekty, takie jak studnia lub magiczne drzewo.
  • Gracz przechodzi na kolejny poziom, gdy złapie wszystkie smoki.
  • Gracz rozpoczyna grę na pierwszym poziomie, który nosi nazwę Barren Fields.

Korzystając z Google Analytics, możesz znaleźć odpowiedzi na niektóre pytania o zachowania użytkowników w narzędziu Dragon Catcher:

W dalszej części tego dokumentu pokazujemy, jak na te pytania można uzyskać odpowiedź dzięki wdrożeniu funkcji Google Analytics do gry Dragon Catcher.

Jakie działania wykonują moi użytkownicy? (Zdarzenia)

Jeśli chcesz śledzić ważne działania w aplikacji, możesz je opisać za pomocą zdarzeń w Google Analytics. Zdarzenie składa się z 4 parametrów: category, action, label i value.

Na przykład w grze Dragon Catcher użytkownika, który ratuje smoka lub odwiedza konkretne miejsce na poziomie, chcemy mierzyć za pomocą zdarzeń. Fragment kodu poniżej pokazuje, jak to robić w Google Analytics.

Android SDK

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

Wtyczka GA dla 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);

Pomiar „osiągnięć” graczy

„Osiągnięcia” zawodników można mierzyć za pomocą zdarzeń w Google Analytics. Aby np. zmierzyć, czy udało się uratować 5 smoków, rejestrowana jest liczba uratowanych przez gracza smoków. Gdy gracz osiągnie próg, do Google Analytics wysyłane jest zdarzenie:

Android SDK

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

Wtyczka GA dla 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);
  }
}

Przewodniki dla programistów dotyczące wydarzeń

Raportowanie zdarzeń

Dane zdarzeń są dostępne w:

Ile użytkownicy wydają w mojej aplikacji? (Ulepszone e-commerce)

Jeśli chcesz mierzyć zakupy w aplikacji dokonywane przez użytkowników, możesz użyć śledzenia e-commerce do śledzenia zakupów i poznawania związanych z nimi skuteczności produktów oraz zachowań użytkowników. Śledzenie e-commerce może służyć do pomiaru zakupu określonego produktu lub wirtualnej waluty.

Na przykład w aplikacji Dragon Catcher, aby mierzyć liczbę zakupów niektórych produktów, dane transakcji są wysyłane do Google Analytics ze zdarzeniem:

Android SDK

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

Wtyczka GA dla 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);

Jeśli użytkownik kupił wirtualną walutę, zalecamy pomiar wymiany rzeczywistych pieniędzy podczas wysyłania danych transakcji do Google Analytics. Gdy użytkownik wydaje wirtualną walutę, aby kupować produkty, zmierz tę wartość za pomocą zdarzeń. Na przykład:

Android SDK

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

Wtyczka GA dla 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);

Przewodniki dla programistów dotyczące Ulepszonego e-commerce

Raportowanie Ulepszonego e-commerce

Dane e-commerce są dostępne w:

Czy użytkownicy realizują cele mojej aplikacji? (Cele)

Jeśli masz określone cele dotyczące aplikacji, które użytkownicy mają osiągnąć, możesz ustalić i mierzyć te cele za pomocą celów w Google Analytics. Celem może być np. osiągnięcie przez użytkownika określonego poziomu w grze lub zakup produktu. Więcej informacji o tym, jak działają cele, znajdziesz w artykule Cele (Centrum pomocy).

W grze Dragon Catcher możesz skonfigurować cel, aby mierzyć zakupy w aplikacji, jeśli w przypadku każdego zakupu do Google Analytics jest wysyłane zdarzenie. Cel można określić w ustawieniach administratora interfejsu internetowego bez konieczności pisania dodatkowego kodu, korzystając z następujących parametrów:

  • Typ celu (równa się): Zdarzenie
  • Kategoria (równa się): Sklep w grach
  • Działanie (równa się): Zakup
  • Użyj wartości zdarzenia jako wartości celu podczas konwersji: Tak.

Raportowanie celów

Dane celów są dostępne w następujących językach:

Jak zachowują się użytkownicy o określonych cechach? (Niestandardowe wymiary i dane)

Jeśli chcesz śledzić użytkowników z określonymi atrybutami, cechami lub metadanymi, możesz użyć wymiarów niestandardowych, by przesyłać tego rodzaju dane do Google Analytics i do analizy. Więcej informacji o działaniu wymiarów niestandardowych znajdziesz w dokumentacji funkcji niestandardowych wymiarów i danych.

W narzędziu Dragon Catcher możesz np. sprawdzić odsetek użytkowników na pierwszym, drugim poziomie itd. wymiar niestandardowy można ustawić na bieżącym poziomie użytkownika i przesłać do Google Analytics. Kroki:

  1. Utwórz wymiar niestandardowy o zakresie User. Używany jest zakres User, ponieważ ta wartość powinna być taka sama we wszystkich sesjach użytkownika. Więcej informacji znajdziesz w artykule Konfigurowanie i edytowanie wymiarów niestandardowych (Centrum pomocy).
  2. Aktualizuj wartość wymiaru niestandardowego, gdy zmieni się poziom użytkownika.

Poniższy fragment ilustruje, jak zaktualizować stan użytkownika w Google Analytics, gdy indeks wymiaru niestandardowego na poziomie użytkownika to 1, a poziom użytkownika zmieniono na Barren Fields:

Android SDK

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

Wtyczka GA dla 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"));

Przewodniki dla programistów dotyczące wymiarów i danych niestandardowych

Raportowanie wymiarów i danych niestandardowych

Wymiary niestandardowe można uwzględniać i stosować jako segmenty w tych celach:

Zastosowanie wymiaru niestandardowego jako segmentu pozwoli Ci analizować użytkowników, którzy obecnie znajdują się na określonym poziomie w grze.

Ile czasu zajmuje użytkownikowi wykonanie zadania? (Niestandardowe czasy)

Jeśli chcesz się dowiedzieć, ile czasu zajmuje wykonanie pewnych czynności w aplikacji, możesz wykorzystać w Google Analytics pomiary czasu działań użytkownika. Czasy użytkowników są podobne do zdarzeń, ale są zależne od czasu i mogą obejmować category, value, name (variable) i label. Więcej informacji o czasie działań użytkownika znajdziesz w artykule Szybkość witryny – informacje.

Na przykład w narzędziu Dragon Catcher, aby zmierzyć, ile czasu zajmuje użytkownikowi uratowanie pierwszego smoka, możesz wysłać:

Android SDK

// 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 na iOS

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

Wtyczka GA dla Unity

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

Przewodniki dla programistów dotyczące niestandardowych czasów

Raporty o niestandardowych czasach

Dane o niestandardowych terminach są dostępne w tych miejscach: