1. 自定义事件
1.1. 功能介绍
自定义事件可以统计某些用户自定义埋点的发生次数、时间、变化趋势,例如广告点击、短信数量等等,通常event_id用于表示某种行为或功能的统计(如统计“点击”按钮被触发多少次),而参数则用于标识统计的具体对象(如名称为“OK”的按钮),由“event_id”和“参数”唯一标识一个事件。
自定义事件主要用于2种场景:
(1)统计次数:统计指定行为被触发的次数
(2)统计时长:统计指定行为消耗的时间,单位为秒。需要begin接口与end接口成对使用才生效。
其中每类事件都有Key-Value参数类型和不定长字符串参数类型,由于Key-Value参数类型的接口能表达更丰富的内容,我们推荐优先使用Key-Value类参数接口。另外,如果代码同时使用了这2种参数类型,event_id最好不一样。
注意:event_id需要先在腾讯移动分析网站上面配置,才能参与正常的数据统计。event_id不能包含空格或转义字符。
1.2. Android自定义事件使用指南
1.2.1. 注册自定义事件
自定义事件的注册(配置)包括事件id的注册和事件id下参数信息的注册。
(1)登陆mta前台,选择左边选择“自定义事件”。
(2)选择“新增事件”,按照需求填写事件id、key、value等信息。
(3)可以在查看详情下的“参数”查看事件id下所有参数上报的明细。
1.2.2. 【次数统计】Key-Value参数的事件
void StatService.trackCustomKVEvent(Context ctx, String event_id,
Properties properties)
(1)参数:
Ctx 页面的设备上下文
event_id 事件标识
properties Key-Value参数对,key和value都是String类型
(2)调用位置: 代码任意处
public void onOKBtnClick(View v) {
// 统计按钮被点击次数,统计对象:OK按钮
Properties prop = new Properties();
prop.setProperty("name", " OK ");
StatService.trackCustomKVEvent(this, " button_click", prop);
}
public void onBackBtnClick(View v) {
// 统计按钮被点击次数,统计对象:back按钮
Properties prop = new Properties();
prop.setProperty("name", " back ");
StatService.trackCustomKVEvent(this, " button_click", prop);
}
1.2.3. 【次数统计】带任意参数的事件
(1)参数:
Ctx 页面的设备上下文
event_id 事件标识
args 事件参数
(2)调用位置:
代码任意处
public void onClick(View v) {
// 统计按钮被点击次数,统计对象:OK按钮
StatService.trackCustomEvent(this, "button_click", "OK ");
}
1.2.4. 【时长统计】Key-Value参数事件
可以指定事件的开始和结束时间,来上报一个带有统计时长的事件。
void StatService.trackCustomBeginKVEvent(
Context ctx, String event_id, Properties properties)
void StatService.trackCustomEndKVEvent(
Context ctx, String event_id, Properties properties)
(1)参数:
Ctx 页面的设备上下文
event_id 事件标识
properties Key-Value参数对,key和value都是String类型
(2)调用位置:
代码任意处
public void onClick(View v) {
Properties prop = new Properties();
prop.setProperty("level", "5");
// 统计用户通关所花时长,关卡等级: 5
// 用户通关前
StatService.trackCustomBeginKVEvent(this, " playTime", prop);
// 用户正在游戏中….
// …….
// 用户通关完成时
StatService.trackCustomEndKVEvent(this, " playTime", prop);
}
1.2.5. 【时长统计】带有统计时长的自定义参数事件
可以指定事件的开始和结束时间,来上报一个带有统计时长的事件。
void StatService.trackCustomBeginEvent(
Context ctx, String event_id, String... args)
void StatService.trackCustomEndEvent(
Context ctx, String event_id, String... args)
(1)参数:
Ctx 页面的设备上下文
event_id 事件标识
args 事件参数
(2)调用位置:
代码任意处
public void onClick(View v) {
// 统计用户通关所花时长
// 用户通关前
StatService.trackCustomBeginEvent(this, " playTime", "level5");
// 用户正在游戏中….
// …….
// 用户通关完成时
StatService.trackCustomEndEvent(this, " playTime", " level5");
注意:trackCustomBeginEvent和trackCustomEndKvent必须成对出现,且参数列表完全相同,才能正常上报事件。
1.3. iOS自定义事件使用指南
1.3.1. NSDictionary为参数的自定义事件
/**
上报自定义事件
@param event_id 事件的ID,ID需要先在MTA前台配置好才能生效
@param kvs 事件的参数,参数需要先在MTA前台配置好才能生效
*/
+ (void)trackCustomKeyValueEvent:(NSString *)event_id props:(NSDictionary *)kvs;
/**
上报自定义事件
并且指定上报方式
@param event_id 事件的ID,ID需要先在MTA前台配置好才能生效
@param kvs 事件的参数,参数需要先在MTA前台配置好才能生效
@param appkey 需要上报的appKey,若传入nil,则上报到启动函数中的appkey
@param isRealTime 是否实时上报,若传入YES,则忽略全局上报策略实时上报。否则按照全局策略上报。
*/
+ (void)trackCustomKeyValueEvent:(NSString *)event_id
props:(NSDictionary *)kvs
appkey:(NSString *)appkey
isRealTime:(BOOL)isRealTime;
/**
开始统计自定义时长事件
此接口需要跟trackCustomKeyValueEventEnd配对使用
多次调用以第一次开始时间为准
@param event_id 事件的ID,ID需要先在MTA前台配置好才能生效
@param kvs 事件的参数,参数需要先在MTA前台配置好才能生效
*/
+ (void)trackCustomKeyValueEventBegin:(NSString *)event_id props:(NSDictionary *)kvs;
/**
开始统计自定义时长事件
并指定上报方式
此接口需要跟trackCustomKeyValueEventEnd配对使用
多次调用以第一次开始时间为准
@param event_id 事件的ID,ID需要先在MTA前台配置好才能生效
@param kvs 事件的参数,参数需要先在MTA前台配置好才能生效
@param appkey 需要上报的appKey,若传入nil,则上报到启动函数中的appkey
*/
+ (void)trackCustomKeyValueEventBegin:(NSString *)event_id
props:(NSDictionary *)kvs
appkey:(NSString *)appkey;
/**
结束统计自定义时长事件
此接口需要跟trackCustomKeyValueEventBegin配对使用
多次调用以第一次结束时间为准
@param event_id 事件的ID,ID需要先在MTA前台配置好才能生效
@param kvs 事件的参数,参数需要先在MTA前台配置好才能生效
参数中的key和value必须跟开始统计时传入的参数一样才能正常配对
*/
+ (void)trackCustomKeyValueEventEnd:(NSString *)event_id props:(NSDictionary *)kvs;
/**
结束上报自定义时长事件
并指定上报方式
此接口需要跟trackCustomKeyValueEventBegin配对使用
多次调用以第一次结束时间为准
@param event_id 事件的ID,ID需要先在MTA前台配置好才能生效
@param kvs 事件的参数,参数需要先在MTA前台配置好才能生效
参数中的key和value必须跟开始统计时传入的参数一样才能正常配对
@param appkey 需要上报的appKey,若传入nil,则上报到启动函数中的appkey
@param isRealTime 是否实时上报,若传入YES,则忽略全局上报策略实时上报。否则按照全局策略上报。
*/
+ (void)trackCustomKeyValueEventEnd:(NSString *)event_id
props:(NSDictionary *)kvs
appkey:(NSString *)appkey
isRealTime:(BOOL)isRealTime;
/**
直接统计自定义时长事件
这个方法用于上报统计好的时长事件
@param seconds 自定义事件的时长,单位秒
@param event_id 事件的ID,ID需要先在MTA前台配置好才能生效
@param kvs 事件的参数,参数需要先在MTA前台配置好才能生效
*/
+ (void)trackCustomKeyValueEventDuration:(uint32_t)seconds
withEventid:(NSString *)event_id
props:(NSDictionary *)kvs;
/**
直接上报自定义时长事件
并指定上报方式
这个方法用于上报统计好的时长事件
@param seconds 自定义事件的时长,单位秒
@param event_id 事件的ID,ID需要先在MTA前台配置好才能生效
@param kvs 事件的参数,参数需要先在MTA前台配置好才能生效
@param appkey 需要上报的appKey,若传入nil,则上报到启动函数中的appkey
@param isRealTime 是否实时上报,若传入YES,则忽略全局上报策略实时上报。否则按照全局策略上报。
*/
+ (void)trackCustomKeyValueEventDuration:(uint32_t)seconds
withEventid:(NSString *)event_id
props:(NSDictionary *)kvs
appKey:(NSString *)appkey
isRealTime:(BOOL)isRealTime;
示例
// 次数统计
- (IBAction)clickKVButton:(id)sender {
[MTA trackCustomKeyValueEvent:@"KVEvent"
props:[NSDictionary dictionaryWithObject:@"Value" forKey:@"Key"]];
}
// 时长统计
- (IBAction)clickStartKvButton:(id)sender {
[MTA trackCustomKeyValueEventBegin:@"KVEvent"
props:[NSDictionary dictionaryWithObject:@"Value" forKey:@"TimeKey"]];
}
- (IBAction)clickEndKvButton:(id)sender {
[MTA trackCustomKeyValueEventEnd:@"KVEvent"
props:[NSDictionary dictionaryWithObject:@"Value" forKey:@"TimeKey"]];
}
1.3.2. NSArray为参数的自定义事件
接口
/**
上报自定义事件
@param event_id 事件的ID,ID需要先在MTA前台配置好才能生效
@param array 事件的参数,参数需要先在MTA前台配置好才能生效
*/
+ (void)trackCustomEvent:(NSString *)event_id args:(NSArray *)array;
/**
上报自定义事件
并指定上报方式
@param event_id 事件的ID,ID需要先在MTA前台配置好才能生效
@param array 事件的参数,参数需要先在MTA前台配置好才能生效
@param appkey 需要上报的appKey,若传入nil,则上报到启动函数中的appkey
@param isRealTime 是否实时上报,若传入YES,则忽略全局上报策略实时上报。否则按照全局策略上报。
*/
+ (void)trackCustomEvent:(NSString *)event_id
args:(NSArray *)array
appkey:(NSString *)appkey
isRealTime:(BOOL)isRealTime;
/**
开始统计自定义时长事件
此接口需要跟trackCustomEventEnd配对使用
多次调用以第一次开始时间为准
@param event_id 事件的ID,ID需要先在MTA前台配置好才能生效
@param array 事件的参数,参数需要先在MTA前台配置好才能生效
*/
+ (void)trackCustomEventBegin:(NSString *)event_id args:(NSArray *)array;
/**
开始统计自定义时长事件
并指定上报方式
此接口需要跟trackCustomEventEnd配对使用
多次调用以第一次开始时间为准
@param event_id 事件的ID,ID需要先在MTA前台配置好才能生效
@param array 事件的参数,参数需要先在MTA前台配置好才能生效
@param appkey 需要上报的appKey,若传入nil,则上报到启动函数中的appkey
*/
+ (void)trackCustomEventBegin:(NSString *)event_id
args:(NSArray *)array
appkey:(NSString *)appkey;
/**
结束统计自定义时长事件
此接口需要跟trackCustomKeyValueEventBegin配对使用
多次调用以第一次结束时间为准
@param event_id 事件的ID,ID需要先在MTA前台配置好才能生效
@param array 事件的参数,参数需要先在MTA前台配置好才能生效
参数中的各项必须跟开始统计时传入的参数一样才能正常配对
*/
+ (void)trackCustomEventEnd:(NSString *)event_id args:(NSArray *)array;
/**
结束统计自定义时长事件
并指定上报方式
此接口需要跟trackCustomKeyValueEventBegin配对使用
多次调用以第一次结束时间为准
@param event_id 事件的ID,ID需要先在MTA前台配置好才能生效
@param array 事件的参数,参数需要先在MTA前台配置好才能生效
参数中的各项必须跟开始统计时传入的参数一样才能正常配对
@param appkey 需要上报的appKey,若传入nil,则上报到启动函数中的appkey
@param isRealTime 是否实时上报,若传入YES,则忽略全局上报策略实时上报。否则按照全局策略上报。
*/
+ (void)trackCustomEventEnd:(NSString *)event_id
args:(NSArray *)array
appkey:(NSString *)appkey
isRealTime:(BOOL)isRealTime;
示例
// 次数统计
- (IBAction)clickNormaltButton:(id)sender {
[MTA trackCustomEvent:@"NormalEvent" args:[NSArray arrayWithObject:@"arg0"]];
}
// 时长统计
- (IBAction)clickStartButton:(id)sender {
[MTA trackCustomEventBegin:@"TimeEvent" args:[NSArray arrayWithObject:@"arg0"]];
}
- (IBAction)clickEndButton:(id)sender {
[MTA trackCustomEventEnd:@"TimeEvent" args:[NSArray arrayWithObject:@"arg0"]];
}
1.3.3. 上报当前缓存的事件
接口
/**
上报当前缓存的数据
若当前有缓存的事件(比如上报策略不为实时上报,或者有事件上报失败)时
调用此方法可以上报缓存的事件
@param maxStatCount 最大上报事件的条数
*/
+ (void)commitCachedStats:(int32_t)maxStatCount;