自定义事件可以实现在应用程序中埋点来统计用户的点击行为。自定义事件目前包括“计数事件”和“计算事件”,二者的区别以及详细说明请点击这里(http://dev.umeng.com/analytics/functions/numekv)。
☺自定义事件使用中的问题请参见友盟开发者社区:
自定义事件常见问题(http://bbs.umeng.com/thread-5417-1-1.html),关于自定义事件的那些事儿(http://bbs.umeng.com/thread-11284-1-1.html)
4.1使用自定义事件的依赖条件
使用自定义事件功能请先登陆友盟官网(http://www.umeng.com/),在“统计分析->设置->事件”(子账户由于权限限制可能无法看到“设置”选项,请联系主帐号开通权限。)页面中添加相应的事件id(事件id可用英文或数字,不要使用中文和特殊字符且不能使用英文句号“.”您可以使用下划线“_”),然后服务器才会对相应的事件请求进行处理。
4.2 计数事件
使用计数事件需要在后台添加事件时选择“计数事件”。
4.2.1统计发生次数
在您希望跟踪的代码部分,调用如下方法:
[MobClick event:(NSString *)eventId];
eventId为当前统计的事件ID。
示例:统计微博应用中"转发"事件发生的次数,那么在转发的函数里调用:
[MobClick event:@"Forward"];
4.2.2统计点击行为各属性被触发的次数
考虑事件在不同属性上的取值,可以调用如下方法:
[MobClick event:(NSString *)eventId
attributes:(NSDictionary *)attributes];
attributes为当前事件的属性和取值(键值对),不能为空。
示例:统计电商应用中“购买”事件发生的次数,以及购买的商品类型及数量,那么在购买的函数里调用:
NSDictionary *dict =
@{@"type": @"book",
@"quantity" : @"3"};
[MobClick event:@"purchase"attributes:dict];
4.3 计算事件
使用计算事件需要在后台添加事件时选择“计算事件”。
4.3.1统计数值型变量的值的分布
统计一个数值类型的连续变量(该变量必须为整数),用户每次触发的数值的分布情况,如事件持续时间、每次付款金额等,可以调用如下方法:
+[MobClick event:(NSString *)eventId
attributes:(NSDictionary *)attributes
counter:(int)number];示例:购买《Swift
Fundamentals》这本书,花了110元
[MobClick event:@"pay"
attributes:@{@"book" : @"Swift
Fundamentals"} counter:110];
如果您使用的是V3.1.2以下版本的SDK,请使用下面的方法:
-(void)umengEvent:(NSString *)eventId
attributes:(NSDictionary *)attributes
number:(NSNumber *)number{
NSString
*numberKey = @"__ct__";
NSMutableDictionary *mutableDictionary =
[NSMutableDictionary
dictionaryWithDictionary:attributes];
[mutableDictionary
setObject:[number stringValue] forKey:numberKey];
[MobClick event:eventId
attributes:mutableDictionary];
}
示例:购买《Swift
Fundamentals》这本书,花了110元
[self umengEvent:@"pay"
attributes:@{@"book" : @"Swift
Fundamentals"}
number:@(110)];
4.3.2统计点击次数及各属性触发次数
计算事件除能够统计数值型的参数外还具有计数事件的所有功能。详细说明
4.4 注意事项
event
id不能使用特殊字符,不建议使用中文,且长度不能超过128个字节;map中的key和value
都不能使用特殊字符,key
不能超过128个字节,value
不能超过256个字节。
id,
ts, du是保留字段,不能作为event
id及key的名称。
每个应用至多添加500个自定义事件,每个event的key不能超过10个,每个key的取值不能超过1000个。
如需要统计支付金额、内容浏览数量等数值型的连续变量,请使用计算事件(不允许通过key-value结构来统计类似搜索关键词,网页链接等随机生成的字符串信息)。
若需要提高指标上限,请申请APP企业认证,了解企业认证点击这里(http://www.umeng.com/enterprise_certificate_intro)。
代码示例:
//友盟统计用户下单事件
NSDictionary*attributes = @{@"userId" : userId, @"productId" : productId};
[MobClickevent:@"PlaceAnOrder" attributes:attributes];
//打印日志如下:(数据类型错误)
2016-05-09 14:37:56.677 WanWenWan[4629:1508256] UMLOG:
(ERROR) Umeng event's keys and values must be string ,key's max
length 128 and value's max length 256
2016-05-09 14:37:56.680 WanWenWan[4629:1508256] UMLOG: ekv:
session_id=A6709E0DE506A7F397C6CD368620ACF5,
id=PlaceAnOrder,values={
userId = 212;
}
//友盟统计用户下单事件(服务器返回的数据不为字符串类型,需要转化为字符串才行)
NSDictionary *attributes =
@{@"userId" : userId,
@"productId" : [NSString
stringWithFormat:@"%@",productId]};
[MobClick
event:@"PlaceAnOrder"
attributes:attributes];
//正确设置字符串后打印日志如下:
2016-05-09 14:41:45.065 WanWenWan[4660:1532687] UMLOG: ekv:
session_id=4CD4890C0D94EC6B8E5A72C90331D71D,
id=PlaceAnOrder,values={
productId =
3245;
userId = 212;
}
//支付宝支付
-(void)p_aliPay:(NSString *)params{
NSString*Scheme = @"wanwenwan"; //回调的url(应用的URL)
if(params.length != 0 ) {
[[AlipaySDKdefaultService] payOrder:params fromScheme:Scheme callback:^(NSDictionary *resultDic) {
if([[NSString stringWithFormat:@"%@",resultDic[@"resultStatus"]] isEqualToString:@"9000"]) { //支付成功
//统计支付宝支付成功次数
[MobClickevent:@"PaySuccess"attributes:@{@"PayWay"
: @"AliPay"}];
#warning 跳转到支付成功页面
}else{
[selfalertViewtitle:@"提示" message:@"支付失败"];
}
}];
}
}
//微信支付成功后的回调方法中加入
//统计微信支付成功次数
[MobClickevent:@"PaySuccess"attributes:@{@"PayWay"
: @"WXPay"}];
统计自定义事件的及时性不够,有的时候需要等大概10分钟才能更新到最新的数据。。。没有启动次数这些统计那么及时。。。
分析自定义事件:
测试与调试
确认如下内容
确认APPKEY正确
确认添加了libz库
确认测试手机(或者模拟器)已成功连入网络
集成中可能出现的问题,(http://bbs.umeng.com/thread-6383-1-1.html)。
使用集成测试服务(推荐)
什么是集成测试?
集成测试是通过收集和展示已注册测试设备发送的日志,来检验SDK集成有效性和完整性的一个服务。所有由注册设备发送的应用日志将实时地进行展示,您可以方便地查看包括应用版本、渠道名称、自定义事件、页面访问情况等数据,提升集成与调试的工作效率。
注意:
使用集成测试之后,所有测试数据不会进入应用正式的统计后台,只能在“管理--集成测试--实时日志”里查看,您不必再担心因为测试而导致的数据污染问题,让数据更加真实有效的反应用户使用情况。
使用集成测试模式请先在程序入口处调用如下代码,打开调试模式:
[MobClick
setLogEnabled:YES];
使用普通测试流程
如果您不使用集成测试服务来测试数据,那您可以通过普通测试流程查看测试数据。
使用普通测试流程,您的测试数据会与用户的真实使用数据同时处理,从而导致数据污染。
使用普通测试流程,请先在程序入口添加以下代码打开调试模式:
[MobClick setLogEnabled:YES];
打开调试模式后,您可以在logcat
中查看您的数据是否成功发送到友盟服务器,以及集成过程中的出错原因等,友盟相关log的tag是MobclickAgent。
FAQ
Q:集成测试与普通测试的区别
A:集成测试与普通测试两者都需要添加代码[MobClick
setLogEnabled:YES];打开调试模式,但是集成测试需要添加测试设备,集成测试功能说明参见这里。集成测试隔离测试数据,普通的测试不区分测试数据与真实数据;集成测试的结果需在实时日志中查看,普通测试则是在友盟相关的log中查看。
具体操作步骤请参照友盟统计分析iOS集成文档:http://dev.umeng.com/analytics/ios-doc/integration?spm=0.0.0.0.9SP38z#4