跳到主要内容

数据统计

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"];

参数说明:

参数名称参数类型参数说明是否必传
orderIdNSString订单id,需要保证每次不一样,如果没有的话
可以自己生成一个,建议使用时间戳
Y
iapIdNSString苹果内购支付的产品id(如com.dianhun.A001)N
currencyNSString支付金额(单位:分)Y
currencyTypeNSString支付货币类型(如美元是USD)Y
virtualCurrencyNSString充值的游戏虚拟货币金额N
typeNSString固定iosY
platformsNSArray平台,默认传空数组N
memoNSString根据平台不同配置,如adjust数据统计就传eventTokenY

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"

###2.2.2节点事件上报

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_modelNSString上报类型(流程打点上报固定使用log)Y
log_levelNSString日志级别,d:普通;e:错误Y
event_idNSString事件id,例如110000::GAME_CLIENT_LAUNCHY
sub_event_typeNSString子事件id,默认0Y
logNSString事件详细内容,可为空Y
account_idNSStringSDK账号ID(如果没有则传空字符串)Y
role_idNSString游戏角色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_modelNSString上报类型(SDK数据上报固定使用normal)Y
extend_param_jsonNSString额外参数N
log_typeNSString事件类型,例如guidestepY
track_platformNSString平台Y

2.3.2 新手引导

参数说明

字段名称字段注释优先级描述
action_model上报类型(SDK数据上报固定使用normal)1固定值:normal
track_platform日志发送平台1固定值:dianhun
log_type日志类型1日志类型,固定值:guidestep
zid大区ID1若游戏无大区概念,则填1作为初始大区编号
sid游戏服务器ID1大区的下一级,若游戏无服概念,则填1作为初始服编号
role_id角色id1整个游戏内唯一
step_id步骤ID1当表示新手引导任务时,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按钮ID1统计维度
button_type按钮分类2统计维度
page_id界面ID2按钮所在界面ID,用于分析用户操作路径
opt_param操作参数2比如是跳转到另外一个页面,就填写结果页ID;匹配按钮则可以填匹配时间
zid大区ID2若游戏无大区概念,则填1作为初始大区编号
sid游戏服务器ID2大区的下一级,若游戏无服概念,则填1作为初始服编号
role_id角色ID2整个游戏内唯一
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大区ID2若游戏无大区概念,则填1作为初始大区编号
sid游戏服务器ID2大区的下一级,若游戏无服概念,则填1作为初始服编号
role_id角色ID2整个游戏内唯一
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];