移动应用实现指南

本文档面向移动开发者,介绍了如何使用 Google Analytics(分析)衡量用户互动情况并解答有关应用使用情况的问题。

简介

Google Analytics(分析)移动应用版提供了一个用于衡量用户互动的平台,可让您更好地了解用户与您应用的互动情况,并据此进行相应优化。

Google Analytics(分析)的默认实现会自动提供关于您应用的以下信息:

  • 用户和会话数量
  • 会话时长
  • 操作系统
  • 设备型号
  • 地理位置

本指南说明了您可以如何实现其他 Google Analytics(分析)功能来更好地了解用户及其行为。

准备工作

在按照本指南设置 Google Analytics(分析)移动应用版之前,请:

概览

Dragon Catcher

本指南使用一个示例应用来指导您实现其他 Google Analytics(分析)功能。该应用名为 Dragon Catcher,其游戏特性如下所示:

  • 每个关卡都有一名玩家、多头龙、一个围栏区、一口井和一些树
  • 玩家的目标是将龙驱赶到围栏区来捕捉它们
  • 玩家可以抵达每个关卡中的不同区域,使用井或魔法树等物体
  • 玩家捉到所有龙之后就会进入下一关
  • 玩家从第一关(称为“Barren Fields”)开始游戏

借助 Google Analytics(分析),您可以回答一些关于 Dragon Catcher 用户行为的问题:

本文档在接下来的内容中将介绍如何通过针对 Dragon Catcher 游戏实现 Google Analytics(分析)功能来解答这些问题。

我的用户执行了哪些操作?(事件)

如果您想跟踪应用中的重要操作,可以在 Google Analytics(分析)中使用事件描述这些操作。事件由以下四个参数构成:categoryactionlabelvalue

例如,在 Dragon Catcher 中,用户在某一关卡中救出龙或抵达特定区域的操作就是我们要使用事件衡量的重要操作。下面的代码段说明了如何在 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());

iOS SDK

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

适用于 Unity 的 Google Analytics(分析)插件

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

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

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

适用于 Unity 的 Google Analytics(分析)插件

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

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

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

适用于 Unity 的 Google Analytics(分析)插件

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

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

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

适用于 Unity 的 Google Analytics(分析)插件

// 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. 创建用户级范围的自定义维度。 之所以使用用户级范围,是因为这个值会保留在相应用户的所有会话中。请参阅设置或修改自定义维度(帮助中心)
  2. 在用户的关卡发生变化时更新该自定义维度值。

以下代码段说明了如何在 Google Analytics(分析)中更新用户的状态,其中用户所在关卡自定义维度索引是 1,而用户的关卡已更改为 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()
);

iOS SDK

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

适用于 Unity 的 Google Analytics(分析)插件

// 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(分析)中执行基于时间的衡量。用户计时与事件类似,但是它基于时间,可包含 categoryvaluename (variable)label 等参数。要详细了解用户计时的工作原理,请参阅关于网站速度

例如,在 Dragon Catcher 中,要衡量用户营救第一头龙需要多长时间,您可以发送以下内容:

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

iOS SDK

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

适用于 Unity 的 Google Analytics(分析)插件

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

针对自定义计时的开发者指南

自定义计时报告

自定义计时数据可在以下位置找到: