分析收集到的生产数据,用以发现应用的使用趋势、用户行为,并经过埋点、分析和真实用户监控对应用进行改进和优化。安全
从概念来讲,埋点与日志并无区别,只是埋点的目的是将数据存储在服务器,从而达到持久化,并将其用于分析,包括离线批处理任务或实时计算。服务器
部分(国外)经常使用iOS第三方统计库:工具
分析引擎应当包含如下的重要功能:性能
肯定埋点方案,而后进行配置:测试
#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];
涉及发布服务器到生产,以及发布应用到App Store。.net
分析使用埋点事件产生的数据来展现有利于实现目标规划的洞见。 分析对发现趋势和关键指标分布很是有用。能够用它来发现每一个用户的平局会话时长或平均交易量。但不要将其用于跟踪,例如,应用已经被安装了多少次。一个特定的API能够准确跟踪这些统计项。日志
真实用户监控是监控应用以获取和分析用户的每一个事务的方法。他依赖于服务端或客户端内用于监控的服务,这些服务能够监控活动的组件、其功能、应用的响应性、整体的资源使用状况和其余各类参数。code
分析和真实用户监控的巨大差别在于,分析只使用一部分数据(样本)进行处理来提供高级趋势预测。 各类各样的产品提供对应用进行埋点和分析的功能,并将本身列为分析工具而不是真实用户监控的工具,由于它们只是样本。视频
真实用户监控会记录全部的事件,而不只是样本,因此应将其用于监控关键事件。