寻找更好的移动分析
已发表: 2022-03-10在创建移动应用程序时,开发人员会设想一个模型以及用户使用该应用程序的方式。 开发人员面临的一个问题是用户并不总是按照开发人员设想的方式使用应用程序。
用户如何与应用程序交互? 他们在应用程序中做什么? 他们做开发人员希望他们做的事情吗? 移动分析有助于回答这些问题。 分析使开发人员能够了解应用程序在现实生活中发生的情况,并在了解用户实际使用情况后提供调整和改进应用程序的机会。 简而言之,分析是对用户行为的研究。
关于 SmashingMag 的进一步阅读:
- 优先设备:测试和响应式网页设计
- Noah 向移动可用性测试的过渡
- 世界上最好的开放设备实验室在哪里?
- 简单无痛的移动用户测试指南
在本文中,我们将比较一些最流行的移动分析系统。 将分析添加到应用程序的过程涉及考虑许多细节,我们的目标是为您提供有关实施分析的有用提示。 这些信息应该可以帮助您找到适合您需求的移动分析系统,并帮助您在应用程序中正确实施它。
现实生活中的分析
让我们以我们开发的一个小型 iOS 应用程序为例。 它被称为 What I Eat,旨在跟踪用户的饮食习惯。
用户可以跟踪他们的用餐情况,查看每日用餐记录,并在日历中的日期之间切换以查看以前的记录。 该应用程序有一个广告横幅,但用户可以付费禁用它。
在设计 What I Eat 时,我们的主要关注点是让用户轻松添加新的用餐记录并轻松查看他们的每日用餐历史记录。 我们还希望通过应用内购买从应用中获利,以移除广告。 为了了解我们是否成功地做到了这一点,我们在应用程序中跟踪以下事件:
- 当用户第一次启动应用程序(应用程序安装)时,
- 当用户打开每日膳食列表(主应用程序屏幕)时,
- 当用户添加新的用餐记录时,
- 当用户进行应用内购买以移除广告时。

在本文后面,我们将展示我们如何使用分析来确定用户是否已开始使用该应用程序,以及安装该应用程序后有多少用户开始跟踪膳食。
比较分析服务
今天,市场上有大量的分析服务,从谷歌分析等知名系统到利基工具。 分析和比较所有这些需要很长时间; 因此,对于本文,我们将只使用我们认为最方便的那些。 也就是说,我们选择了仪表板界面和数据挖掘工具箱相对易于理解且易于使用的工具,以供那些没有太多分析经验的人使用,例如我们的客户。 作为面向移动的分析系统,从开发的角度来看,它们也很方便,因为分析代码可以在移动应用程序中轻松实现和调整。 以下是系统:
- 雅虎的乱舞
- Crashlytics 的回答
- 振幅
- 混合面板
为了分析 What I Eat 的表现,我们使用了几乎每个分析系统都提供的两个主要工具:事件和漏斗。 事件描述了用户在应用程序中所做的事情,而漏斗则允许对这些数据进行定性分析。 让我们来看看每个系统是如何为我吃的东西实现这些的。
混合面板
Mixpanel 允许您跟踪自定义事件。 开发者可以为事件添加自定义参数,并使用这些参数来细分转化渠道。
我们构建了一个包含两个事件的漏斗:“安装”(表示安装后首次启动应用程序)和“添加餐点”(跟踪用户每次添加餐点的时间)。 这些向我们展示了有多少百分比的用户不仅下载了该应用程序,而且还开始使用它。 转化率估计为 65%,这意味着在安装该应用程序的 100 人中,多达 65 人开始跟踪膳食。

有时,开发人员需要事件在应用程序中发生后实时或以最小的延迟出现在分析仪表板中。 例如,开发人员可能已经启动了社交媒体营销活动,并且需要实时跟踪它如何影响他们的应用程序。 Mixpanel 几乎实时显示事件。 几乎可以立即计算和可视化新创建的渠道。
振幅
在开发人员将 Amplitude 的软件开发工具包 (SDK) 添加到他们的项目后,无需进一步设置事件或漏斗,该软件就开始跟踪每日和每月活跃用户(DAU 和 MAU)数据。 我们在 What I Eat 中大量使用它来了解每天有多少人使用该应用程序。

与 Mixpanel 一样,Amplitude 提供了一个强大的工具箱来处理事件和漏斗; 开发人员可以创建一个漏斗并按参数对其进行分段。 与 Mixpanel 不同,Amplitude 可以直接在漏斗图中可视化细分,这在您需要了解参数如何影响转化率时非常方便。 下面的图表显示了从“安装”到“添加餐点”的转换如何根据界面的语言而变化。

