极客学院团队出品 · 更新于 2018-11-28 11:00:42

分析清单:测量和寻找哪些方面

当你发布一个应用程序或更新时,你经常希望获得新用户和/或更多的收益Google Play Developer Console一直为你追踪这些指标,但无论你是看到你喜欢的数字还是不喜欢的数字,但是你仍然不知道是什么驱使的他们。

Analytics,一般情况下,我使用它收集使用和错误数据,它能帮助你了解痛点和你的应用程序的用户,让您专注于清除障碍和更好地服务于用户的需求。反过来,这也会提高用户满意度,产生更高的使用率和新用户,以及每个用户的更高收入。

特别是,Google Analytics配备了一个Android SDK,网络接口已经被许多企业用户所熟知,使它成为一个实现分析策略的强大工具在Android开发者网站上有一节专门讲述了它的特点。这是一款非常强大的工具,它可以给你关于你的用户的“开箱即用的”数据。让我们先暂时撇开实施细节,先关注如何衡量和寻找……

识别功能问题

  • 崩溃——如果你没有存在这个问题,定期在Google Play Developer Console上检查异常和ANRS报告。

  • 捕捉异常——有一些异常是预期要发生的,但是你应该了解它们,因为可能会在你的应用程序中显示一个潜在的问题。

  • 服务器通信——对于提供一个快速,平稳,高效的应用程序,背景同步是至关重要的。你调用服务器需要多久呢?你的调用以IO 异常结束或响应时间超过10秒的情况占多数比例呢?你的用户在使用WiFi,4G,3G和2G的比例有多大呢?关系到本地缓存和服务器同步发生具体异常(例如SQLExceptions)的频率有多少呢?

  • 定位、定位、定位——对于你捕捉到的异常,他们是否是特别针对对于一个给定的时区和语言而发生?Android是当今世界上最流行的移动平台,所以你不能假设你的用户生活都处在你所在的国家,说着你所说的语言。

  • 搜索——用户是根据你所期望的方式搜索吗?在他们查询过程中,他们做出错误的拼写时,适当的建议可以减少错误拼写吗?

识别UI问题

至少,你应该追踪你的用户的交互活动,他们在每个画面花费多长时间,以及每个活动之间的流程,以确定以下问题。

  • 画面UI层次结构——你ActionBar真的需要这些图标吗?你是否应该或高或低地移动屏幕上的一个按钮(特别是需要较长滚动的屏幕)?

  • UX流程——如果很多用户需要经过屏幕A -> B -> C -> D,是否需要为他们设定一个A -> D的屏幕过渡方式?此外,你可以考虑具体的追踪来帮助你发现潜在的问题。

  • 慢画面初始化——你在onCreate中加载的一些数据,是否应移出主线程?

  • 滚动——如果你有很长的屏幕,你知道你的用户需要滚动多少吗?你为你的用户设计的数据加载速度够快吗?

理解你的用户

收集了解UI问题的数据也将帮助你了解你的用户。

  • 未发现的功能——你可以通过着眼于结合用户评论和点击数据实现评估用户未发现的功能。

  • 未使用的功能——你可以通过着眼于结合点击数据和一个特定的画面时间实现评估未使用的功能。

下一步,根据基本的理解通过分组划分用户段,例如重度使用者,中度使用者和罕见的用户。对于每一段,你需要自问的基本问题是:

  • 你的用户使用该应用程序有多频繁?

  • 他们在哪里花费了时间?

  • 最常见的界面流程是什么?

  • 是否有某些功能未被发现?

  • 是否有某些功能未被使用?

  • 您的用户如何与你的推送通知互动?

核心原则是为你的用户创建一个丰富、有意义的体验,在正确的时间提供正确的信息。一旦你了解了你的用户,你可以考虑围绕广告、内容和个性化方面设计有针对性的策略。例如,你可以:

  • 专注于某一段和你的应用程序广告等。

  • 当进行了某些特定的行为时,在你的主屏幕上提供上下文帮助,这是游戏在玩家低等级时经常采用的策略。

  • 个性化你的主屏幕,例如,通过根据用户类型适应不同截面的位置。

在应用程序中创建和维护强大分析的技巧

  • 写下你的假设——用你的详细的路线图,史诗或简单的长期目标以呈现你对你的用户的假设。

  • 为每个假设分配风险——你的依赖于这一假设的长期目标中有多少是真实存在的?

  • 考虑你如何能确定每个假设的有效性——开始于你的最危险的假设,考虑从你的应用程序中收集的数据以帮助你确定或消除每个假设

  • 从现在开始,设身处地为你自己考虑六个月——想象一下,到那时,你的应用程序是完全无bug,有足够的用户来证明你的投资将产生一轮又一轮的大发展。你的各种选项是什么?你需要知道哪一个是最好的?

  • 部分功能的实现分析——由于太容易对功能急于求成,而忘记分析。然而,你怎么才能衡量你的新功能的影响?

  • 重复你的分析——当你获得对当前用户的相关认知后,毫无疑问你会问自己很多关于他们的问题。就像你重复使用你的应用程序,同时重复你的分析。

用户的隐私数据

是的,收集数据是为了更好地服务于你的用户,但不要忘记你的用户的隐私,所以匿名化你收集到的数据。特别是,请确保你遵守开发者分发协议的第4.3节。

一些数据,如用户的位置是特别敏感的,所以你可能想把你的数据集分成两组。第一组不需要用户的同意就可以收集,它将使用匿名的IP,并且是一般的事物信息,如一般用户细分、点击事件和屏幕。第二组需要用户的同意,它不使用匿名的IPs,并且可能包括诸如用户位置等信息。

实施建议

  • 定义一个接口——为了获得最大的灵活性,为你的分析方法创建一个接口,一个一般的实现类(从你的代码中调用),一个实现类用于你所选择使用的提供程序。通过这种方式,你应该决定改变分析提供程序,你可以简单地为新的提供程序添加一个实现类,并改变你的一般实现类的代码用于替代这个提供程序。

  • 为屏幕和事件定义枚举——每个枚举分别为画面或事件发送完整的数据到分析服务,使你的应用程序中的分析代码非常简洁和易于维护。

  • 开发设置——分析也需要被测试,所以,为你的开发构建使用不同的分析ID。你一旦在你的应用程序中完成分析,确保你的业务团队能够访问开发分析数据,以确保他们能理解它。

  • A/B测试——完成这项测试的一种方式是在毫秒系统中对当前时间使用模数函数,以确定用户测试组ID,然后将它保存在一个共享的首选字段里。这应该在你的应用程序类onCreate方法中完成,仅进行一次。例如,如果你要发送90%的用户到ID1的组和10%的用户到ID2组,你会如下编写代码:
int userTestingGroupId = System.currentTimeMillis()%10 != 0? 1:2;

请记得

  • 亲自做可用性测试——这可以通过你的应用程序的一个原型完成。亲自进行可用性测试是你的第一个调用端口,用以识别UI问题。

  • 做手工和自动化测试——应用程序测试是你的第一个调用端口,用于识别函数问题。

  • 在Google Play Developer Console上使用 α/β发行渠道——在你的所有用户体验它们之前,最好能捕捉功能和UI问题。你可能会考虑分割你的alpha/beta渠道以匹配特定的用户细分,例如只有重度使用者可以成为alpha测试者,只有中度使用者可以成为beta测试者。