ymtrack-wx-game。ymtrack-wx-game/index.js
ymtrack-wx-game/index.d.tsassets/scripts/sdk/ymt/index.js
assets/scripts/sdk/ymt/index.d.tsrequire('./sdk/ymt') 或 import ymt from './sdk/ymt'。import ymt from './sdk/ymt/index.js'
ymt.init({
appKey: 'your-app-key',
debug: true,
})
ymt.setCurrentPage('GameScene')wx.onShow
wx.onHide
wx.onErrorwx.request 暂不可用时,SDK 可以正常初始化;开启 debug 后会打印 payload,但不会真实发送。request 发送上报数据,需要在微信小程序后台把 https://service.zhaomuqingyun.com 添加到 request 合法域名中。ymt.setOpenId('openid_123')ymt.init({
appKey: 'your-app-key',
debug: true,
})打印完整上报数据
模拟器/开发者工具中只打印,不真实发送
真机环境中打印并发送ymt_ 前缀。业务侧可以直接传业务事件名,SDK 会自动补齐前缀;如果已经传入 ymt_ 开头的事件名,会保持不变。ymt.track('button_click', {
buttonName: 'start',
})ymt.register({
registerType: 'wechat',
})| 字段 | 含义 |
|---|---|
| roleId | 角色 ID |
| roleName | 角色名称 |
| serverId | 区服 ID |
| serverName | 区服名称 |
ymt.role.create({
roleId: 'role_001',
roleName: '玩家昵称',
serverId: 's1',
serverName: '一区',
})| 字段 | 含义 |
|---|---|
| roleId | 角色 ID |
| serverId | 区服 ID |
| serverName | 区服名称 |
ymt.enterGame({
roleId: 'role_001',
serverId: 's1',
serverName: '一区',
})level 表示玩家等级或升级,不表示关卡。| 字段 | 适用 API | 含义 |
|---|---|---|
| level | set | 当前玩家等级 |
| source | set | 等级来源,例如登录同步、存档恢复 |
| fromLevel | up | 升级前等级 |
| toLevel | up | 升级后等级 |
| reason | up | 升级原因,例如经验足够、任务奖励 |
| exp | up | 本次升级相关经验值 |
ymt.level.set({
level: 10,
source: 'login_sync',
})
ymt.level.up({
fromLevel: 10,
toLevel: 11,
reason: 'exp_enough',
exp: 1200,
})stage 表示关卡、副本、局内阶段、轮次或检查点。| 字段 | 适用 API | 含义 |
|---|---|---|
| stageId | start / running / pause / exit / end | 关卡、副本或局内阶段 ID |
| stageName | start | 关卡名称 |
| stageType | start | 关卡类型,例如主线、活动、副本 |
| difficulty | start | 难度 |
| result | end | 关卡结果,例如 success、fail |
| durationSec | pause / exit / end | 当前关卡持续时长,单位秒 |
| score | end | 关卡得分 |
| event | running | 关卡进行中的二级行为名称 |
| round | running | 回合、波次或阶段序号 |
| reason | pause / exit | 暂停或退出原因 |
start,在胜利、失败、结算完成等明确结果出现后调用 end。ymt.stage.start({
stageId: '1-1',
stageName: '第一关',
stageType: 'main',
difficulty: 'normal',
})
ymt.stage.end({
stageId: '1-1',
result: 'success',
durationSec: 86,
score: 1200,
})track 的区别是:running 明确限定在关卡进行中。ymt.stage.running({
stageId: '1-1',
event: 'skill_select_show',
round: 2,
})ymt.stage.pause({
stageId: '1-1',
reason: 'user_pause',
durationSec: 30,
})ymt.stage.exit({
stageId: '1-1',
reason: 'back_home',
durationSec: 45,
})| 字段 | 含义 |
|---|---|
| shareType | 分享类型,例如 app_message、timeline |
| shareFrom | 分享入口,例如 result_page、home_page |
| stageId | 分享发生时关联的关卡 ID |
ymt.share({
shareType: 'app_message',
shareFrom: 'result_page',
stageId: '1-1',
})| 字段 | 含义 |
|---|---|
| orderId | 订单 ID |
| productId | 商品 ID |
| productName | 商品名称 |
| amount | 支付金额 |
| currency | 币种,例如 CNY |
| payChannel | 支付渠道,例如 wechat |
| stageId | 支付发生时关联的关卡 ID |
| level | 支付发生时的玩家等级 |
ymt.revenue({
orderId: 'order_001',
productId: 'coin_pack_6',
productName: '金币礼包',
amount: 6,
currency: 'CNY',
payChannel: 'wechat',
stageId: '1-3',
level: 12,
})| 字段 | 含义 |
|---|---|
| giftId | 礼包 ID |
| giftName | 礼包名称 |
| giftType | 礼包类型,例如新手、活动、登录奖励 |
| amount | 领取数量 |
| source | 领取入口或来源 |
ymt.gift.claim({
giftId: 'new_user_pack',
giftName: '新手礼包',
giftType: 'new_user',
amount: 1,
source: 'login',
})adType 传入 banner、native 等其他广告类型。广告位 ID adUnitId 必填。| 字段 | 适用 API | 含义 |
|---|---|---|
| adUnitId | load / loadFail / show / error / close / reward | 平台广告位 ID,必填 |
| adType | load / loadFail / show / error / close / reward | 广告类型,默认 rewarded_video,可传 banner、native 等 |
| placement | show / error / close / reward | 广告展示时机或业务场景,例如 task_fail_show、shop_reward_show、double_reward_show |
| errorCode | loadFail / error | 广告加载、展示或播放失败时的平台错误码 |
| errorMessage | loadFail / error | 广告加载、展示或播放失败时的错误信息 |
| isEnded | close | 激励视频关闭时是否完整观看 |
| rewardName | reward | 激励奖励名称,例如 revive、double_coin |
| rewardAmount | reward | 激励奖励数量 |
ymt.ad.load({
adUnitId: 'adunit-xxx',
adType: 'rewarded_video',
})ymt.ad.loadFail({
adUnitId: 'adunit-xxx',
adType: 'rewarded_video',
errorCode: 1001,
errorMessage: 'load failed',
})placement 用来区分展示时机,例如任务失败展示、商城奖励展示、双倍奖励展示。ymt.ad.show({
adUnitId: 'adunit-xxx',
adType: 'rewarded_video',
placement: 'task_fail_show',
})ymt.ad.error({
adUnitId: 'adunit-xxx',
adType: 'rewarded_video',
placement: 'task_fail_show',
errorCode: 1002,
errorMessage: 'show failed',
})isEnded 表示是否完整观看。ymt.ad.close({
adUnitId: 'adunit-xxx',
adType: 'rewarded_video',
placement: 'task_fail_show',
isEnded: true,
})banner、native 等非激励广告通常不需要调用。ymt.ad.reward({
adUnitId: 'adunit-xxx',
adType: 'rewarded_video',
placement: 'task_fail_show',
rewardName: 'revive',
rewardAmount: 1,
})