数
数据中台
事件数
0
所选时间范围
活跃用户
0
去重用户
新增用户
0
首次出现用户
会话数
0
session_start
总收益
0
客户端上报金额
每日数据
抖音游戏
微信游戏
关卡数据
游戏用户
用户留存
实时日志
游戏SDK
一、/api/events 通用埋点接口
// 上报单条游戏事件 /api/events 请求方式 POST
请求头:{
"Content-Type": "application/json",
"X-API-Key": "ingest-secret" // 配置 ANALYTICS_INGEST_API_KEY 后必填
}
请求参数:{
event_name: "level_start", // 事件名,必填
platform: "douyin", // 平台:douyin 或 wechat,建议必填
game_id: "game-001", // 后台游戏ID或小游戏appid,建议必填
user_id: "", // 用户ID,user_id / anonymous_id / openid 至少传一个
anonymous_id: "device-001", // 匿名用户ID
openid: "", // 平台openid
channel: "organic", // 渠道,可选
version: "1.0.0", // 游戏版本,可选
session_id: "session-001", // 会话ID,可选
event_time: 1716268800000, // 事件时间,可传毫秒时间戳、秒时间戳或RFC3339字符串
level_id: "1", // 关卡ID,可选
duration_ms: 12000, // 时长,毫秒,可选
revenue: 0.01, // 收益金额,可选
currency: "CNY", // 币种,可选
properties: { // 自定义字段,最多保留32个
prop_name: "revive",
result: "win"
}
}
返回参数:{
accepted: 1, // 成功接收数量
rejected: 0 // 被丢弃数量
}
二、/api/events 批量上报接口
// 批量上报方式一:直接传数组 请求方式 POST
请求参数:[
{
event_name: "session_start",
platform: "douyin",
game_id: "game-001",
anonymous_id: "device-001"
},
{
event_name: "level_start",
platform: "douyin",
game_id: "game-001",
anonymous_id: "device-001",
level_id: "1"
}
]
返回参数:{
accepted: 2,
rejected: 0
}
// 批量上报方式二:events 包裹,单次最多500条
请求参数:{
events: [
{
event_name: "level_win",
platform: "wechat",
game_id: "wx-game-001",
openid: "openid-001",
level_id: "1",
duration_ms: 18000
}
]
}
返回参数:{
accepted: 1,
rejected: 0
}
三、事件字段说明
// 推荐事件名
session_start // 启动游戏,统计会话
level_start // 进入关卡,统计关卡开始
level_win // 关卡成功,统计通关
level_fail // 关卡失败,统计失败
level_complete // 关卡结束,可在 properties.result 里传 win / fail
ad_reward // 激励视频广告
ad_interstitial // 插屏广告
iap_pay // 内购付费
// 关卡统计依赖字段
{
event_name: "level_win",
platform: "douyin",
game_id: "game-001",
anonymous_id: "device-001",
level_id: "10",
duration_ms: 25000,
properties: {
result: "win"
}
}
// 收益统计依赖字段
{
event_name: "ad_reward",
platform: "wechat",
game_id: "wx-game-001",
openid: "openid-001",
level_id: "10",
revenue: 0.02,
currency: "CNY",
properties: {
ad_type: "reward",
ad_unit_id: "ad-unit-001"
}
}
四、后台查询接口
// 后台查询接口都走 GET,请求头需要 X-API-Key
请求头:{
"X-API-Key": "admin-secret" // 配置 ANALYTICS_ADMIN_API_KEY 后必填
}
GET /api/summary?days=14&platform=douyin // 数据概览
GET /api/users?days=14&platform=douyin // 游戏用户
GET /api/levels?days=14&platform=douyin // 关卡数据
GET /api/retention?days=14&platform=douyin // 用户留存
GET /api/recent?limit=80&platform=douyin // 实时日志
platform 可选值:
douyin // 抖音小游戏
wechat // 微信小游戏
不传 platform 时返回全部平台数据
五、SDK示例文件
// 示例文件
examples/minigame-client.js
// 抖音小游戏推荐使用 /api/login_conversion + /api/game_track
// 微信小游戏当前推荐使用 /api/events,并固定 platform: "wechat"
初始化时需要配置:
{
baseURL: "https://game.zhiling2026.com",
appid: "小游戏appid",
loginConversion: true
}
抖音SDK
一、https://game.zhiling2026.com/api/login
// 登录 /api/login 请求方式 POST
请求参数:{
appid: "", // 游戏的appid
clickId: "", // 抖音SDK获取的广告点击ID,非必须
project_id: "", // 抖音SDK广告项目ID,非必须
promotion_id: "", // 抖音SDK广告计划ID,非必须
code: "", // tt.login 获取的 code
anonymousCode: "" // tt.login 获取的 anonymousCode
}
返回参数:{
openid: "", // 用户openid
blackUser: false, // true 时,激励和插屏广告都要先请求 /api/getAd
dataPoint: "1", // 是否开启埋点,1 开启,0 关闭
game_id: "", // 后台游戏ID
click_id: "", // 广告点击ID,埋点接口需要
new_date: "", // 用户首次进入日期,埋点接口需要
interstitial_level: 0 // 插屏从第几关开始显示,0 表示按游戏自身逻辑
}
二、获取 project_id / promotion_id / clickId
getAdParams() {
if (!window.tt) return {};
try {
const options = window.tt.getLaunchOptionsSync();
if (!options || !options.query || !options.query.ad_params) return {};
const adParams = JSON.parse(decodeURIComponent(options.query.ad_params));
const logExtra = adParams && adParams.log_extra ? adParams.log_extra : {};
return {
clickId: logExtra.clickid || "",
project_id: logExtra.project_id || "",
promotion_id: logExtra.promotion_id || ""
};
} catch (e) {
console.warn("广告参数解析失败:", e);
return {};
}
}
二、https://game.zhiling2026.com/api/login_conversion
// 巨量激活登录 /api/login_conversion 请求方式 POST
// 用这个接口时,前端不用再单独回调巨量激活接口
请求参数:{
appid: "", // 游戏的appid
clickId: "", // 抖音SDK获取的广告点击ID,非必须
project_id: "", // 抖音SDK广告项目ID,非必须
promotion_id: "", // 抖音SDK广告计划ID,非必须
code: "", // tt.login 获取的 code
anonymousCode: "" // tt.login 获取的 anonymousCode
}
返回参数:{
openid: "", // 用户openid
blackUser: false, // true 时,广告调用前请求 /api/getAd
dataPoint: "1", // 是否开启埋点,1 开启,0 关闭
game_id: "", // 后台游戏ID
click_id: "", // 广告点击ID,埋点接口需要
new_date: "", // 用户首次进入日期,埋点接口需要
interstitial_level: 0 // 插屏从第几关开始显示,0 表示按游戏自身逻辑
}
三、https://game.zhiling2026.com/api/getAd
// 广告权限 /api/getAd 请求方式 POST
// 登录接口返回 blackUser=true 时,激励视频和插屏广告都要调用该接口
请求参数:{
openid: "", // 用户openid,登录接口返回
appid: "", // 游戏appid
game_id: "" // 后台游戏ID,登录接口返回
}
返回参数:{
openAd: true // true 正常调用广告;false 不调用广告,直接给奖励,不能影响玩家正常游戏
}
四、关卡数据接口
一、https://game.zhiling2026.com/api/saveLevelInfo
// 存储关卡数据 /api/saveLevelInfo 请求方式 POST
请求参数:{
appid: "", // 游戏appid
openid: "", // 用户openid
userJson: {} // JSON对象,存档内容
}
返回参数:{
data: {}
}
二、https://game.zhiling2026.com/api/getLevelInfo
// 获取关卡数据 /api/getLevelInfo 请求方式 POST
请求参数:{
appid: "", // 游戏appid
openid: "" // 用户openid
}
返回参数:{
data: {
openid: "", // 用户openid
userJson: "" // JSON字符串,客户端需要 JSON.parse()
}
}
五、https://game.zhiling2026.com/api/game_track
// event: enterLv,进入关卡 请求方式 POST
请求参数:{
event: "enterLv",
data: {
level_id: 1, // 关卡
appid: "", // 游戏appid
openid: "", // 用户openid
game_id: "", // 后台游戏ID,登录接口返回
click_id: "", // 广告点击ID,登录接口返回
new_date: "" // 用户首次进入日期,登录接口返回
}
}
返回参数:{
data: { accepted: true }
}
// event: gameOver,游戏结束 请求方式 POST
请求参数:{
event: "gameOver",
data: {
level_id: 1, // 关卡
lvtime: 12.5, // 关卡耗时,秒
ovew_type: 1, // 1 过关,2 失败
shengyunum: "100%", // 完成多少
appid: "",
openid: "",
game_id: "",
click_id: "",
new_date: ""
}
}
返回参数:{
data: { accepted: true }
}
// event: levelAdnum,道具广告 请求方式 POST
请求参数:{
event: "levelAdnum",
data: {
level_id: 1,
prop_name: "revive", // 道具名称
appid: "",
openid: "",
game_id: "",
click_id: "",
new_date: ""
}
}
返回参数:{
data: { accepted: true }
}
// event: generalEvent,通用事件 请求方式 POST
请求参数:{
event: "generalEvent",
data: {
general_data: "button_click", // 通用事件名
appid: "",
openid: "",
game_id: "",
click_id: "",
new_date: ""
}
}
返回参数:{
data: { accepted: true }
}
// 后台落库事件映射
enterLv -> level_start
gameOver + ovew_type=1 -> level_win
gameOver + ovew_type=2 -> level_fail
levelAdnum -> prop_ad
generalEvent -> general_event
六、https://game.zhiling2026.com/api/feedEntry
// 推荐直流配置 /api/feedEntry 请求方式 GET
开发平台配置:
Domain: game.zhiling2026.com/
Path: api/feedEntry
请求参数:{
appid: "" // 可选,传入后按后台对应游戏配置返回
}
返回参数:{
code: 0,
data: {
enabled: true, // 是否开启推荐直流
scene: "feedEntry"
}
}
微信SDK
一、https://game.zhiling2026.com/api/events
// 微信小游戏通用埋点 /api/events 请求方式 POST
请求头:{
"Content-Type": "application/json",
"X-API-Key": "ingest-secret" // 配置 ANALYTICS_INGEST_API_KEY 后必填
}
请求参数:{
event_name: "level_start", // 事件名,必填
platform: "wechat", // 微信小游戏固定传 wechat
game_id: "wx-game-001", // 微信小游戏appid或后台游戏ID
openid: "", // 已接微信登录时传 openid
anonymous_id: "device-001", // 未接微信登录时传匿名ID
level_id: "1", // 关卡ID,可选
duration_ms: 0, // 时长,毫秒,可选
revenue: 0, // 收益,可选
currency: "CNY", // 币种,可选
properties: {} // 自定义字段
}
返回参数:{
accepted: 1,
rejected: 0
}
二、微信启动和登录字段
// 微信登录 /api/wechat/login 请求方式 POST
// 服务端使用后台配置的 AppSecret 调微信官方 code2Session,session_key 不返回客户端
// 登录
请求参数:{
appid: "wx-game-001",
code: "wx.login 返回的 code"
}
返回参数:{
openid: "",
unionid: "",
game_id: ""
}
// 启动游戏
请求参数:{
event_name: "session_start",
platform: "wechat",
game_id: "wx-game-001",
anonymous_id: "device-001", // 登录失败或未登录时可用匿名ID兜底
openid: "", // /api/wechat/login 返回的 openid
channel: "organic",
version: "1.0.0",
session_id: "session-001",
event_time: 1716268800000
}
返回参数:{
accepted: 1,
rejected: 0
}
三、微信关卡数据接口
// 进入关卡
请求参数:{
event_name: "level_start",
platform: "wechat",
game_id: "wx-game-001",
openid: "openid-001",
level_id: "1"
}
返回参数:{
accepted: 1,
rejected: 0
}
// 关卡成功
请求参数:{
event_name: "level_win",
platform: "wechat",
game_id: "wx-game-001",
openid: "openid-001",
level_id: "1",
duration_ms: 18000,
properties: {
result: "win"
}
}
返回参数:{
accepted: 1,
rejected: 0
}
// 关卡失败
请求参数:{
event_name: "level_fail",
platform: "wechat",
game_id: "wx-game-001",
openid: "openid-001",
level_id: "1",
duration_ms: 14000,
properties: {
result: "fail",
reason: "timeout"
}
}
返回参数:{
accepted: 1,
rejected: 0
}
四、微信广告收益接口
// 激励视频广告
请求参数:{
event_name: "ad_reward",
platform: "wechat",
game_id: "wx-game-001",
openid: "openid-001",
level_id: "1",
revenue: 0.02,
currency: "CNY",
properties: {
ad_type: "reward",
ad_unit_id: "ad-unit-001",
reward_name: "revive"
}
}
返回参数:{
accepted: 1,
rejected: 0
}
// 插屏广告
请求参数:{
event_name: "ad_interstitial",
platform: "wechat",
game_id: "wx-game-001",
openid: "openid-001",
level_id: "3",
revenue: 0.01,
currency: "CNY",
properties: {
ad_type: "interstitial",
ad_unit_id: "ad-unit-002"
}
}
返回参数:{
accepted: 1,
rejected: 0
}
五、微信后台查询接口
// 微信后台页面使用这些接口读取数据,请求方式 GET
请求头:{
"X-API-Key": "admin-secret" // 配置 ANALYTICS_ADMIN_API_KEY 后必填
}
GET /api/summary?days=14&platform=wechat // 微信数据概览
GET /api/users?days=14&platform=wechat // 微信游戏用户
GET /api/levels?days=14&platform=wechat // 微信关卡数据
GET /api/retention?days=14&platform=wechat // 微信用户留存
GET /api/recent?limit=80&platform=wechat // 微信实时日志
后台菜单对应:
微信游戏用户 -> /api/users?platform=wechat
微信关卡数据 -> /api/levels?platform=wechat
微信埋点分析 -> /api/summary?platform=wechat
微信用户留存 -> /api/retention?platform=wechat
我的信息
当前后台:
查询鉴权:
存储后端:启动日志会显示
数据中台查询鉴权:
X-API-Key存储后端:启动日志会显示
storage backend