lagged-js-sdk
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseLagged JavaScript SDK
Lagged JavaScript SDK
window.LaggedAPILaggedAPI加载脚本执行完毕后,系统会公开 。初始化、玩家查询、广告、排行榜和成就均通过 提供。
window.LaggedAPILaggedAPIOverview
概览
Supported features: initialization handshake, player profile lookup, interstitial ads, rewarded ads, leaderboard score submission, and achievement unlocks.
支持的功能:初始化握手、玩家资料查询、插页广告、激励广告、排行榜分数提交和成就解锁。
Integration Checklist
集成检查清单
- Load SDK — inject and wait for
lagged.jswindow.LaggedAPI - Init with credentials — call with ids from the Lagged dashboard
sdk.init(devId, publisherId) - Check player auth — call ;
sdk.User.getmeans signed-in,id > 0means guestid = 0 - Wire ads at scene transitions — show interstitials between levels; gate rewarded ads on player action
- Submit scores on game over — call with the board id and final score
sdk.Scores.save - Unlock achievements — call when criteria are met
sdk.Achievements.save
- 加载 SDK——注入 并等待
lagged.jswindow.LaggedAPI - 使用凭据初始化——使用 Lagged 控制台中的 id 调用
sdk.init(devId, publisherId) - 检查玩家身份验证——调用 ;
sdk.User.get表示已登录,id > 0表示访客id = 0 - 在场景切换时接入广告——在关卡之间展示插页广告;由玩家操作触发激励广告
- 在游戏结束时提交分数——使用榜单 id 和最终分数调用
sdk.Scores.save - 解锁成就——满足条件时调用
sdk.Achievements.save
Installation
安装
The SDK URL is . Dynamically inject the script tag, then poll for before proceeding.
https://lagged.com/api/rev-share/lagged.jswindow.LaggedAPIjavascript
const SDK_URL = 'https://lagged.com/api/rev-share/lagged.js';
async function loadLaggedSDK(timeoutMs = 10000) {
await new Promise((resolve, reject) => {
const s = Object.assign(document.createElement('script'), {
src: SDK_URL,
async: true,
onload: resolve,
onerror: () => reject(new Error('Failed to load Lagged SDK'))
});
document.head.appendChild(s);
});
const started = Date.now();
while (typeof window.LaggedAPI === 'undefined') {
if (Date.now() - started > timeoutMs)
throw new Error('LaggedAPI did not appear within ' + timeoutMs + 'ms');
await new Promise((r) => setTimeout(r, 50));
}
return window.LaggedAPI;
}SDK URL 为 。动态注入 script 标签,然后轮询 ,待其可用后再继续操作。
https://lagged.com/api/rev-share/lagged.jswindow.LaggedAPIjavascript
const SDK_URL = 'https://lagged.com/api/rev-share/lagged.js';
async function loadLaggedSDK(timeoutMs = 10000) {
await new Promise((resolve, reject) => {
const s = Object.assign(document.createElement('script'), {
src: SDK_URL,
async: true,
onload: resolve,
onerror: () => reject(new Error('Failed to load Lagged SDK'))
});
document.head.appendChild(s);
});
const started = Date.now();
while (typeof window.LaggedAPI === 'undefined') {
if (Date.now() - started > timeoutMs)
throw new Error('LaggedAPI did not appear within ' + timeoutMs + 'ms');
await new Promise((r) => setTimeout(r, 50));
}
return window.LaggedAPI;
}Initialization
初始化
LaggedAPI.initinitWrap in a try/catch at the call site — on failure, disable leaderboard, achievement and ad calls so the game remains playable without SDK support.
initLaggedjavascript
async function initLagged(devId, publisherId) {
if (!devId || !publisherId) throw new Error('devId and publisherId are required');
const sdk = await loadLaggedSDK();
sdk.init(devId, publisherId);
const player = await new Promise((resolve) => {
sdk.User.get((response) => {
resolve(response && response.user ? response.user : {});
});
});
// id > 0 = signed-in player; id = 0 = guest
const profile = {
isAuthorized: player.id > 0,
id: player.id || null,
name: player.name || null,
avatar: player.avatar || null
};
console.debug('[Lagged] init complete', profile);
return { sdk, profile };
}LaggedAPI.initinit在调用处使用 try/catch 包裹 ——失败时,禁用排行榜、成就和广告调用,确保游戏在没有 SDK 支持的情况下仍可正常游玩。
initLaggedjavascript
async function initLagged(devId, publisherId) {
if (!devId || !publisherId) throw new Error('devId and publisherId are required');
const sdk = await loadLaggedSDK();
sdk.init(devId, publisherId);
const player = await new Promise((resolve) => {
sdk.User.get((response) => {
resolve(response && response.user ? response.user : {});
});
});
// id > 0 = signed-in player; id = 0 = guest
const profile = {
isAuthorized: player.id > 0,
id: player.id || null,
name: player.name || null,
avatar: player.avatar || null
};
console.debug('[Lagged] init complete', profile);
return { sdk, profile };
}Player
玩家
Player data is read once during initialization via . The callback receives . The full retrieval logic is demonstrated in the function above. If you need a guest fallback, generate a local id and persist it in .
LaggedAPI.User.get(callback){ user: { id, name, avatar } }initLaggedlocalStorage玩家数据在初始化期间通过 读取一次。回调接收 。上述 函数演示了完整的数据获取逻辑。如果需要为访客提供回退方案,请生成本地 id 并将其持久化到 中。
LaggedAPI.User.get(callback){ user: { id, name, avatar } }initLaggedlocalStorageAdvertisement
广告
Interstitial
插页广告
LaggedAPI.APIAds.show(onClosed)onClosedjavascript
function showInterstitial(sdk, { onOpened, onClosed } = {}) {
onOpened?.();
sdk.APIAds.show(() => {
onClosed?.();
});
}LaggedAPI.APIAds.show(onClosed)onClosedjavascript
function showInterstitial(sdk, { onOpened, onClosed } = {}) {
onOpened?.();
sdk.APIAds.show(() => {
onClosed?.();
});
}Rewarded
激励广告
LaggedAPI.GEvents.reward(canShowReward, rewardSuccess)- — if
canShowReward(success, showAdFn)issuccess, calltrueto display the ad; otherwise surface a fallback.showAdFn() - —
rewardSuccess(success)means the player earned the reward;truemeans dismissed early or failed.false
javascript
function showRewarded(sdk, { onOpened, onRewarded, onClosed, onFailed } = {}) {
onOpened?.();
sdk.GEvents.reward(
(success, showAdFn) => {
if (success) showAdFn();
else onFailed?.('unavailable');
},
(success) => {
if (success) {
onRewarded?.();
onClosed?.();
} else onFailed?.('not_completed');
}
);
}LaggedAPI.GEvents.reward(canShowReward, rewardSuccess)- ——如果
canShowReward(success, showAdFn)为success,调用true展示广告;否则提供回退方案。showAdFn() - ——
rewardSuccess(success)表示玩家已获得奖励;true表示玩家提前关闭广告或广告播放失败。false
javascript
function showRewarded(sdk, { onOpened, onRewarded, onClosed, onFailed } = {}) {
onOpened?.();
sdk.GEvents.reward(
(success, showAdFn) => {
if (success) showAdFn();
else onFailed?.('unavailable');
},
(success) => {
if (success) {
onRewarded?.();
onClosed?.();
} else onFailed?.('not_completed');
}
);
}Leaderboards
排行榜
Each board is identified by a string id configured on the Lagged dashboard. There is no API to fetch entries or open a native popup.
javascript
function submitScore(sdk, boardId, score) {
return new Promise((resolve, reject) => {
sdk.Scores.save({ score, board: boardId }, (response) => {
if (response && response.success) resolve(response);
else reject((response && response.errormsg) || 'leaderboard_failed');
});
});
}每个榜单均由 Lagged 控制台中配置的字符串 id 标识。没有可用于获取榜单条目或打开原生弹窗的 API。
javascript
function submitScore(sdk, boardId, score) {
return new Promise((resolve, reject) => {
sdk.Scores.save({ score, board: boardId }, (response) => {
if (response && response.success) resolve(response);
else reject((response && response.errormsg) || 'leaderboard_failed');
});
});
}Achievements
成就
LaggedAPI.Achievements.save(achievements, callback)javascript
function unlockAchievement(sdk, achievement) {
if (!achievement) return Promise.reject(new Error('achievement is required'));
return new Promise((resolve, reject) => {
const payload = Array.isArray(achievement) ? achievement : [achievement];
sdk.Achievements.save(payload, (response) => {
if (response && response.success) resolve(response);
else reject((response && response.errormsg) || 'achievement_failed');
});
});
}LaggedAPI.Achievements.save(achievements, callback)javascript
function unlockAchievement(sdk, achievement) {
if (!achievement) return Promise.reject(new Error('achievement is required'));
return new Promise((resolve, reject) => {
const payload = Array.isArray(achievement) ? achievement : [achievement];
sdk.Achievements.save(payload, (response) => {
if (response && response.success) resolve(response);
else reject((response && response.errormsg) || 'achievement_failed');
});
});
}