如您所见,俄语界面显示出比英语界面更好的转换(83% 对 66%)。 因此,随着我们的下一次应用程序更新,我们可能需要更多地关注我们的非俄罗斯观众。
Crashlytics 的回答
与 Amplitude 一样,一旦将 Answers 的 SDK 添加到应用程序项目中,它就会开始跟踪数据。 开发人员几乎不费吹灰之力,Answers 提供了移动应用程序的一些关键性能指标 (KPI) 的整洁视图:MAU、DAU、每日新用户和会话。

开发人员可以将自定义 KPI 定义和跟踪为事件,Answers 将以相同的方式将它们可视化。
Answers 还提供有关您的受众的活跃程度以及人们在应用程序中花费的时间的见解。

Answers 的分析会保留过去 30 天的数据,并且没有漏斗。 因此,它仅适用于对应用程序性能的简单和短期分析。
雅虎的乱舞
当您需要构建漏斗和进行群组分析时,Flurry 不如 Mixpanel 或 Amplitude 方便。
Flurry 用户最多可以创建 10 个细分并将它们应用到一个渠道。 向现有渠道添加新细分需要重新计算,这可能需要大约一天的时间。 用户不能创建超过 10 个细分以应用于他们的渠道。 新创建的渠道的计算最多可能需要三天时间。
我们还没有发现 Flurry 的事件和漏斗对 What I Eat 有用,我们主要使用 Mixpanel 和 Amplitude。

还有什么重要的?
虽然事件和渠道是关键功能,但在选择正确的分析系统时还需要考虑其他一些因素。
人口统计数据
一些分析服务提供有关应用程序受众的洞察数据,即使这些数据不是在应用程序中收集的。 他们通过从移动应用程序以外的来源获取用户数据来做到这一点。 当您需要识别您的高级用户但您的应用程序不收集有关他们的任何数据时,这会派上用场。 例如,在 What I Eat 应用程序中,用户无需注册,我们也没有其他方式可以接收用户数据,但我们仍然想知道谁在使用它,以便通过应用程序准确定位新用户更新。
Answers 提供有关您的受众的数据,例如他们的性别和兴趣。 你可能想知道它是如何做到的? 嗯,Answers 与 Twitter 紧密集成,并且由于 Twitter 几乎了解使用该平台的每个人的所有信息,因此 Answers 会利用这些个人数据。

Flurry 通过近似从共享它的应用程序接收到的用户信息来估计人口统计数据。 开发者之所以分享这些信息,是因为他们通过向 Flurry 提供洞察数据,获得了更精确的受众数据集。 Flurry 向您显示用户的兴趣、年龄范围和性别。

