到 2015 2015年 7 月

30 卷数 7

谷歌分析-分析您的 Windows/Windows Phone 应用程序与谷歌分析用户行为

Nicola Delfino

应用程序开发是通过定义一个迭代的过程,所以你要明白,在尽可能短的时间,如何使用您的应用程序和新版本或功能可能会如何影响用户的行为。真正使用的功能是多少?在特定的网页上的用户行为是什么?多少时间呢用户花来完成特定的任务吗?最常见的硬件配置是什么?当崩溃发生时,什么?试用版和购买应用程序中是如何成功?您的用户做脱机运行应用程序?这些仅仅是一些遥测系统可以回答的问题。

有大量的正式支持 Windows 开发的遥测提供商 (bit.ly/1KGgAdQ),和微软 Azure 包括视觉工作室应用顿悟,也集成视觉工作室 2015 年 (bit.ly/1EeM8Ui)。

谷歌分析,由于谷歌分析 Windows SDK (可用在 Codeplex 上 bit.ly/1zXfvxJ),也是方便地集成到 Windows 或 Windows Phone 应用程序 (Silverlight 和通用)。

在这篇文章,我将重点放在谷歌分析,因为它是使用最广泛的供应商在其他平台上,包括 Web,和这是一个伟大的选择,如果你已经过检测与谷歌的网站,想要为应用程序使用相同的帐户。我将描述如何收集遥测信息与谷歌分析,和分析收集的数据,如已安装的应用程序版本、 地理分布和用户的行为,以及如何执行 A / B 测试。

了解遥测概念有用无论哪个提供程序使用。一个伟大的起点,关于这一主题是从生成 2014 年克拉 Brockschmidt 甲板 (bit.ly/1QGIsSO)。

谷歌分析是什么?

谷歌分析原本用于跟踪和分析 Web 站点上的用户行为。随着时间推移,谷歌扩展其支持和应用程序,工具,现在 SDK 可供 iOS 和安卓系统,以及。Google 还提供了一种测量协议,允许您执行 HTTP 调用原始用户交互数据将直接发送到谷歌分析服务器 (bit.ly/1kHgDYz)。这使您可以确定用户与他们的业务从几乎任何环境的交互。谷歌分析 SDK 为 Windows 8 和 Windows Phone 使用这个协议。SDK 是独立的、 开放源代码工具集,旨在为 Android 有奇偶校验功能和 API 相似性与官方的谷歌分析 SDK。

将您的应用程序集成与谷歌分析

要集成的应用程序,首先你需要访问谷歌分析仪表板与一个有效的谷歌帐户,然后创建可以访问本行政区域的至少一个应用程序帐户 (bit.ly/1kPLnqG)。它也是一个好主意,创建单独的应用程序帐户用于开发、 测试和生产。这种方式,你从每个设置的分离,保持数据和避免污染您重要的生产数据与来自其他开发人员和测试人员的无效数据。

应用程序帐户唯一地标识应用程序 (Contoso,为这篇文章的目的)。在这种情况下,"应用­阳离子"实际上涉及到的应用程序可用于不同的平台和/或网站 (Contoso 的 Windows,Contoso Android,Contoso 网络仪表板),所有的一切都发送其远程集合­法信息到相同的帐户。每个应用程序也可能在多个版本 (Android 2.0.1 的 Contoso 的 Windows 1.0,Contoso 的 Windows 1.1,Contoso) 中可用。

当你在谷歌分析中创建帐户时,您还需要定义一个或多个属性。在这里,属性是一个应用程序或 Web 站点为您的帐户。应用程序属性可以有多个版本,和它是逻辑需要有一个属性为每个受支持的平台 (例如,ContosoW8、 ContosoWP8、 ContosoDroid)。您选择您的应用程序的名称和回答几个问题,对应用程序的业务范围进行分类后,谷歌分析生成数字帐户 ID 和跟踪 ID 与 UA-xxxxxxxx-x,这表示您在谷歌分析的特定于平台的应用程序和将用于从应用程序发送的所有遥测通信格式。

