사전 준비

Basic Integration

StovePCSDK_JS_2.6.6.zip

// 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();
      }
      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();
  }

  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);
}

// preload.js
const { contextBridge, ipcRenderer } = require("electron");

contextBridge.exposeInMainWorld("electronAPI", {
  unlockAchievement: (statId) => ipcRenderer.send("unlock-achievement", statId),
});