开发者的分析入门

谎言有三种:谎言、该死的谎言和统计数据 - 马克·吐温

决定要跟踪什么(所有内容)

在向系统添加分析时,应尝试记录所有内容。将来,如果您需要从系统中提取信息,拥有所有信息比意识到您需要一些尚不存在的跟踪数据要好得多。以下是一些关于收集和分析用户如何与您的网站或应用程序进行交互的信息的指南和建议。

将统计数据分组作为最佳实践

大多数分析平台允许您使用元数据标记事件。这使您可以针对彼此分析统计数据,并使比较用户交互中的元素变得更加容易。

例如,如果您正在记录菜单上的点击次数,您可以以不同的方式跟踪每个菜单项,例如:

track("Home pressed");
track("Cart pressed");
track("Logout pressed");

这样做会使回答诸如哪个按钮最受欢迎等问题变得更加困难。使用元数据,您可以让大多数分析平台为您执行此类计算。

track("Menu pressed","Home button");
track("Menu pressed","Cart button");
track("Menu pressed","Logout button");

上面的分析意味着您现在拥有所有菜单按压的总数,并且您可以毫不费力地找到最受欢迎/最不受欢迎的菜单项。

优化您的漏斗

一个转换漏斗是一个源于消费者营销模型的术语。漏斗的隐喻描述了用户在更深入地参与您的软件时所经历的步骤流程。假设您想知道有多少用户点击了“登录”,然后“在结账时付款”?如果您跟踪诸如“结账完成”和“用户登录”之类的事件,那么您可以询问您的分析平台,在特定时间范围内(例如一天)有多少用户在这两个事件中都进行了操作。

假设答案为 10%,这告诉您有关用户行为的有用信息(请记住,此漏斗不是顺序敏感的,即登录 -> 购物车 -> 支付或购物车 -> 登录 -> 支付的事件发生顺序无关紧要)。因此,您可以开始优化应用程序的各个部分,并使用此值来确定您是否正在将更多用户转化为购买或以其他方式更深入地参与。

决定要衡量什么

根据您的业务,不同的统计数据将具有不同的重要性级别。以下是开发应用程序或在线服务的开发人员感兴趣的一些常见统计数据

会话次数
您产品上的总会话次数(用户打开您的产品、使用它、然后关闭它 = 1 个会话)
会话时长
每个会话持续多长时间(可以是众数、平均数、中位数)
留存率
有多少用户在之前使用过您的产品后又回来了(有很多指标,例如滚动留存率、30 天留存率等)
MAU
月活跃用户:每月有多少用户使用该应用程序一次
DAU
日活跃用户:每天有多少用户使用该应用程序一次
ARPU
每用户平均收入:您每人赚多少钱
ATV
平均交易价值:您每笔销售赚多少钱
CAC
客户获取成本:获得一名额外用户需要花费多少成本(通常按获取他们的渠道指定)
CLV
客户终身价值:从一名用户获得的总利润(通常是预测的)
流失率
在给定时间内离开您产品的用户数量(通常以总用户群的百分比给出)
周期时间
一名用户推荐另一名用户所需的时间

选择分析工具或平台

有很多分析提供商,以下是其中一些最知名和使用最广泛的提供商

Google Analytics

网站
开发者文档

快速事件日志示例

ga('send', 'event', 'button', 'click');

优点

  • 免费
  • 易于设置

缺点

  • 使用该平台的学习曲线陡峭
  • 可能需要专门的培训才能充分利用该平台

单页面应用程序

如果您正在制作单页面应用程序/网站,您需要让 Google 知悉用户仍然在您的页面上,并且没有跳出(访问您的页面/应用程序后没有执行任何操作就离开了)

ga('set' , 'page', location.pathname + location.search + location.hash);
ga('send', 'pageview');

每次用户导航到应用程序/网站的新部分时,使用上面的代码来让 Google 知道用户仍在浏览您的网站/应用程序。

Flurry

网站
开发者文档

快速事件日志示例

FlurryAgent.logEvent("Button clicked");
FlurryAgent.logEvent("Button clicked",{more : 'data'});

优点

  • 免费
  • 易于设置

缺点

  • 数据通常比实时数据滞后 24 小时
  • 加载数据需要很长时间

Mixpanel

网站
开发者文档

快速事件日志示例

mixpanel.track("Button clicked");
mixpanel.track("Button clicked",{more : 'data'});

优点

  • 免费试用
  • 易于设置
  • 实时数据

缺点

  • 免费试用结束后会变得很贵
  • 如果您正在跟踪许多点,界面可能会变得杂乱

加快请求速度

当您加载外部 JS 文件时,如果可能,您希望异步执行此操作以加快页面加载速度。


上面的代码将导致 JavaScript 异步加载,但假设用户拥有支持 HTML5 的浏览器。

//jQuery example
$.getScript('https://cdn.flurry.com/js/flurry.js', 
function(){
   ...
});

此代码将使用更大的浏览器支持异步加载 JavaScript。

下一个问题是,您可能会尝试添加分析,即使框架尚不存在,因此您需要先检查是否存在框架变量。

if(typeof FlurryAgent != "undefined"){
   ...
}

这将防止错误,并且还使您能够在测试期间轻松禁用分析。(您可以阻止脚本加载 - 变量将永远不会被定义。)

这里的问题是,在等待脚本加载时,您可能会丢失分析。相反,您可以创建一个队列来存储事件,然后在脚本加载时将所有事件都发布出去。

var queue = [];

if(typeof FlurryAgent != "undefined"){
   ...
}else{
   queue.push(["data",{more : data}]);
}

...

//jQuery example
$.getScript('https://cdn.flurry.com/js/flurry.js', 
function(){
   ...

   for(var i = 0;i < queue.length;i++)
   {
      FlurryAgent.logEvent(queue[i][0],queue[i][1]);
   }
   queue = [];
});

Firefox 应用程序的分析

您可以在 Firefox OS 中使用上述任何提供商,但请记住,当您将脚本粘贴到代码中时,它们通常是协议无关的:它们以 //myjs.com/analytics.js 开头,您需要选择 http: 或 https: - https://myjs.com/analytics.js(这仅在您制作打包应用程序时才需要。)

请告诉我们进展情况。

关于 Mark Wheeler

Rormix 的首席技术官 - 值得观看的音乐

更多 Mark Wheeler 的文章...


4 条评论

  1. Jesus Perales

    哇,好文章,我想要这些信息或类似的信息,我在 AngularJS(angulartics)中实现了 Flurry,但我下载了 Flurry JS 并将其包含在我的项目中,这是一种不好的做法,但这篇文章可以帮助我。

    谢谢

    2015 年 3 月 17 日 下午 1:56

    1. Mark Wheeler

      如果您链接到 Flurry,我建议使用 async 关键字,因为它加载 Flurry 服务器上的 JS 可能很慢(或者使用库加载程序)。

      2015 年 3 月 17 日 下午 2:35

      1. Jesus Perales

        这是一个打包应用程序,FirefoxOS CSP 不允许 HTML 上的 javascript(我认为是这样的 http://stackoverflow.com/questions/19910906/flurry-analytics-on-firefox-os-privileged-app),这是我的应用程序 https://marketplace.firefox.com/app/clima

        2015 年 3 月 17 日 下午 3:12

  2. Sibil Mohammed

    Piwik 应该被提及,它是一个不错的开源替代方案。

    2015 年 3 月 19 日 下午 12:53

本文的评论已关闭。