数据统计
1、说明
数据统计用于游戏内上传各类事件信息,如打开APP,登录,支付等。一般根据项目需求有多种数据统计渠道,如SDK流程统计,海外的Adjust,Firebase,还有SDK官方自带的数据统计等。
2、代码调用
2.1、海外第三方数据上报
2.1.1、 导入头文件
#import "DHUnionSDK.h"
#import "DHUnionDelegate.h"
#import "DHUnionConfig.h"
2.1.2、 关联用户ID
//传入登录的SDK accountId
[DHUnionSDK configureTrackUserId:@"user1"];
2.1.3、 追踪登录或者其它一般事件(支付事件除外)
Adjust数据上报: 例如登录的Adjust eventToken为aabbcc
NSDictionary *params = @{@"track_platform":@"adjust"};
[DHUnionSDK trackCustomEventM:@"aabbcc" values:params];
Firebase数据上报:
NSDictionary *params = @{@"track_platform":@"firebase",@"key1":@"value1",@"key2":@"value2"};
[DHUnionSDK trackCustomEventM:@"event_name" values:params];
2.1.4、 追踪支付事件
Adjust支付事件上报:
需要调用这个专门的接口上报adjust支付事件;
需要传入货币金额,货币单位,订单号等信息,例如Adsjut event token为aaccdd
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyyMMddHHmmssSSS"];
NSString *dateStr = [formatter stringFromDate:[NSDate date]];
[DHUnionSDK trackPurchaseWithOrderId:dateStr iapId:@"com.dianhun.a001" currency:@"99" currenctType:@"USD" virtualCurrency:@"60" paymentType:@"ios" platforms:@[] memo:@"aaccdd"];
参数说明:
参数名称 | 参数类型 | 参数说明 | 是否必传 |
---|---|---|---|
orderId | NSString | 订单id,需要保证每次不一样,如果没有的话 可以自己生成一个,建议使用时间戳 | Y |
iapId | NSString | 苹果内购支付的产品id(如com.dianhun.A001) | N |
currency | NSString | 支付金额(单位:分) | Y |
currencyType | NSString | 支付货币类型(如美元是USD) | Y |
virtualCurrency | NSString | 充值的游戏虚拟货币金额 | N |
type | NSString | 固定ios | Y |
platforms | NSArray | 平台,默认传空数组 | N |
memo | NSString | 根据平台不同配置,如adjust数据统计就传eventToken | Y |
Firebase支付事件上报:
Firebase会自动收集Apple的内购事件上报,其它支付事件需要上传的事件名称和参数由运营提供
(例如创建Purchase事件,参数定义为price,currency)
NSDictionary *params = @{@"track_platform":@"firebase",@"price":@"99",@"currency":@"USD"};
[DHUnionSDK trackCustomEventM:@"Purchase" values:params];
2.1.5、 三合一数据上报
整合SDK数据埋点上报,Adjust和Firebase数据上报,只需要调用一次即可上报对应的数据 注意:需要配置DHEventList.json文件
NSDictionary *param = @{
@"role_id":@"111222333", //角色id,纯数字,如果没有则和user_id一致,都没有的话为0,不能为空
@"account_id":@"123456789", //玩家电魂账号id,纯数字,没有则传0
@"log_level":@"d", //日志级别,e:异常 d:普通
@"log":@"日志内容", //日志内容,必传
@"orderId":@"114224232123", //支付订单,支付事件必须上传
@"revenue":@"99", //金额,单位分,支付事件必须上传
@"currency":@"USD", //货币类型,支付事件必须上传
@"key":@"value" //其它参数
};
[DHUnionSDK trackCustomEventM:@"000000::SDK_CLIENT_TEST" values:param];
2.2、 游戏流程统计打点上报
国内海外通用,用于打点上报游戏内的节点事件,使用DHLog类
2.2.1、 导入头文件
#import "DHLog.h"
NSDictionary *dic = @{@"action_model":@"log", //必传,固定
@"role_id":@"111222333", //必传,角色id,纯数字,如果没有则和account_id一致,都没有的话传0,不能为空
@"account_id":@"123456789", //必传,玩家SDK账号id,纯数字
@"log_level":@"d", //必传,日志级别,e:异常 d:普通
@"log":@"开始下载", //日志内容,可传
@"event_id":@"312000::GAME_CLIENT_UPDATE_BEGIN_DOWN", //事件id,必传
@"sub_event_type":@"0" //必传,子事件id,没有就传0
};
[DHLog logAction:dic];
流程打点主要参数
参数名称 | 参数类型 | 参数说明 | 是否必传 |
---|---|---|---|
action_model | NSString | 上报类型(流程打点上报固定使用log) | Y |
log_level | NSString | 日志级别,d:普通;e:错误 | Y |
event_id | NSString | 事件id,例如110000::GAME_CLIENT_LAUNCH | Y |
sub_event_type | NSString | 子事件id,默认0 | Y |
log | NSString | 事件详细内容,可为空 | Y |
account_id | NSString | SDK账号ID(如果没有则传空字符串) | Y |
role_id | NSString | 游戏角色ID如果没有则传空字符串) | Y |
2.3、 sdk数据统计上报
用于上报sdk OSS数据
2.3.1 示例
NSDictionary *dic = @{@"action_model":@"normarl", //固定
@"track_platform":@"SDKplatform", //平台
@"log_type":@"guidestep", //日志类型
@"zid":@"1", //游戏大区ID,如果没有大区概念默认1,不能为空
@"sid":@"1", //游戏服务器ID
@"role_id":@"7812312", //角色ID,游戏内唯一(不同区服之间也不允许重复),建议纯数字。若游戏无角色概念,则填账号id
@"extend_param_json":@"{\"kills\":\"10\",\"deaths\":\"2\",\"assistant\":\"3\"}" //扩展参数,项目根据实际需要自定义规范中未定义到的其他参数。但需要上报json格式的字符串
};
[DHLog logAction:dic];
参数
参数名称 | 参数类型 | 参数说明 | 是否必传 |
---|---|---|---|
action_model | NSString | 上报类型(SDK数据上报固定使用normal) | Y |
extend_param_json | NSString | 额外参数 | N |
log_type | NSString | 事件类型,例如guidestep | Y |
track_platform | NSString | 平台 | Y |
2.3.2 新手引导
参数说明
字段名称 | 字段注释 | 优先级 | 描述 |
---|---|---|---|
action_model | 上报类型(SDK数据上报固定使用normal) | 1 | 固定值:normal |
track_platform | 日志发送平台 | 1 | 固定值:dianhun |
log_type | 日志类型 | 1 | 日志类型,固定值:guidestep |
zid | 大区ID | 1 | 若游戏无大区概念,则填1作为初始大区编号 |
sid | 游戏服务器ID | 1 | 大区的下一级,若游戏无服概念,则填1作为初始服编号 |
role_id | 角色id | 1 | 整个游戏内唯一 |
step_id | 步骤ID | 1 | 当表示新手引导任务时,ID建议顺序编号 |
step_state | 步骤状态类型 | 1 | 步骤状态,1:进行中 2:已完成(不含跳过) 3:跳过 4(5,6...):游戏自定义 |
step_type | 步骤类型 | 2 | 枚举值如pvp、pve等(具体根据实际情况而定) |
role_level | 玩家等级 | 2 | 玩家等级 |
vip_level | 玩家vip等级 | 2 | 玩家vip等级 |
step_param | 步骤参数 | 2 | 预留统计维度,反应玩家参与引导时的重要统计维度,比如使用的英雄ID |
extend_param_json | 扩展参数 | 2 | 其他预留参数,必须使用无嵌套json格式,且数据类型均为string,注意内容中需要包含转义的反斜杠"\",因为SDK会统一当成string来处理 |
示例代码
NSDictionary *dic = @{@"action_model":@"normarl", //固定
@"track_platform":@"dianhun", //平台
@"log_type":@"guidestep", //日志类型
@"zid":@"1", //游戏大区ID,如果没有大区概念默认1,不能为空
@"sid":@"1", //游戏服务器ID
@"role_id":@"7812312", //角色ID,游戏内唯一(不同区服之间也不允许重复),建议纯数字。若游戏无角色概念,则填账号id
@"step_id":@"10000", //引导步骤ID
@"step_state":@"2", //引导步骤状态 1:进行中 2:已完成(不含跳过)3:跳过
@"step_type":@"pvp",//引导步骤分类
@"role_level":@"10",//角色等级
@"vip_level":@"10",//角色VIP等级
@"step_param":@"H001",//引导步骤参数
@"extend_param_json":@"{\"kills\":\"10\",\"deaths\":\"2\",\"assistant\":\"3\"}" //扩展参数,项目根据实际需要自定义规范中未定义到的其他参数。但需要上报json格式的字符串
};
[DHLog logAction:dic];
2.3.3 按钮日志
参数说明
字段名称 | 字段注释 | 优先级 | 描述 |
---|---|---|---|
action_model | 上报类型(SDK数据上报固定使用normal) | 1 | 固定值:normal |
track_platform | 日志发送平台 | 1 | 固定值:dianhun |
log_type | 日志类型 | 1 | 日志类型,固定值:button |
button_id | 按钮ID | 1 | 统计维度 |
button_type | 按钮分类 | 2 | 统计维度 |
page_id | 界面ID | 2 | 按钮所在界面ID,用于分析用户操作路径 |
opt_param | 操作参数 | 2 | 比如是跳转到另外一个页面,就填写结果页ID;匹配按钮则可以填匹配时间 |
zid | 大区ID | 2 | 若游戏无大区概念,则填1作为初始大区编号 |
sid | 游戏服务器ID | 2 | 大区的下一级,若游戏无服概念,则填1作为初始服编号 |
role_id | 角色ID | 2 | 整个游戏内唯一 |
extend_param_json | 扩展参数 | 2 | 项目根据实际需要自定义规范中未定义到的其他参数。但需要上报==json格式的字符串==,如"{\"kills\":\"0\",\"deaths\":\"0\",\"assistant\":\"0\"}",key命名尽量简短易懂,自定义参数最多==20==个 |
示例代码
NSDictionary *dic = @{@"action_model":@"normarl", //固定
@"track_platform":@"dianhun", //平台
@"log_type":@"button", //日志类型
@"button_id":@"10000", //按钮ID
@"button_type":@"2", //按钮分类
@"page_id":@"pvp",//按钮所在界面ID,用于分析用户操作路径
@"opt_param":@"10",//操作参数,比如是跳转到另外一个页面,就填写结果页ID;匹配按钮则可以填匹配时间
@"zid":@"1", //游戏大区ID,如果没有大区概念默认1
@"sid":@"1", //游戏服务器ID
@"role_id":@"7812312", //角色ID,游戏内唯一(不同区服之间也不允许重复),建议纯数字。若游戏无角色概念,则填账号id
@"extend_param_json":@"{\"kills\":\"10\",\"deaths\":\"2\",\"assistant\":\"3\"}" //扩展参数,项目根据实际需要自定义规范中未定义到的其他参数。但需要上报json格式的字符串
};
[DHLog logAction:dic];
2.3.4 自定义日志
参数说明
字段名称 | 字段注释 | 优先级 | 描述 |
---|---|---|---|
action_model | 上报类型(SDK数据上报固定使用normal) | 1 | 固定值:normal |
track_platform | 日志发送平台 | 1 | 固定值:dianhun |
log_type | 日志类型 | 1 | 日志类型,固定值:custom |
event | 自定义事件类型 | 1 | 尽量使用英文单词命名,如'levelUp','joinCorp' |
opt_obj | 操作对象 | 2 | 如果是按钮点击事件,则对应按钮ID |
opt_res | 操作结果 | 2 | 如果是按钮点击事件,则返回按钮点击的结果,比如是跳转到另外一个页面,就填写结果页ID |
opt_reason | 操作原因 | 2 | 如果是页面离开事件,填离开原因 |
zid | 大区ID | 2 | 若游戏无大区概念,则填1作为初始大区编号 |
sid | 游戏服务器ID | 2 | 大区的下一级,若游戏无服概念,则填1作为初始服编号 |
role_id | 角色ID | 2 | 整个游戏内唯一 |
extend_param_json | 扩展参数 | 2 | 项目根据实际需要自定义规范中未定义到的其他参数。但需要上报==json格式的字符串==,如"{\"kills\":\"0\",\"deaths\":\"0\",\"assistant\":\"0\"}",key命名尽量简短易懂,自定义参数最多==20==个 |
示例代码
NSDictionary *dic = @{@"action_model":@"normarl", //固定
@"log_type":@"custom", //日志类型
@"zid":@"1", //游戏大区ID,如果没有大区概念默认1,不能为空
@"track_platform":@"dianhun", //平台
@"role_id":@"7812312", //角色ID,游戏内唯一(不同区服之间也不允许重复),建议纯数字。若游戏无角色概念,则填账号id
@"event":@"levelup", //自定义事件名
@"opt_obj":@"pay_btn", //操作对象,如果是按钮点击事件,则对应按钮ID
@"opt_res":@"real_page",//操作结果
@"opt_reason":@"login",//操作原因
@"sid":@"1", //游戏服务器ID
@"extend_param_json":@"{\"kills\":\"0\",\"deaths\":\"0\",\"assistant\":\"0\"}" //扩展参数,项目根据实际需要自定义规范中未定义到的其他参数。但需要上报json格式的字符串
};
[DHLog logAction:dic];