지원 / Support
home
디스코드 / Discord
home

Electron 串接

Electron 串接

事前準備

要進行 SDK 串接作業,需使用 已擁有該遊戲權益的帳號
權益可透過「遊戲使用券」取得。
若您的商店頁面已建立,請聯繫 STOVE Store 團隊store.support@smilegate.com)申請遊戲使用券。

Basic Integration

StovePCSDK_JS_2.6.6.zip
2818.9KB
// main.js const StovePCSDK = require("./StovePCSDK"); const config = { // 環境值,固定為 "Live" env: "Live", // 請填入商品的 Game ID gameId: "", // 請填入商品的 Application Key appKey: "", // 請填入商品的 Application Secret secretKey: "", // 測試時使用 STOVE_PC_LOG_LEVEL_DEBUG,上線時使用 STOVE_PC_LOG_LEVEL_ERROR logLevel: StovePCSDK.StovePCLogLevel.STOVE_PC_LOG_LEVEL_DEBUG, // Log 輸出路徑,無特別需求請保持為 "" logPath: "", }; const callback = { onError: (error) => { console.log(error); switch (error.functionType) { case StovePCSDK.StovePCFunctionType.STOVE_PC_INIT: case StovePCSDK.StovePCFunctionType.STOVE_PC_GET_USER: case StovePCSDK.StovePCFunctionType.STOVE_PC_GET_OWNERSHIP: app.quit(); break; } }, onInitComplete: () => { // 初始化成功後,請求使用者資訊 StovePCSDK.getUser(); }, onToken: (token) => {}, onUser: (user) => { // 取得使用者資訊後,請求遊戲擁有權 StovePCSDK.getOwnership(); }, onOwnership: (ownerships) => { ownerships.forEach((ownership) => { // 若無遊戲擁有權則結束應用程式 if (ownership.gameId === config.gameId && ownership.ownershipCode !== 1) { app.quit(); } // DLC 啟用示例 if ( ownership.gameId === config.gameId && ownership.gameCode === 5 && ownership.ownershipCode === 1 ) { // Activate DLC } }); }, onStat: (stat) => {}, onSetStat: (statValue) => {}, onAchievement: (achievement) => {}, onAllAchievement: (achievements) => {}, }; let handlerId = -1; app.whenReady().then(() => { const initResult = StovePCSDK.init(config, callback); if (initResult !== StovePCSDK.StovePCResult.STOVE_PC_NO_ERROR) { app.quit(); } // 處理 callback 循環 handlerId = setInterval(() => { StovePCSDK.runCallback(); }, 1000); ipcMain.on("unlock-achievement", handleUnlockAchievement); }); app.on("window-all-closed", () => { clearInterval(handlerId); StovePCSDK.uninit(); app.quit(); }); // 解鎖成就 function handleUnlockAchievement(statId) { StovePCSDK.unlockAchievement(statId); }
JavaScript
복사
// preload.js const { contextBridge, ipcRenderer } = require("electron"); contextBridge.exposeInMainWorld("electronAPI", { unlockAchievement: (statId) => ipcRenderer.send("unlock-achievement", statId), });
JavaScript
복사