在我的示例场景中,我有一个通用的应用程序 (W8.1 和 WP8.1),所以我创建了两个属性 Id 在一个谷歌帐户。若要启用我的应用程序,跟谷歌分析,会使用 NuGet 程序包。为此,Windows 和应用程序,用鼠标右键单击引用,Windows Phone 选择管理 NuGet 程序包和添加包"GoogleAnalyticsSDK"。此程序包添加引用和文件 analytics.xml,所示的两个图 1,到 Visual Studio 解决方案。你得要编辑此文件,所以应用程序可以使用前面创建的正确的跟踪 ID。

图 1 Analytics.xml 为 Windows 和 Windows Phone 应用程序

<?xml version="1.0" encoding="utf-8" ?>
<analytics xmlns="http://googleanalyticssdk.codeplex.com/ns/easytracker">
<trackingId>UA-60759067-2</trackingId>
  <appName>ContosoWindows</appName>
  <appVersion>1.0.0.0</appVersion>
</analytics>
<?xml version="1.0" encoding="utf-8" ?>
<analytics xmlns="http://googleanalyticssdk.codeplex.com/ns/easytracker">
  <trackingId>UA-60759067-1</trackingId>
  <appName>ContosoWinPhone</appName>
  <appVersion>1.0.0.0</appVersion>
</analytics>

最后,您必须确保您的应用程序被授权使用的网络。对于 Windows Phone 应用程序,选择 ID_CAP_NETWORKING 能力在 WMAppManifest.xml 文件中; 针对 Windows 8,在 package.appxmanifest 文件中选择互联网 (客户端) 能力。

导航应用程序

大多数开发人员想要跟踪的第一类是信息的用户导航。使用此 SDK,您需要发送正确的事件,每次用户访问页面。谷歌分析 SDK 公开 SendView 命令,并很自然地就调用此方法是每个页面的加载的事件:

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
GoogleAnalytics.EasyTracker.GetTracker().SendView("Main");
}
void Page1_Loaded(object sender, RoutedEventArgs e)
{
GoogleAnalytics.EasyTracker.GetTracker().SendView("Page1");
}
void Page2_Loaded(object sender, RoutedEventArgs e)
{
GoogleAnalytics.EasyTracker.GetTracker().SendView("Page2");
}

请记住"观"不是只是应用程序页; 你还需要考虑其他方面的 UI,注意力的用户 (如设置面板和对话框框),你想要监视和分析。

SendView 需要一个唯一标识页面或 UI 方面正在跟踪的字符串参数。此名称将出现在谷歌分析仪表板和报告为您的页面的引用。它应该是泛型和有意义和容易交感性与源页。即使您的应用程序支持多种语言,因为它将被解释为不同的页分析系统,它必须不翻译。换句话说,除非你特别想要区分遥测数据为您的应用程序的本地化版本,请确保您将发送给谷歌分析的标识符本身没有本地化。

应用程序现在准备好要发送的第一个页面导航遥测信息。若要查看它,打开您的应用程序和浏览的页面为一段时间。

用户导航和应用程序版本

在几秒钟内导航数据是随时供您分析。去 google.com/analytics 和登录以访问您的主页。然后点击你想要分析的属性下面的所有移动应用程序的数据链接 (在我的示例中,该属性是 ContosoW8 或者 Contoso WP8)。

欢迎仪表板可以显示最近 30 天内,不包括当前日期的历史数据。如果帐户是新的最有可能的所有图表将都为空。也是一个仪表板领域致力于最新的数据,您可以通过选择实时按钮在左边的仪表板的访问。

概述页指示的活跃用户数和最后一分钟和最后一个小时实时与详细的图形显示屏幕视图 (见图 2)。对这些关系图竖条显示用户页面访问。

数据实时仪表板
图 2 数据实时仪表板

