十二 埋点与分析

分析收集到的生产数据,用以发现应用的使用趋势、用户行为,并通过埋点、分析和真实用户监控对应用进行改进和优化。

12.1 词汇

  • 属性:需要获得具体值的参数,如应用版本、系统版本、位置、语言、使用内存等;
  • 事件:在应用中发生的任何行为,无论是由用户还是由应用本身触发;用户触发的事件包括登陆、观看视频等;应用触发的事件包括冷启动、后台同步、下载邮件等;一个事件是一系列属性的集合,这些属性包括系统版本、设备型号、应用冷启动的用时、后台同步传输的数据量、下载邮件占用的内存,等等。
  • 漏斗:用来测量用户如何在一系列事件中切换的工具;一个漏斗可以用来发现使用模式以及常见任务或应用退出的位置。
  • 埋点:监控或测量性能水平和诊断错误的一种能力。在应用开发领域,它指的是向服务器发送对应的事件以便分析。
  • 埋点源码:在应用中注入埋点代码。
  • 分析:在数据中发现和传达有意义的模式。在应用开发领域,分析数据来源于应用埋点。
  • 同类群组:特定时间内拥有共同特征的一组用户。
  • 同类群组分析:对根据同类群组特征区分的数据进行分析。
  • 归因:将应用的销售功劳和转化功劳分配给转化路径中的接触点;用户可能有多个选项来开始购买或完成任务。归因模型规定了哪些选项将获得积分,并因此获得在广告活动中花费的资金份额。
  • 真实用户监控:被动监控技术,用于记录用户与应用的所有交互,将其发送到服务器,并帮助监控使用情况、趋势和出现的问题。

12.2 埋点

从概念来说,埋点与日志并没有区别,只是埋点的目的是将数据存储在服务器,从而达到持久化,并将其用于分析,包括离线批处理任务或实时计算。

12.2.1 规划

部分(国外)常用iOS第三方统计库:

  • Flurry
  • MixPanel
  • Appsee 支持交互热力图以及录制应用使用的视频。
  • Upsight 支持归因和同类群组分析。
  • Google Analytics

分析引擎应当包含以下的重要功能:

  • 可扩展事件:可以对任意事件添加自定义参数或内容。
  • 同类群组分析:使用可扩展事件的参数,过滤和分析其中特定的值。
  • 事件计时:可以获取事件的持续事件。
  • 记录所有页面视图:可以分析视图控制器的展示和消失。
  • 用户:可以设置用户,从而跟踪匿名用户,记录事件。
  • 交易:可以提供交易的货币价值,常用于电商或使用内购的应用。
  • A/B测试:可以进行A/B测试,监控用户行为。
  • 实时数据:可以获取实时或近实时数据。
  • 安全:可以监控安全,监控与服务器通信的安全程度,以及服务器上的数据的安全程度。
  • 会话回放:可以录制视频,之后回放。这样可以近距离监控应用的使用情况,更好的发现出错场景,更快地对其进行修复。
  • 热力图:可以产生热力图来确认应用的热点和盲点。
  • 归因:可以跟踪点击以及应用安装的归因。
  • 活动:支持有组织或自发的活动。
  • 漏斗:使用事件流定义漏斗。
  • 原始事件:在复杂的处理过程中使用源数据是锦上添花的一件事。

12.2.2 实现

确定埋点方案,然后进行配置:

  • 确定指标:这个过程需要产品、营销和工程师团队合作。产品经理需要用户体验统计,营销团队感兴趣的是应用使用情况和用户感兴趣的部分,而工程师团队希望了解应用的性能。
  • 定义事件:定义事件名称和相关内容来支持关键的绩效指标。例:如果工程师团队需要内存使用的均值和峰值,那么事件应该包括已使用内存的数据、空闲内存,以及应用启动和运行的时间。
  • 编写代码:埋点类--方法列表
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
[@interface](https://my.oschina.net/u/996807) HPInstrumentation : NSObject
+(void)logEvent:(NSString *)name param:(NSDictionary *)params;//1.记录一般事件
+(void)startTimeForEvent:(NSString *)name params:(NSDictionary *)params;
+(void)endTimeForEvent:(NSString *)name params:(NSDictionary *)params;//2.记录计时事件

+(void)logViewControllerDidAppear:(UIViewController *)vc;//3.记录用户浏览过的视图控制器
+(void)setLocation:(CLLocation *)location;//4.为后续事件设置位置信息
+(void)setUserId:(NSString *)userId;//5.为后续事件设置用户ID,常用于记录登陆后的行为

+(void)logError:(NSString *)name message:(NSString *)message exception:(NSException *)e;//6.记录错误的特殊事件

+(void)setMinimumTimeBetweenSessions:(NSTimeInterval *)interval;//7.计算会话次数的特殊处理,影响日常活跃用户的计数。
[@end](https://my.oschina.net/u/567204)

可以使用Aspects来设置常用跟踪事件:

	[UIViewController aspect_hookSelector:@selector(viewDidAppear:)//1.添加一个钩子方法到类UIViewController的viewDidAppear方法上。
                             withOptions:AspectPositionAfter //2.钩子方法必须在原始方法调用后生效。
							   usingBlock:^(id<AspectInfo> info, BOOL animated){//3.实现钩子方法。参数是id<AspectInfo>,提供了调用块的上下文对象,以及原始方法(此处是viewDidAppear:)需要的参数
								   NSDictionary *eventParams = @{@"ViewContrillerClass":[info.instance class]};//4.设置被记录事件的参数
								   [HPInstrumentation logEvent:@"viewDidAppear" param:eventParams];//5.记录日志
							   }error:NULL];
  • 验证:发布前需要先验证。测试不仅仅要考虑正确性,同时也要考虑规模。确保依赖的第三方服务有足够的容量不会被应用事件的流量压垮。

12.2.3 部署

涉及发布服务器到生产,以及发布应用到App Store。

12.3 分析

分析使用埋点事件产生的数据来展示有利于实现目标规划的洞见。 分析对发现趋势和关键指标分布非常有用。可以用它来发现每个用户的平局会话时长或平均交易量。但不要将其用于跟踪,例如,应用已经被安装了多少次。一个特定的API可以准确跟踪这些统计项。

12.4 真实用户监控

真实用户监控是监控应用以获取和分析用户的每个事务的方法。他依赖于服务端或客户端内用于监控的服务,这些服务可以监控活动的组件、其功能、应用的响应性、总体的资源使用情况和其他各种参数。

12.4.1 分析与真实用户监控对比

分析和真实用户监控的巨大差异在于,分析只使用一部分数据(样本)进行处理来提供高级趋势预测。 各种各样的产品提供对应用进行埋点和分析的功能,并将自己列为分析工具而不是真实用户监控的工具,因为它们只是样本。

12.4.2 使用真实用户监控

真实用户监控会记录所有的事件,而不仅是样本,所以应将其用于监控关键事件。

  • 任何错误,包括应用奔溃或无效状态。
  • 应用新版本发布后质量的变化。
  • 新功能相关的用户行为变化。
  • 记录重要事务中的每个步骤。

猜你喜欢

转载自my.oschina.net/u/2319073/blog/1604984
今日推荐