本文档面向移动开发者,介绍如何使用 Google Analytics(分析)衡量用户互动,并回答有关应用使用情况的问题。
简介
Google Analytics for Mobile Apps 提供了一个用于衡量用户互动的平台,可让您更好地了解用户与您应用的互动情况,并据此进行相应优化。
Google Analytics(分析)的默认实现会自动提供关于您应用的以下信息:
- 用户和会话数量
- 会话持续时间
- 操作系统
- 设备型号
- 地理位置
本指南将说明您可以如何实现其他 Google Analytics(分析)功能来更好地了解用户及其行为。
准备工作
在按照本指南执行操作之前,建议您先参阅以下资源,了解如何设置 Google Analytics for Mobile Apps:
- 为您要定位的平台安装 SDK:
- 移动应用分析设置最佳做法
概览
Dragon Catcher
本指南使用一个示例应用来指导您实现其他 Google Analytics(分析)功能。该应用名为 Dragon Catcher,其游戏特性如下所示:
- 每个关卡都有一名玩家、多头龙、一个围栏区、一口井和一些树
- 玩家的目标是将龙驱赶到围栏区来捕捉它们
- 玩家可以抵达每个关卡中的不同区域,使用井或魔法树等物体
- 玩家捉到所有龙之后就会进入下一关
- 玩家从第一关(称为“Barren Fields”)开始游戏
借助 Google Analytics(分析),您可以回答一些关于 Dragon Catcher 用户行为的问题:
- 我的用户执行了哪些操作?(活动)
- 用户在我的应用中花了多少钱?(电子商务)
- 用户是否完成了我的应用目标?(目标)
- 具有特定特征的用户如何行为? (自定义维度/指标)
- 用户完成一个任务需要多长时间?(自定义计时)
本文档在接下来的内容中将介绍如何通过针对 Dragon Catcher 游戏实现 Google Analytics(分析)功能来解答这些问题。
我的用户执行了哪些操作?(事件)
如果您想跟踪应用中的重要操作,可以在 Google Analytics(分析)中使用事件描述这些操作。事件由四个参数组成:category
、action
、label
和 value
。如需详细了解 Google Analytics(分析)中事件的工作原理,请参阅事件跟踪剖析。
例如,在 Dragon Catcher 中,用户在某一关卡中救出龙或抵达特定区域的操作就是我们要使用事件衡量的重要操作。下面的代码段说明了如何在 Google Analytics(分析)中衡量这些操作。
Android SDK v4
// 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]];
适用于 Unity v3 的 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 v4
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]]; } }
适用于 Unity v3 的 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); } }
针对事件的开发者指南
事件报告
事件数据可在以下位置找到:
- 网络界面中的行为 >> 事件 >> 热点事件下
- 自定义报告
- Core Reporting API
用户在我的应用中花了多少钱?(增强型电子商务)
如果您想衡量用户的应用内购买,可以使用电子商务跟踪功能来跟踪购买行为,并了解相关的产品性能和用户行为。电子商务跟踪可用于衡量用户对特定物品或虚拟货币的购买。
例如,在 Dragon Catcher 中,要衡量用户对某些物品的购买,您需要将交易数据随事件一起发送到 Google Analytics(分析):
Android SDK v4
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]];
适用于 Unity v3 的 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 v4
/** * 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]];
适用于 Unity v3 的 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(分析)发送事件,那么您可以设置目标来衡量用户何时进行应用内购买。您可以使用以下参数在网络界面的“管理”中定义目标,而无需添加任何其他代码:
- 目标类型(等于):事件
- 类别(等于):游戏内商店
- 操作(等于):购买
- 将“事件价值”用作转化的“目标价值”:是
目标报告
目标数据可在以下位置找到:
- 网络界面中的转化 >> 目标 >> 概览下
- 自定义报告
- Core Reporting API
具有特定特征的用户的行为方式(自定义维度和指标)
如果您想跟踪拥有特定属性/特性/元数据的用户,可以使用自定义维度来向 Google Analytics(分析)发送此类数据并进行分析。要详细了解自定义维度的工作原理,请参阅自定义维度和指标功能参考。
- 创建范围为
User
的自定义维度。 使用User
范围,因为此值应保留在该用户的所有会话中。请参阅设置或修改自定义维度(帮助中心)。 - 在用户的关卡发生变化时更新该自定义维度值。
以下代码段说明了如何在 Google Analytics(分析)中更新用户的状态,其中用户级自定义维度索引为 1
,用户级已更改为 Barren Fields
:
Android SDK v4
// 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]];
适用于 Unity v3 的 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"));
针对自定义维度和指标的开发者指南:
自定义维度和指标报告
可在以下位置添加自定义维度并应用为细分:
- 网络界面中的大多数标准报告
- 自定义报告
- Core Reporting API
通过将自定义维度应用为细分,您可以对目前在游戏中处于特定关卡的用户进行分析。
用户完成一个任务需要多长时间? (自定义计时)
如果您想衡量用户在应用中完成某些任务要花多长时间,可以使用用户计时在 Google Analytics(分析)中执行基于时间的衡量。用户计时与事件类似,但基于时间,可包含 category
、value
、name (variable)
和 label
。要了解用户计时的工作原理,请参阅关于网站速度。
例如,在 Dragon Catcher 中,要衡量用户营救第一头龙需要多长时间,您可以发送以下内容:
Android SDK v4
// 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]];
适用于 Unity v3 的 Google Analytics(分析)插件
// Build and send a timing hit. googleAnalytics.LogTiming("Barren Fields",45000,"First Rescue","Dragon");
针对自定义计时的开发者指南
自定义计时报告
自定义计时数据可在以下位置找到:
- 网络界面中的行为 >> 应用速度下
- 自定义报告
- Core Reporting API
相关资源
- Google Analytics(分析)学院 - 学习免费的在线课程(包括移动应用分析基本知识)提高您的 Google Analytics(分析)技能。
- 数据收集 API 和 SDK - 了解您可以用来向 Google Analytics(分析)发送数据的所有方法。