关于 poki-js-sdk
poki-js-sdk 是将 Poki JavaScript SDK 集成到游戏中的技能,面向游戏开发者,涵盖初始化、生命周期事件、广告时段以及使用 Poki Inspector 验证流程。
主要功能
- 01加载并初始化 Poki SDK
- 02通知游戏加载完成
- 03配对游戏开始与停止事件
- 04添加插屏和激励广告时段
- 05使用 Poki Inspector 验证流程
适用场景
- 01将 Poki 集成到游戏
- 02通过生命周期事件管理游戏环节
- 03测试广告时段及暂停恢复行为
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ hungify/ playables-skills --skill poki-js-sdk安装后在 Claude Code 中输入/poki-js-sdk确认已加载。
详细介绍
Poki JavaScript SDK
集成工作流
- 添加 SDK 脚本 — 嵌入 Poki 脚本标签,或动态注入该标签。
- 初始化 — 调用
PokiSDK.init(),并在游戏准备就绪时完成gameLoadingFinished。 - 验证初始化 — 查看浏览器控制台中的 Poki SDK 握手消息;使用 Poki Inspector 开发工具确认会话已启动。
- 添加生命周期钩子 — 在每次游戏环节前后调用
gameplayStart/gameplayStop。 - 添加广告插播 — 在自然的暂停节点插入
commercialBreak;在玩家可以选择观看广告的场景添加rewardedBreak。 - 在 Poki Inspector 中测试 — 打开
https://inspector.poki.io,加载游戏 URL,并触发每种广告插播以确认流程。
安装
将官方 Poki SDK 脚本添加到页面:
<script src="https://game-cdn.poki.com/scripts/v2/poki-sdk.js"></script>
或动态注入:
function loadPokiSdk() {
return new Promise((resolve, reject) => {
const script = document.createElement('script');
script.src = 'https://game-cdn.poki.com/scripts/v2/poki-sdk.js';
script.onload = resolve;
script.onerror = reject;
document.head.appendChild(script);
});
}
初始化
loadPokiSdk()
.then(() => window.PokiSDK.init())
.then(() => {
// SDK is ready
window.PokiSDK.gameLoadingFinished();
})
.catch(() => {
// SDK init failed - continue without Poki integration
window.PokiSDK && window.PokiSDK.gameLoadingFinished();
});
游戏准备好供玩家游玩时,调用 gameLoadingFinished。如果加载器有多个明确的阶段,则使用 gameLoadingStart 和 gameLoadingFinished 标记这些阶段的起止。
广告
插屏广告
使用 isOpened 标志检测广告是否实际展示——未展示广告时不会调用回调。
function showInterstitial() {
let isOpened = false;
window.PokiSDK.commercialBreak(() => {
isOpened = true;
// Pause game, mute audio
})
.then(() => {
if (isOpened) {
// Resume game, unmute audio
} else {
// Ad was not shown
}
})
.catch(() => {
// Ad request failed
});
}
激励广告
rewardedBreak 会解析为一个布尔值——只有当 isOpened 为 true 且解析值为真时,才发放奖励。
function showRewarded() {
let isOpened = false;
window.PokiSDK.rewardedBreak(() => {
isOpened = true;
// Pause game, mute audio
})
.then((success) => {
if (isOpened) {
if (success) {
// Grant reward to the player
}
// Resume game, unmute audio
} else {
// Ad was not shown
}
})
.catch(() => {
// Ad request failed
});
}
生命周期
玩家获得控制权时(关卡开始、关卡恢复)调用 gameplayStart;控制权被收回时(关卡暂停、完成、失败或返回菜单)调用 gameplayStop。每次 gameplayStart 都必须配对调用对应的 gameplayStop。
function onLevelStart() {
window.PokiSDK.gameplayStart();
}
function onLevelEnd() {
window.PokiSDK.gameplayStop();
}
测试与验证
- 打开
https://inspector.poki.io上的 Poki Inspector,并加载游戏 URL 以获取开发者会话。 - 浏览器控制台会打印 Poki SDK 握手和事件消息——确认
init已解析,并且gameLoadingFinished已获确认。 - 通过 Inspector 界面触发
commercialBreak和rewardedBreak,模拟广告展示,并验证暂停/恢复逻辑是否正确触发。 - 确认
gameplayStart和gameplayStop事件在 Inspector 时间线上正确时机出现。
未涵盖功能说明:此技能不涉及服务器时间、广告拦截检测、happyTime 或 gameInteractive;请将实现重点放在上述 Poki SDK 功能上。
评论
支持 Markdown