也可以与活动用户的数量,在最后一个小时中, 看到最活跃的屏幕的列表。你会看到在仪表板的名称是用来作为应用程序代码中的 SendView 参数。图 2 在"Caledos 跑步者,"我开发了一个应用程序使用谷歌分析来收集使用情况数据显示实时的示例数据。我想要在应用程序中显示真实数据,所以你能看到多少信息,你可以从这个工具 — — 和相应的潜力。

每个屏幕名称是可点击的所以你可以切成小的数据和 ana­源泉网页的具体运用。信息在这里最重要的棋子之一是时间花在每个页面 (或更好,在每个视图)。点击后屏幕名称,您可以添加到图表的屏幕上显示的平均时间,通过单击选择一个度量从资源管理器选项卡的度量。

谷歌提供了一个很好的工具是行为流动的报告,所示图 3。由于 SendView API,这个工具是可用通过选择行为上,仪表板上的报告选项卡,它可以让你分析用户跨应用程序的页从用户会话开始的移动。图组成序列的屏幕 (第一屏,第二个屏幕等等),并且显示的连接并退出的用户会话数。为会话退出,你可以的看到访问的下一个页面 (按会话编号排序) 和从该网页 (在红色) 离开应用程序的用户数目。

样本行为流报告
图 3 样本行为流报告

此工具允许您了解用户在哪里花他们的时间,当他们使用的应用程序,和你可能最终决定要访问到受欢迎的页面更容易通过提供一个更大、 更可辨认的按钮。图 3 在我的应用程序前, 三名下一屏目的地从主页面的显示是 askcloud、 运行和活动的细节。这表明它的问题­干练地一个好的主意,给中央和可见的位置,到相应的按钮在主页面上,或移动的一些功能用户页面上找到的那些到主屏幕,减少时间和水龙头用户数目需要完成这些活动。

你还需要知道正在使用您的应用程序的版本,并且此信息来自使用您的应用程序的设备。在每个调用 SDK 发送 analytics.xml 中提供,所以你可以切你的数据,发现使用的版本的应用程序版本。历史的应用程序版本的数据是可用下观众 |在左窗格中的仪表板的应用程序版本。图 4 显示通常会发生什么当我发布一个新版本的我的应用程序到存储区。因为 Windows Phone 8.1 上的默认行为是自动下载并安装新版本的应用程序时可用,90%以上的用户群的几天内将迁移到最新版本,(尽管长长的尾巴的少于 10%的用户仍然是谁,出于某种原因,不能或不想升级)。

应用程序版本数据
图 4 应用程序版本数据

您收到"免费"与导航跟踪其他尺寸是设备名称 (而不是 100%的准确率,Windows Phone) 的地点,语言,和网络服务提供商,虽然措施一边,你可以找到会话、 独特和独特的新用户的数目。

有了这些信息,你能够回答以下的问题:最活跃的国家或城市是什么?在上个月在哪里有了最新的用户?使用此新的版本,都我的客户使用的应用程序更多或更少?在这种情况下,唯一的限制是你的想象力,因为你可以设置自定义事件、 计数器、 维度和度量。

用户从一个屏幕组成的队伍,导航到另一种是一个好的起点,对于理解如何使用您的应用程序,但还有更多的信息可用,更涉及到您的应用程序的特定域。这种类型的信息可以作为一个自定义的事件,通常是指一些通用的用户交互或冒泡到开发人员团队有意义的信息跟踪。事件包括四个字段,您可以使用来描述用户与您的应用程序内容的交互:

  • 字符串类
  • 字符串操作
  • 字符串标签
  • Long 类型的值

因为所有的自定义事件去单个常见列表中,类别、 行动和标签字段帮助确定您要分析的特定信息。

以这种方式收集到的信息是非常通用的和这是在哪里遥测成为一门艺术。 给数据的意义,你开始想要回答的问题导致的遥测设计,然后导致你需要的仪器。因此,让我们开始以示例的方式。

问题:我的示例应用程序具有许多功能,触发应用程序的各个页面上的按钮。我想要了解更多,使用哪个函数把重点放在正确的方向我发展努力。

