# 数据统计
# 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 = @{@"trackPlatform":@"adjust"};
[DHUnionSDK trackCustomEventM:@"aabbcc" values:params];
Firebase数据上报:
NSDictionary *params = @{@"trackPlatform":@"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 = @{@"trackPlatform":@"firebase",@"itemPrice":@"99",@"currency":@"USD"};
[DHUnionSDK trackCustomEventM:@"Purchase" values:params];
# 2.1.5、 三合一数据上报
整合SDK数据埋点上报,Adjust和Firebase数据上报,只需要调用一次即可上报对应的数据 注意:需要配置DHEventList.json文件
NSDictionary *param = @{
@"roleId":@"111222333", //角色id,纯数字,如果没有则和user_id一致,都没有的话为0,不能为空
@"accountId":@"123456789", //玩家电魂账号id,纯数字,没有则传0
@"logLevel":@"d", //日志级别,e:异常 d:普通
@"log":@"日志内容", //日志内容,必传
@"orderId":@"114224232123", //支付订单,支付事件必须上传
@"itemPrice":@"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", //必传,固定
@"roleId":@"111222333", //必传,角色id,纯数字,如果没有则和account_id一致,都没有的话传0,不能为空
@"accountId":@"123456789", //必传,玩家SDK账号id,纯数字
@"logLevel":@"d", //必传,日志级别,e:异常 d:普通
@"log":@"开始下载", //日志内容,可传
@"eventId":@"312000::GAME_CLIENT_UPDATE_BEGIN_DOWN", //事件id,必传
@"subEventId":@"0" //必传,子事件id,没有就传0
};
[DHLog logAction:dic];
流程打点主要参数
参数名称 | 参数类型 | 参数说明 | 是否必传 |
---|---|---|---|
action_model | NSString | 上报类型(流程打点上报固定使用log) | Y |
logLevel | NSString | 日志级别,d:普通;e:错误 | Y |
eventId | NSString | 事件id,例如110000::GAME_CLIENT_LAUNCH | Y |
subEventId | NSString | 子事件id,默认0 | Y |
log | NSString | 事件详细内容,可为空 | Y |
accountId | NSString | SDK账号ID(如果没有则传空字符串) | Y |
roleId | NSString | 游戏角色ID如果没有则传空字符串) | Y |
# 2.3、 sdk数据统计上报
用于上报sdk OSS数据
# 2.3.1 示例
NSDictionary *dic = @{@"action_model":@"normarl", //固定
@"trackPlatform":@"SDKplatform", //平台
@"logType":@"guidestep", //日志类型
@"areaId":@"1", //游戏大区ID,如果没有大区概念默认1,不能为空
@"roleId":@"7812312", //角色ID,游戏内唯一(不同区服之间也不允许重复),建议纯数字。若游戏无角色概念,则填账号id
@"extendParams":@"{\"kills\":\"10\",\"deaths\":\"2\",\"assistant\":\"3\"}" //扩展参数,项目根据实际需要自定义规范中未定义到的其他参数。但需要上报json格式的字符串
};
[DHLog logAction:dic];
参数
参数名称 | 参数类型 | 参数说明 | 是否必传 |
---|---|---|---|
action_model | NSString | 上报类型(SDK数据上报固定使用normal) | Y |
extendParams | NSString | 额外参数 | N |
logType | NSString | 事件类型,例如guidestep | Y |
trackPlatform | NSString | 平台 | Y |
# 2.3.2 新手引导
参数说明
字段名称 | 字段注释 | 优先级 | 描述 |
---|---|---|---|
action_model | 上报类型(SDK数据上报固定使用normal) | 1 | 固定值:normal |
trackPlatform | 日志发送平台 | 1 | 固定值:dianhun |
logType | 日志类型 | 1 | 日志类型,固定值:guidestep |
areaId | 大区ID | 1 | 若游戏无大区概念,则填1作为初始大区编号 |
roleId | 角色id | 1 | 整个游戏内唯一 |
stepId | 步骤ID | 1 | 当表示新手引导任务时,ID建议顺序编号 |
stepState | 步骤状态类型 | 1 | 步骤状态,1:进行中 2:已完成(不含跳过) 3:跳过 4(5,6...):游戏自定义 |
stepType | 步骤类型 | 2 | 枚举值如pvp、pve等(具体根据实际情况而定) |
roleLevel | 玩家等级 | 2 | 玩家等级 |
roleVipLevel | 玩家vip等级 | 2 | 玩家vip等级 |
stepParam | 步骤参数 | 2 | 预留统计维度,反应玩家参与引导时的重要统计维度,比如使用的英雄ID |
extendParams | 扩展参数 | 2 | 其他预留参数,必须使用无嵌套json格式,且数据类型均为string,注意内容中需要包含转义的反斜杠"\",因为SDK会统一当成string来处理 |
示例代码
NSDictionary *dic = @{@"action_model":@"normarl", //固定
@"trackPlatform":@"dianhun", //平台
@"logType":@"guidestep", //日志类型
@"areaId":@"1", //游戏大区ID,如果没有大区概念默认1,不能为空
@"roleId":@"7812312", //角色ID,游戏内唯一(不同区服之间也不允许重复),建议纯数字。若游戏无角色概念,则填账号id
@"stepId":@"10000", //引导步骤ID
@"stepState":@"2", //引导步骤状态 1:进行中 2:已完成(不含跳过)3:跳过
@"stepType":@"pvp",//引导步骤分类
@"roleLevel":@"10",//角色等级
@"roleVipLevel":@"10",//角色VIP等级
@"stepParam":@"H001",//引导步骤参数
@"extendParams":@"{\"kills\":\"10\",\"deaths\":\"2\",\"assistant\":\"3\"}" //扩展参数,项目根据实际需要自定义规范中未定义到的其他参数。但需要上报json格式的字符串
};
[DHLog logAction:dic];
# 2.3.3 按钮日志
参数说明
字段名称 | 字段注释 | 优先级 | 描述 |
---|---|---|---|
action_model | 上报类型(SDK数据上报固定使用normal) | 1 | 固定值:normal |
trackPlatform | 日志发送平台 | 1 | 固定值:dianhun |
logType | 日志类型 | 1 | 日志类型,固定值:button |
buttonId | 按钮ID | 1 | 统计维度 |
buttonType | 按钮分类 | 2 | 统计维度 |
pageId | 界面ID | 2 | 按钮所在界面ID,用于分析用户操作路径 |
eventParam | 操作参数 | 2 | 比如是跳转到另外一个页面,就填写结果页ID;匹配按钮则可以填匹配时间 |
areaId | 大区ID | 2 | 若游戏无大区概念,则填1作为初始大区编号 |
roleId | 角色ID | 2 | 整个游戏内唯一 |
extendParams | 扩展参数 | 2 | 项目根据实际需要自定义规范中未定义到的其他参数。但需要上报==json格式的字符串==,如"{\"kills\":\"0\",\"deaths\":\"0\",\"assistant\":\"0\"}",key命名尽量简短易懂,自定义参数最多==20==个 |
示例代码
NSDictionary *dic = @{@"action_model":@"normarl", //固定
@"trackPlatform":@"dianhun", //平台
@"logType":@"button", //日志类型
@"buttonId":@"10000", //按钮ID
@"buttonType":@"2", //按钮分类
@"pageId":@"pvp",//按钮所在界面ID,用于分析用户操作路径
@"eventParam":@"10",//操作参数,比如是跳转到另外一个页面,就填写结果页ID;匹配按钮则可以填匹配时间
@"areaId":@"1", //游戏大区ID,如果没有大区概念默认1
@"roleId":@"7812312", //角色ID,游戏内唯一(不同区服之间也不允许重复),建议纯数字。若游戏无角色概念,则填账号id
@"extendParams":@"{\"kills\":\"10\",\"deaths\":\"2\",\"assistant\":\"3\"}" //扩展参数,项目根据实际需要自定义规范中未定义到的其他参数。但需要上报json格式的字符串
};
[DHLog logAction:dic];
# 2.3.4 自定义日志
参数说明
字段名称 | 字段注释 | 优先级 | 描述 |
---|---|---|---|
action_model | 上报类型(SDK数据上报固定使用normal) | 1 | 固定值:normal |
trackPlatform | 日志发送平台 | 1 | 固定值:dianhun |
logType | 日志类型 | 1 | 日志类型,固定值:custom |
eventName | 自定义事件类型 | 1 | 尽量使用英文单词命名,如'levelUp','joinCorp' |
eventObj | 操作对象 | 2 | 如果是按钮点击事件,则对应按钮ID |
eventResult | 操作结果 | 2 | 如果是按钮点击事件,则返回按钮点击的结果,比如是跳转到另外一个页面,就填写结果页ID |
eventCode | 操作原因 | 2 | 如果是页面离开事件,填离开原因 |
areaId | 大区ID | 2 | 若游戏无大区概念,则填1作为初始大区编号 |
roleId | 角色ID | 2 | 整个游戏内唯一 |
extendParams | 扩展参数 | 2 | 项目根据实际需要自定义规范中未定义到的其他参数。但需要上报==json格式的字符串==,如"{\"kills\":\"0\",\"deaths\":\"0\",\"assistant\":\"0\"}",key命名尽量简短易懂,自定义参数最多==20==个 |
示例代码
NSDictionary *dic = @{@"action_model":@"normarl", //固定
@"logType":@"custom", //日志类型
@"areaId":@"1", //游戏大区ID,如果没有大区概念默认1,不能为空
@"trackPlatform":@"dianhun", //平台
@"roleId":@"7812312", //角色ID,游戏内唯一(不同区服之间也不允许重复),建议纯数字。若游戏无角色概念,则填账号id
@"eventName":@"levelup", //自定义事件名
@"eventObj":@"pay_btn", //操作对象,如果是按钮点击事件,则对应按钮ID
@"eventResult":@"real_page",//操作结果
@"eventCode":@"login",//操作原因
@"extendParams":@"{\"kills\":\"0\",\"deaths\":\"0\",\"assistant\":\"0\"}" //扩展参数,项目根据实际需要自定义规范中未定义到的其他参数。但需要上报json格式的字符串
};
[DHLog logAction:dic];