在 Flurry 和 Answers 的帮助下,我们可以看到 What I Eat 的受众主要是对健康和健身感兴趣的中年女性。
Mixpanel 和 Amplitude 不提供任何人口统计数据。
用于导入和导出数据的外部 API
分析允许通过外部 API 导入和导出数据。 导出允许在分析仪表板之外分析数据(即借助 Windrush 和 DataHero 等第三方数据挖掘软件)。 导入 API 使您能够将数据从后端服务器和归因跟踪系统(如 AppsFlyer)等来源部署到分析平台。 让我们来看看哪些分析服务提供了这样的功能:
- Amplitude 为事件的导入和导出提供了一个外部 API。
- Mixpanel 具有导入和导出 API。 它支持 JavaScript 查询语言以允许复杂的导出查询。
- Answers 没有外部 API。 您可以从仪表板将事件数据下载为 CSV 文件,但它不包含任何事件参数。
- Flurry 没有导入 API。 您只能使用其导出 API 导出数据。
价钱
移动分析公司尝试定价,并可能经常更改其费率。 以下数据来自 2016 年 7 月:
- Flurry 和 Answers 完全免费。
- Amplitudes 的免费计划每月提供 1000 万个事件。 如果您希望跟踪更多,则每月将花费 2,000 美元。 尽管我们在很多项目中都使用了 Amplitude,但我们从来不需要切换到付费层,因为免费计划的限制也很高。
- Mixpanel 提供每月 25,000 个事件的免费套餐。 一百万个活动每月花费 300 美元。 对于超过 1000 万个事件,您必须每月支付 1,250 美元。
分析实施技巧
现在我们知道了每个分析系统之间的主要区别,让我们深入了解实施分析的实际方面。
做你的作业
如果您决定在您的应用程序中需要分析,那么编码它不是您应该首先考虑的事情。 我们认为优秀的开发人员应该从以下步骤开始:
- 写下您需要跟踪的内容。 . 首先列出您希望分析回答的问题。 根据该列表,列出您需要跟踪的事件和参数以回答问题。 不要为了它而在应用程序中包含分析。
- 根据您的分析重新表述它。 . 完成事件列表后,根据您选择的分析平台将其正式化。 例如,虽然 Amplitude 允许使用任何参数集的事件,但 Google Analytics 具有预定义的参数集。 在实施分析时要考虑到这些细微差别。
- 做一个小演示。 . 一个好主意是构建一个小型测试应用程序,在它的帮助下跟踪十几个事件,然后检查这些事件在您选择的平台中的可视化方式以及可用的数据挖掘工具。 在实时应用程序中实施分析时,利用这些知识最大限度地发挥所选平台的功能。
编码时要大处着眼
设计分析的代码,使其独立于项目的代码和分析的 SDK。 因此,将分析代码放在单独的子系统或类中,并定义可以从应用程序代码调用的接口方法。 例如,当用户点击菜单按钮时,应用程序代码将调用分析类代码。 对于用 Swift 编写的 iOS 应用程序,它看起来像这样:
/** Application code: menu tap handler */ @IBAction func menuButtonPressed(sender: UIButton) { //Showing menu, etc... AnalyticsManager.sharedInstance.userTapMenuButton() }
应用程序代码调用的通用分析类收集参数列表并将此数据发送到特定分析类。
/** General analytics class: a bridge between the application code and the specific analytics class */ class AnalyticsManager { static let sharedInstance = AnalyticsManager() private var services: [AnalyticsService] private init() { services = [AmplitudeAnalyticsService()] } func userTapMenuButton() { let name = "MenuTap" let properties: [String: AnyObject] = [/* define your properties */] for service in services { service.trackEvent(withName: name, properties: properties) } } }
特定的分析类将数据发送到分析 SDK。 在我们的例子中,它是 Amplitude 的 SDK。
/** Specific analytics class. */ class AmplitudeAnalyticsService: AnalyticsService { func trackEvent(withName name: String, properties: [String : AnyObject]?) { if let propertiesToTrack = properties { Amplitude.instance().logEvent(name, withEventProperties: propertiesToTrack) } else { Amplitude.instance().logEvent(name) } } }
有了这样的结构,每当您决定迁移到另一个分析平台或调整要跟踪的参数集时,您只需要更改分析类代码而不是应用程序代码。
分析所有数据
从您选择的分析平台中的所有来源收集数据。 使用外部 API 不仅从移动应用程序发送数据,还从后端发送数据。 如果您开展广告活动,请使用 AppsFlyer 或 Adjust 等安装跟踪系统来衡量其效率并了解您的用户来自何处。 提前选择您将使用的安装跟踪系统,以确保它与您的分析平台配合良好。
控制 SDK 数量
尝试使用应用程序中已有的分析平台 SDK。 如果您使用 Crashlytics 跟踪崩溃,则无需任何额外代码即可使用 Answers 的分析,因为 Crashlytics 和 Answers 都包含在 Fabric SDK 中。 如果您的应用程序允许在 Facebook 注册,那么它已经具有实现 Facebook 移动分析的 SDK,因此您不妨使用它。

尝试组合不同的分析系统,但不要用太多的 SDK 压倒应用程序的二进制文件。
记录它
最后,在为您的应用程序实施分析的同时,处理其文档:写下您跟踪的事件和参数以及您是如何做到的。 为此,我们通常使用存储在项目核心文件夹中的Readme.md
文件。 每个事件由以下数据描述:
- 事件名称(例如,“用户注册”);
- 被跟踪时(例如,“新用户成功注册时”);
- 参数(例如,“电子邮件/字符串”);
- 调用跟踪代码的控制器(例如,“SignInController”)。
这些细节很容易忘记,但当您想要更改要跟踪的数据集或想要迁移到另一个分析平台时,它们变得至关重要。
加起来
没有分析服务是完美的; 每个都有其优点和缺点。 在选择一个时,您应该权衡应用程序的类型、分析仪表板的界面、您的预算等因素。 您甚至可能想要使用利基解决方案,例如为分析非线性用户体验而创建的游戏分析(例如,GameAnalytics)或面向开发人员的分析(例如,Keen IO)。
我们发现 Answers 和 Amplitude 的组合可以完美地与 What I Eat 配合使用,并为应用程序提供所有必要的分析。 虽然 Answers 是免费的并显示人口统计数据和应用程序 KPI,但 Amplitude 允许进行更复杂的行为队列分析。 我们还使用 Answers 的 Fabric SDK 跟踪应用程序崩溃。
我们很想听听您在移动应用程序中使用的分析工具箱。 请在评论中分享您的想法。