遥测设计:该应用程序的主要功能触发按钮,所以如果我跟踪单击这些按钮上,我马上就会获得更好的理解用户首选项。遥测的成功指标将会接收到来自每个按钮的点击次数。

仪器仪表:我可以转到所选按钮的 click 事件,并跟踪事件。

下面的代码演示如何记录用户已单击"播放"和"停止"按钮:

private void buttonPlay_Click(object sender, RoutedEventArgs e)
{
GoogleAnalytics.EasyTracker.GetTracker().SendEvent(
  "ui_action", "press", "play", 0);
// Your code here
}
private void buttonStop_Click(object sender, RoutedEventArgs e)
{
GoogleAnalytics.EasyTracker.GetTracker().SendEvent(
  "ui_action", "press", "stop", 0);
// Your code here
}

如前面的用户导航分析,在你有实时和行为组下的一个事件表。你想要做的分析类型,您可以选择适当的视图,历史或真正的时间。

事件显示特定时间范围内 (默认值为一个月),所以你可以看到事件分组按顶级类别、 行动和在它的标签的数量。你可以向下钻取,关于特定类别及特定事件的操作,您还可以更改日期间隔的分析。

对于一个特定的事件类别、 行动或标签,你可以找到的事件总数、 独特的事件数目、 所有值和相应的平均价值的总和。

图 5 显示的事件,样本列表和图 6 显示总、 独特、 笔和 Grp1 组平均值。

图 5 样本事件

集团 行动 标签 价值
Grp1 新闻 Button1 1
Grp1 新闻 Button1 2
Grp1 新闻 Button1 2
Grp1 新闻 Button2 3
Grp1 水龙头 Label1 4

 

图 6 Grp1 的汇总值

事件总数 5
独特的事件 4
事件值 12
事件平均价值 2.4

使用一个真实的例子可以帮助您更好地了解该工具的潜力。"Caledos 转轮,"我想要理解多少应用程序真正用于跟踪活动,,因为我不想强迫用户注册帐户才能使用应用程序,我用事件来跟踪此信息。

在应用程序启动,我跟踪事件为每个注册的用户和不同的事件,为每个用户都没有登记,类似于以下内容的代码:

if (!string.IsNullOrEmpty(currentUser.AccessToken))
{
GoogleAnalytics.EasyTracker.GetTracker().SendEvent(
  "user", "Cloud", "Registered", 1);
}
else
{
GoogleAnalytics.EasyTracker.GetTracker().SendEvent(
  "user", "Cloud", "Unregistered", 1);
}

我发现,55%的用户不要他们的数据发送到云中,所以为了得到精确的资料我的所有用户,在结束了每个 GPS 活动应用程序发送一个事件与所覆盖的距离有关的信息和一个事件与总的运行时间的活动,使用类似于以下内容的代码:

GoogleAnalytics.EasyTracker.GetTracker().SendEvent(
  "activity", "outdoor", "time", (long)CurrentFitnessActivity.Duration);
