友盟统计苹果手机App统计埋点方案的实施和重构代码过程

本文介绍了在一个媒体中心编辑工具APP中如何实施友盟统计的埋点方案,以增强故障定位和代码优化。在API接口调用层进行埋点,并通过代码重构降低冗余,提高可读性。通过在父类中封装友盟SDK调用,实现了更换统计SDK时的便捷性。
摘要由CSDN通过智能技术生成

我们的App是一个媒体中心编辑、记者使用的工具APP。为了及时反馈客户,优化代码。项目经理决定在关键模块进行友盟统计的埋点。

之前我们的App已经集成了友盟SDK,主要是为了利用友盟的自动化收集机制,收集程序崩溃信息。这次利用SDK提供的功能,决定进行更细致的埋点统计,主要是为了解决出现故障时候,可以由开发人员定位故障发生位置,当时的情况和故障的大致原因。为后续的代码优化提供依据。

开发组内部讨论后,由于大部分故障都和API接口的调用有关,因此埋点位置,主要在API接口调用层。友盟SDK的接口文档,规定可以自定义事件,每个事件可以定义500个属性。

我们制定的统计协议如下:

1)按照接口URL简写设定事件ID;

2)事件属性设置如下:

a)response_Result  返回结果统计字符串 

格式:时间_SUCCESS_cost:耗时_发生界面_(可选)_下个接口

b)request_Params 传入请求统计,知道这个API调用者和开始调用时间

格式:时间_用户ID_发生界面

c) response_error 返回错误的统计字符串

格式:时间_FAIL_cost:耗时_失败日志(可中文)_发生界面

最后出现在统计界面效果如下:

 

 

 

 

先对于UM的SDK使用进行,底层封装。

代码如下:

#import <Foundation/Foundation.h>
#import <UMCommon/UMCommon.h>
#import <UMCommon/UMConfigure.h>
#import <UMCommonLog/UMCommonLogHeaders.h>
#import <UMCommon/UMCommon.h>
#import <UMPush/UMessage.h>
#import <UMAnalytics/MobClick.h>
#import <UMCommonLog/UMCommonLogHeaders.h>
NS_ASSUME_NONNULL_BEGIN

@interface AppDelegateUM : NSObject


@property(nonatomic,assign)int cost_time;//记录耗时



//拼接response_Result 推送response_Result到友盟
+(void)PushResponse_ResultToUM:(NSString *)eventid /*事件ID**/
                      costtime:(long)costtime /*耗时**/
                      activeInterface:(NSString *)activeInterface /*传入发生界面**/
                      nextAPI:(NSString *)nextAPI /*传入下个接口**/
                      activeDate:(NSString *)activeDate ; /*传入发生时间**/


//拼接request_Params 推送request_Params到友盟
+(void)Pushrequest_ParamsToUM:(NSString *)eventid /*事件ID**/
                      activeInterface:(NSString *)activeInterface /*传入发生界面**/
                      userid:(NSString *)userid /*传入用户ID**/
                      activeDate:(NSString *)activeDate ; /*传入发生时间**/


//拼接 response_error 推送response_error到友盟
+(void)Pushresponse_errorToUM:(NSString *)eventid /*事件ID**/
                      costtime:(long)costtime /*耗时**/
                      activeInterface:(NSString *)activeInterface /*传入发生界面**/
                      failLog:(NSString *)failLog/*传入失败日志**/
                      activeDate:(NSString *)activeDate ; /*传入发生时间**/


/**获取当前时间戳*/
+(long)GetNowTimeTimestamp;

/*获取当前时间**/
+(NSString *)getCurrentTime;


+(void)UP;
//计数事件
//统计事件发生的次数
+(void)countEvent:(NSString *)eventid;

//NSDictionary *dict = @{@"type" : @"book", @"quantity" : @"3"};
//统计事件发生的属性的次数
+(void)countEventByAttr:(NSString *)eventid attr:(NSDictionary *)dict;

//计算事件
//NSDictionary *dict = @{@"type" : @"book", @"quantity" : @"3"};
//统计事件发生的属性的次数
+(void)countEventByAttrAndCount:(NSString *)eventid attr:(NSDictionary *)dict counter:(int)counter;


//自定义事件
//记录接口的成功返回
//记录事件定义  和成功返回的属性值 传入参数
/**
 eventid  事件ID
 url API地址
 para 传入参数
 jsonRes 返回值
 */
+(void)recordApiSuccessRes:(NSString *)eventid url:(NSString *)url para:(NSString *)para jsonRes:(NSString *)jsonRes;


//记录接口的失败返回
//记录事件定义  和成功返回的属性值 传入参数
/**
 eventid  事件ID
 url API地址
 para 传入参数
 jsonRes 返回值
 */
+(void)recordApiErrorRes:(NSString *)eventid url:(NSString *)url para:(NSString *)para jsonRes:(NSString *)jsonRes;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值