# 数据统计

# 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"

###2.2.2节点事件上报

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];
Last Updated: 2024/9/5 15:48:55