主题
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" });点我快速对接


