主题
Skip to content 
说明
为了方便后续对产品进行优化,需要添加操作数据埋点的逻辑
统计接口的核心代码在 GameHelper.GameStatistics
中
大部分基础事件,如启动,时长,广告播放,崩溃等事件,SDK 内部都已做处理,部分和游戏玩法强关联的事件,需要 CP 在集成过程中自主上报。
玩法统计
玩法统计从大到小分为 3 个维度:玩法
、模式
、关卡
。每种维度均提供了进入和退出的接口。
一般而言玩法统计为必备项目,游戏在正确的时机调用相关接口即可。
案例讲解
假设有一个游戏叫"开心拍一拍
",其只有一个本体主玩法(点击主页的开始游戏就会进入),与对接人员确认后其玩法名为KXPYP
。主玩法有两种模式"闯关
"和"每日挑战
",与对接人员确认后模式名分别为"cg
"和"mrtz
"。每种模式都有 100 关。

SDK 隐私初始化完成后,此时预加载页面的所有元素展示,玩家还未点击进入游戏。
玩家点击进入游戏,或游戏自动跳转游戏首页,调用
EnterHome
接口。由于游戏为单玩法,主页等同于玩法主界面,再调用EnterGame
接口,并传入玩法名KXPYP
游戏首页有两个模式选择按钮,点击任意模式后会进入关卡选择界面。假设玩家点击了闯关模式,调用
EnterMode
接口,传入模式名cg
玩家选择了第 50 关,程序即将进入游玩场景,此时调用
StartGame
接口,传入关卡编号50
,模式名cg
在 level 层级下(也就是游玩场景),针对玩家的操作调用专门的接口。
游戏暂停
PauseGame
游戏继续
ContinueGame
游戏复活
AliveGame
关卡跳过
SkipGame
游戏进度变化
ProgressGame
游戏通关
SuccessGame
游戏失败
FailGame
游戏平局
DrawGame
游戏犯规
FoulGame
请注意,无论游戏以何种形式重新开始时,都需要调用StartGame
假设玩家得分 999,并中途退出游戏,退回选关界面。调用
QuitGame
接口,传入关卡分数999
退回游戏首页
先调用
ExitMode
接口因为退回了游戏首页,再调用
EnterHome
接口由于游戏为单玩法,主页等同于玩法主界面,最后调用
EnterGame
接口,并传入玩法名KXPYP
FAQ:
如果没有模式的概念
请首先与对接人员确认,分配一个模式名。如果对接人员未分配,则使用"
wujin
"相当于进入玩法时直接进入了模式。在调用
EnterGame
时,顺带调用EnterMode
。
如果没有关卡的概念,关卡编号填 0
如果没有分数的概念,分数填-1
暂停原因的枚举
POPUP
:默认值,弹窗暂停ADS
:广告暂停BACKGROUND
:前后台暂停PROGRESS
:关卡进度,从有进度的游戏回来
进入游戏首页时调用(一般为第一个统计事件), 回到首页也调用一次
逻辑方法 可能上报 mode_gaming 和 gaming 事件
javascript
GameHelper.GameStatistics.EnterHome();
进入游戏玩法时调用
逻辑方法 会上报 start 事件 可能上报 start_first
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
sGameName | string | / | 是 | 玩法名 |
javascript
GameHelper.GameStatistics.EnterGame("KXPYP");
进入玩法下的游戏模式时调用
会上报 mode_start 可能上报 mode_gaming
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
sModeName | string | / | 是 | 模式名。如果游戏没有分模式的话, 填写 wujin 即可 |
javascript
GameHelper.GameStatistics.EnterMode("cg");
进入游玩场景时调用
上报 game_start 事件
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
model_level | number | / | 是 | 关卡编号,如果当前模式没有关卡概念可填 0 |
sModeName | string | / | 是 | 模式名。如果游戏没有分模式的话, 填写 wujin |
javascript
GameHelper.GameStatistics.StartGame(50, "cg");
离开游玩场景时调用
上报 game_quit
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
iScores | number | / | 是 | 如果有分数概念则根据策划要求上传,没有则填-1 |
javascript
GameHelper.GameStatistics.QuitGame(999);
离开当前模式时调用
可能上报 mode_gaming
javascript
GameHelper.GameStatistics.ExitMode();
游戏暂停时调用(仅限用户主动操作时上报),常见于打开暂停页或者其他弹窗导致游戏进程暂停
上报 game_pause
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
iScores | number | -1 | 否 | 暂停时的分数。如果有分数概念则根据策划要求上传,没有则不传 |
state | PAUSE_STATE | PAUSE_STATE.POPUP | 否 | 导致暂停的原因. 不填则默认为 PAUSE_STATE.POPUP |
javascript
GameHelper.GameStatistics.PauseGame(123);
游戏继续时调用. 得调用PauseGame
后调用ContinueGame
才生效
上报 game_continue
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
model_level | number | / | 是 | 关卡编号,如果当前模式没有关卡概念可填 0 |
sModeName | number | / | 是 | 模式名。如果游戏没有分模式的话, 填写 wujin |
state | PAUSE_STATE | PAUSE_STATE.POPUP | 否 | 导致暂停的原因. 不填则默认为 PAUSE_STATE.POPUP |
javascript
GameHelper.GameStatistics.ContinueGame(50, "cg");
游戏复活时调用
上报 game_revive
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
iScores | number | -1 | 否 | 复活时的分数。如果有分数概念则根据策划要求上传,没有则不传 |
javascript
GameHelper.GameStatistics.AliveGame(123);
跳过关卡时调用
上报 game_skip
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
iScores | number | -1 | 否 | 跳关时的分数。如果有分数概念则根据策划要求上传,没有则不传 |
javascript
GameHelper.GameStatistics.SkipGame(123);
游戏成功时调用
上报 game_complete
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
iScores | number | -1 | 否 | 游戏成功时的分数。如果有分数概念则根据策划要求上传,没有则不传 |
javascript
GameHelper.GameStatistics.SuccessGame(123);
游戏失败时调用
上报 game_fail
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
iScores | number | -1 | 否 | 游戏失败时的分数。如果有分数概念则根据策划要求上传,没有则不传 |
javascript
GameHelper.GameStatistics.FailGame(123);
游戏平局时调用
上报 game_draw
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
iScores | number | -1 | 否 | 游戏平局时的分数。如果有分数概念则根据策划要求上传,没有则不传 |
javascript
GameHelper.GameStatistics.DrawGame(123);
游戏进度变化时调用,这个根据策划要求调用,当游戏进科程中有游戏进度相关的数据需要上报时可以使用
上报 game_progress
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
opt | param | -1 | 否 | 游戏平局时的分数。如果有分数概念则根据策划要求上传,没有则不传 |
param
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
mode_level_progress | number | / | 否 | 游戏关卡进度,该数据含义不固定,根据策划需求定义 |
mode_level_score | number | / | 否 | 游戏分数变化,该数据含义不固定,根据策划需求定义 |
javascript
GameHelper.GameStatistics.ProgressGame({
mode_level_progress: 50,
mode_level_score: 6,
});
游戏犯规时调用
上报 game_foul
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
iScores | number | -1 | 否 | 游戏犯规时的分数。如果有分数概念则根据策划要求上传,没有则不传 |
javascript
GameHelper.GameStatistics.FoulGame(123);
道具统计
仅在游戏有道具系统,且与对接同事确认后需要进行统计时,才进行调用。
每个道具需要区分清楚,它是否为一次性物品(用了就消耗了,导致其数量减少,例如货币),如果无数量限制则为永久物品。
物品类型枚举:
EItemType1\_CURRENCY
:货币EItemType1\_PROP
:道具EItemType1\_SKIN
:皮肤
获取物品时调用
上报 item_get
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
iItemId | number | / | 是 | 物品 id,最好游戏中有一个枚举来列举所有的物品 |
iItemType1 | EItemType1 | / | 是 | 物品枚举, 必须使用 EItemType1 枚举 |
iCount | number | / | 是 | 物品变化量,是一个>=0 的值。需要注意的是即使消耗物品导致了物品数量减少,iCountt 也应该是>-1 的。 |
iRemainCount | number | / | 是 | 物品变化后的数据,是一个>-1 的值 |
sItemGame | number | / | 是 | 获取物品的玩法名称 |
iItemType2 | number | / | 否 | 物品类型 2,根据需求提供,不需要可以传-1 |
iItemType3 | number | / | 否 | 物品类型 2,根据需求提供,不需要可以传-1 |
示例:开心拍一拍的金币,其物品 id 为 1。过去为 100,看了视频广告获得了 100 枚,现在为 200 枚。
javascript
GameHelper.GameStatistics.GetItem(1, GameHelper.GameStatistics.EItemType1.EItemType1_CURRENCY, 100, 200, "KXPYP");
玩家消耗(有次数限制的)物品时调用
上报 item_cost
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
iItemId | number | / | 是 | 物品 id,最好游戏中有一个枚举来列举所有的物品 |
iItemType1 | EItemType1 | / | 是 | 物品枚举, 必须使用 EItemType1 枚举 |
iCount | number | / | 是 | 物品变化量,是一个>=0 的值。需要注意的是即使消耗物品导致了物品数量减少,iCount 也应该是>-1 的。 |
iRemainCount | number | / | 是 | 物品变化后的数据,是一个>-1 的值 |
sItemGame | number | / | 是 | 获取物品的玩法名称 |
iItemType2 | number | / | 否 | 物品类型 2,根据需求提供,不需要可以传-1 |
iItemType3 | number | / | 否 | 物品类型 2,根据需求提供,不需要可以传-1 |
示例:开心拍一拍的金币,其物品 id 为 1。现在为 200 枚,重试道具花费 150 枚,此时还剩 50 枚。
javascript
GameHelper.GameStatistics.CostItem(1, GameHelper.GameStatistics.EItemType1.EItemType1_CURRENCY, 150, 50, "KXPYP");
玩家使用(无次数限制的)物品时调用
上报 item_use
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
iItemId | number | / | 是 | 物品 id,最好游戏中有一个枚举来列举所有的物品 |
iItemType1 | EItemType1 | / | 是 | 物品枚举, 必须使用 EItemType1 枚举 |
sItemGame | number | / | 是 | 获取物品的玩法名称 |
iItemType2 | number | / | 否 | 物品类型 2,根据需求提供,不需要可以传-1 |
iItemType3 | number | / | 否 | 物品类型 2,根据需求提供,不需要可以传-1 |
示例:开心拍一拍解锁了一款皮肤,玩家可不限次使用,玩家换上了该皮肤
javascript
GameHelper.GameStatistics.UseItem(1, GameHelper.GameStatistics.EItemType1.EItemType1_SKIN, "KXPYP");
引导统计
仅在游戏有引导系统,且与对接同事确认后需要进行统计时,才进行调用。一般引导分为:开始、阶段步骤、结束三个阶段,请依次调用GuideStart
、GuideStep
、GuideOver
接口即可。
引导开始时调用
上报 guide_start
javascript
GameHelper.GameStatistics.GuideStart();
引导进度每次发生变化时调用。引导的进度编号,具体含义和策划确定
上报 guide_step
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
guide_id | number | \ | 是 | 引导的进度编号,具体含义和策划确定 |
javascript
GameHelper.GameStatistics.GuideStep(1);
GameHelper.GameStatistics.GuideStep(2);
引导结束时调用
上报 guide_over
javascript
GameHelper.GameStatistics.GuideOver();
活动统计
仅在游戏有活动系统,且与对接同事确认后需要进行统计时,才进行调用。
活动类型枚举:
UNLOCK
START
SUCCESS
FAIL
RESET
GIVEUP
REWARD
COMPLETE
WARMUP
ENTER
处理活动的唯一接口.根据第一个参数 type 来区分类别
上报 activity 相关事件 activity_unlock activity_start activity_success activity_fail activity_reset activity_giveup activity_reward activity_complete activity_warmup activity_enter
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
type | EActivityType | / | 是 | 活动类型,必须使用EActivityType 枚举 |
sActivityName | string | / | 是 | 活动名 |
sActivityMode | string | / | 是 | 活动模块,注意和玩法中的 mode 没有直接关联 |
iActivityStepOld | number | / | 否 | 变化前的进度 |
iActivityStepNew | number | / | 否 | 变化后的进度 |
sActivityParam | string | / | 否 | 活动参数 |
javascript
GameHelper.GameStatistics.HandleActivity(GameHelper.GameStatistics.EActivityType.START, "actName", "actMode");
养成统计
仅在游戏有养成系统,且与对接同事确认后需要进行统计时,才进行调用。
养成类型枚举:
TRAIL
:试用UNLOCK
:解锁LEVELUP
:升级USE
:使用
处理养成的唯一接口. 根据第一个参数 type 来区分类别
上报 develop 相关事件 develop_trail develop_unlock develop_levelup develop_use
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
type | EDevelopType | / | 是 | 养成类型,必须使用EDevelopType 枚举 |
develop_type | string | / | 是 | 养成一级分类,可自定义命名 |
develop_lv | number | / | 是 | 养成后等级 |
develop_cost | string | / | 是 | 养成消耗类型 比如花费金币养成 |
develop_type2 | string | / | 否 | 养成二级分类,可自定义命名 |
develop_type3 | string | / | 否 | 养成三级分类,可自定义命名 |
javascript
GameHelper.GameStatistics.HandleDevelop(GameHelper.GameStatistics.EDevelopType.UNLOCK, "test", 0, "icon");
广告统计
废弃 使用 AdsVideoManager 播放视频将不再需要游戏统计
点击视频按钮的时候统计
上报 video_click
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
sVideoName | string | / | 是 | 视频点名称 |
javascript
GameHelper.GameStatistics.ClickVideo(videoName);
废弃 使用 AdsVideoManager 播放视频将不再需要游戏统计
开始播放视频时候统计,视频播放接口showVideoStatic
有一个返回值,返回 true 表示播放成功(即调用了平台视频播放接口),false 表示播放不成功,可以返回 true 的时候统计
上报 video_play
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
sVideoName | string | / | 是 | 视频点名称 |
javascript
GameHelper.GameStatistics.StartPlayVideo(videoName);
废弃 使用 AdsVideoManager 播放视频将不再需要游戏统计
播放视频成功,可以在视频接口的 success 中统计
上报 video_success
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
sVideoName | string | / | 是 | 视频点名称 |
javascript
GameHelper.GameStatistics.PlayedVideoOver(videoName);
废弃 使用 AdsVideoManager 播放视频将不再需要游戏统计
播放视频失败,可以在视频接口的 fail 回调中统计
上报 video_fail
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
sVideoName | string | / | 是 | 视频点名称 |
javascript
GameHelper.GameStatistics.PlayedVideoFail(videoName);
废弃 使用 AdsVideoManager 播放视频将不再需要游戏统计
GameHelper.GameStatistics.trackVideo()
上报视频广告点情况: 1-创建 2-成功 3-点击
注意此统计的逻辑,每个视频按钮代表一个视频点,视频按钮展示了代表创建 视频拉取到表示成功 点击视频按钮代表 点击
视频状态监听可以查看 GameHelper.AdsFunc.onVideoStatusChange()
例子:比如当前界面有五个视频按钮,则要统计五次trackVideo(1)
,当监听到视频拉取到则要统计五次trackVideo(2)
, 点击一次按钮就要统计一次trackVideo(3)
。当看完一个视频后(包括正常看完和中途退出,可以利用视频接口的 success fail 回调)所有状态都要重置,此时如果还是 5 个视频按钮则又要统计五次trackVideo(1)
,拉取到视频后统计五次trackVideo(2)
支付统计
GameHelper.GameStatistics.ShowPay(
sPayName
);
说明:展示支付按钮时调用
参数:sPayName,支付点名字
返回值:void
上报 pay_show 事件
GameHelper.GameStatistics.ClickPay(
sPayName
);
说明:点击支付按钮时调用
参数:sPayName,支付点名字
返回值:void
上报 pay_click 事件
GameHelper.GameStatistics.PayFail(
sPayName
);
说明:支付失败时调用
参数:sPayName,支付点名字
返回值:void
上报 pay_fail 事件
GameHelper.GameStatistics.ClickRestoreBuy(
sPayName
);
说明:点击恢复购买时调用
参数:sPayName,支付点名字
返回值:void
上报 resume_request 事件
GameHelper.GameStatistics.RestoreSuccess(
sPayName
);
说明:恢复购买成功时调用
参数:sPayName,支付点名字
返回值:void
上报 resume_success 事件
自定义统计接口
如果游戏需要上报自定义事件,并附加自定义属性,请使用reportEvent
接口。
请注意:
事件名需与对接人员确认
事件属性必须为对象,且需与对接人员确认。如果没有事件属性,传入空对象即可
参数 | 类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
eventname | string | / | 是 | 事件名 |
prop | object | / | 是 | 事件参数 |
javascript
GameHelper.GameStatistics.reportEvent("name2", {});
GameHelper.GameStatistics.reportEvent("name1", { param1: 100, param2: "abc" });
点我快速对接