GoogleAnalytics.EasyTracker.GetTracker().SendEvent(
  "activity", outdoor", "distance", (long)model.CurrentFitnessActivity.TotalDistance);

因此,我已经获得中显示的数据图 7 于 2015 年 2 月第一周。

自定义事件示例
图 7 自定义事件示例

这种分析所说的是:2 月第一周,该应用程序成功地跟踪超过 15000 小时 (54,000,000 秒) 和 51000 公里 (32,000 英里)。平均用户使用该应用程序的活动约 5 公里 (3.1 英里),覆盖在一个半小时 (5,400 秒) 的距离。

很高兴知道,但还是不够!这是只是一个平均使用率视图,但更有可能你会想知道该用法真的如何分配。这是时间的款应用程序,所以你会想知道最流行的运动,是否那大众化来自用户经常使用的应用程序或用户使用它,但只是时间的大量短了很多的小数目。

这是谷歌分析的自定义维度和度量可以帮助的地方。自定义维度和度量标准允许您将额外的数据导入谷歌分析,可以帮助您回答有关如何将用户交互与您的内容的新问题。跃点数是跨你谷歌分析命中总结的数据类型的计数。度量对应于列在一份报告。尺寸允许你打破一个度量由一个特定的值,例如,屏幕视图的屏幕名称。尺寸对应于这些行在一份报告 (bit.ly/1lOry2r)。

有两个主要的步骤来实现自定义维度或度量:

  • 定义自定义维度或度量使用谷歌分析 Web 界面 (bit.ly/1Je9RJQ)。
  • 执行代码以设置和收集自定义维度和度量值。

谷歌分析的每个属性有 20 的可用指数,对于自定义尺寸和另一个 20 指数为自定义的度量。一旦创建了一个维度或度量,您的代码可以引用该度量或维度使用相应的指数。

回到我的问题,了解体育击穿我创建了一个维度,活动类型,与范围,击中,和下面的代码用于跟踪此信息在健身会话期间由应用程序显示的视图:

GoogleAnalytics.EasyTracker.GetTracker().SetCustomDimension(1, activityType);
GoogleAnalytics.EasyTracker.GetTracker().SendView("Running");

A / B 测试

A / B 测试是一个术语营销人员用来测试是指,洞察位访客的行为,目的是提高转化率。(根据维基百科,转化率"是比例的 Web 站点的访问者采取行动去超越休闲内容视图或 Web 站点访问,营销商、 广告商及内容创作者微妙或直接请求。")

在开发应用程序的世界里,A / B 测试手段测试两个不同版本的元素 (如网页或按钮) 使用定义了成功的一种情况在另一个度量。

假设您有两种设计的一个页面,A 和 b。 通常情况下,A 是现有的设计 (控制),而 B 是新的设计。您可以使用一个道理为您的应用程序 (也许单击特定按钮) 来找到你成功公制或你的转化率的度量其性能拆分您的用户基础这些措施和两个版本之间。在测试结束时,您选择的元素的执行效果最佳。

换句话说,假设每个设计是其 XAML 文件 (page3v1.xaml 和 page3v2.xaml) 与不同的应用程序页。每个页面上,你有你的目标 — — 需用户单击的按钮 — — 和你可以使用该按钮的 click 事件来跟踪确认成功按钮的单击操作的自定义事件。通过利用 MVVM 模式,你可以解耦从模型和视图模型,所以你很容易可以有两个包含相同的逻辑和数据的 XAML 文件。

你可以然后使用类似于下面的代码,使用户对页面进行测试,拆分均匀版本 A 和 B 的页面之间的导航:

if (DateTime.Now.Second % 2 == 0)
  this.Frame.Navigate(typeof(Page3V1));
else
  this.Frame.Navigate(typeof(Page3V2));

你可以按录制按钮单击使用跟踪成功的布局:

GoogleAnalytics.EasyTracker.GetTracker().SendEvent(
  "ABTest", "Scenario1", "pageV1", 0);

或第一页上的单击按钮:

GoogleAnalytics.EasyTracker.GetTracker().SendEvent(
  "ABTest", "Scenario1", "pageV2", 0);

在第二页上的同一按钮的单击。

每个标签 (PageV1,PageV2) 的事件的总数确定的最成功的页。测试结束,该页只会继续时在应用程序中,而其他可以被删除。

总结

在现代应用程序开发,遥测和分析工具可以有真正的差别如何快速您可以识别用户的行为,以及应用程序的问题和他们的决议。在这篇文章中,我讨论了只有一个小样本的情况,可以分析。数量和类型的这种情况被有限只有通过你的想象力和好奇心。


Nicola Delfino 是在微软意大利事务司和作者的"Caledos 跑步者,"其中一个最成功的健身跟踪应用程序的 Windows Phone,这给了他机会使用遥测发现、 分析人们如何使用他的应用,以及应用程序开发经理你能联系到他在 nicold@microsoft.comnicola@caledos.com

感谢以下的微软技术专家对本文的审阅:克赖希 Brockschmidt