Games I Know logoGames I Know
Embed 게임선적 서류 비치

Embed API 문서

embed을 직접 연주해 보고 익힌 다음, 이벤트를 연결하세요.

먼저 라이브 데모를 시청하고 상위 페이지 이벤트를 확인한 다음, iframe 및 리스너 패턴을 복사하여 사이트에 붙여넣으세요. 모든 Games I Know 및 iframe 게임에 동일한 절차가 적용됩니다.

embed 키를 가져오세요
1. 먼저 배우세요

실시간 데모: 이벤트를 재생하고 확인해 보세요.

Tic Tac Toe 또는 iframe에서 움직임을 취하세요. 이벤트 로그에는 GAME_STARTED, 게임 플레이 이벤트 및 완료 페이로드가 상위 페이지에서 수신하는 그대로 표시됩니다.

플랫폼 전반의 이벤트 계약

Games I Know은 플랫폼의 모든 게임(현재는 Tic Tac Toe, Four in a Row, Bingo, I Know 포함)과 향후 추가될 모든 새로운 embed 관련 게임에 대해 embed 이벤트를 전송합니다. 게임 타이틀별로 별도의 통합이 필요하지 않습니다. 표준 계약(ready, GAME_STARTED, 게임 플레이 이벤트, 승자 데이터가 포함된 완료, 서명된 결과)에 대한 하나의 상위 페이지 리스너를 구축하고 현재 및 향후 추가될 모든 embed 게임에서 재사용하세요.

2. 빠른 시작

제로에서 작업까지 embed

웹사이트에서 게임이 표시될 위치를 이미 알고 있는 경우 이 경로를 사용하세요.

  1. 1

    파트너 계정을 만드세요

    iframe을 호스팅할 웹사이트 도메인을 추가하세요.

    다음 단계로 이동
  2. 2

    프레임 경로를 설치하세요

    테넌트 ID와 함께 /embed/{gameSlug}/frame/을 사용하세요. SEO 랜딩 페이지에 iframe을 사용하지 마세요.

    다음 단계로 이동
  3. 3

    학부모 메시지를 들어보세요

    data.source === "gamesiknow"로 필터링한 다음 GAME_STARTED, GAME_COMPLETED 및 버전 1 게임플레이 이벤트를 처리합니다.

    다음 단계로 이동
  4. 4

    완료된 결과를 확인하세요

    크레딧, 보상 또는 잠금 해제를 부여하기 전에 resultId와 signedToken을 백엔드로 전송하세요.

    다음 단계로 이동
스타터 iframe

파트너 대시보드에서 실제 테넌트 ID를 사용하세요.

html
<iframe
  src="https://gamesiknow.com/embed/tic-tac-toe/frame/?tenantId=YOUR_TENANT_ID"
  title="Tic Tac Toe by Games I Know"
  width="100%"
  height="640"
  style="border:0;border-radius:16px;max-width:420px;display:block;margin:0 auto;"
  loading="lazy"
  allow="fullscreen"
  referrerpolicy="no-referrer-when-downgrade"
  allowfullscreen
></iframe>
3. 건축

embed의 작동 방식

Games I Know embed은 도메인의 샌드박스 환경인 iframe입니다. API을 기준으로 테넌트와 도메인의 유효성을 검사한 후, window.postMessage를 통해 상위 페이지와 통신합니다.

단계 1

상위 페이지가 iframe을 로드합니다.

귀하의 사이트는 tenantId와 선택적 mode 또는 campaignId 쿼리 매개변수를 사용하여 /embed/{gameSlug}/frame/을 가리키는 iframe을 렌더링합니다.

단계 2

Embed은 테넌트와 도메인을 검증합니다.

iframe는 GET /embed/config (또는 /api/embed/config)를 호출합니다. Games I Know는 파트너 계정, 허용된 도메인, 게임 액세스 권한 및 AI 할당량을 확인합니다. 서버 측에서 embed_ 로드된 분석 이벤트가 기록됩니다.

단계 3

Embed이 준비됩니다

iframe은 부모 페이지에 준비 이벤트를 게시하므로 페이로드.embedHeight를 사용하여 로딩 상태를 표시하거나 프레임 크기를 조정할 수 있습니다.

단계 4

플레이어가 경기를 시작합니다

게임 플레이가 시작되면 모든 embeddable 게임은 상위 페이지에 GAME_STARTED를 게시하고 서버 측에 game_started를 자동으로 기록합니다. 웹사이트에서 분석 도구 API을 호출하지 마십시오.

단계 5

게임플레이 이벤트 스트림

경기 중에는 이동 및 모드 변경과 같은 버전 1 게임플레이 이벤트가 UI 또는 내부 분석 정보를 업데이트합니다.

단계 6

경기가 종료되었으며 승자 정보가 제공됩니다.

모든 embed 게임은 완료되면 결과, 승자, 플레이어 정보를 GAME_COMPLETED에 담아 상위 서버로 전송하므로 웹페이지에서 결과를 즉시 표시할 수 있습니다. iframe 게임은 POST /embed/results를 통해 결과에 서명을 전송하고, 서명이 성공하면 resultId와 signedToken을 GAME_COMPLETED에 포함합니다. 백엔드에서는 파트너 서버 키를 사용하여 해당 토큰을 검증한 후 보상을 지급할 수 있습니다.

두 가지 postMessage 형식

라이프사이클 이벤트 평평한 물체를 사용하여 event: "GAME_STARTED" or event: "GAME_COMPLETED". 게임플레이 이벤트 데이터를 래핑합니다 version: 1 중첩된 payload. 항상 필터 기능을 켜세요 data.source === "gamesiknow".

4. 설치

파트너 설정 및 iframe 코드 조각

대부분의 통합은 네 가지 결정으로 이루어집니다. 도메인 등록, 토큰 생성, iframe 설치, 그리고 시작 및 완료 이벤트 수신입니다.

각 웹사이트를 등록하세요

Games I Know 및 embed을 호스팅할 모든 도메인을 추가하세요. 도메인은 정규화되어 example.com과 www.example.com이 일관되게 처리됩니다.

도메인 토큰 생성

각 웹사이트마다 별도의 embed 토큰을 생성하세요. 이렇게 하면 분석 데이터가 깔끔하게 유지되고 향후 도메인 기반 가격 책정을 위한 계정 준비가 완료됩니다.

iframe을 설치하세요

iframe 또는 반응형 래퍼를 CMS 사용자 지정 HTML 블록, 웹사이트 빌더 embed 영역 또는 사용자 지정 프런트엔드 템플릿에 복사하세요.

이벤트 발생을 청취하고 결과를 확인하십시오.

상위 페이지에서 GAME_STARTED 및 GAME_COMPLETED postMessage 이벤트를 처리하여 경기 상태와 승자 정보를 표시하세요. 보상을 지급하기 전에 백엔드에서 서명된 결과를 파트너 서버 키로 확인하세요.

권장 설정 iframe

너비

embed이 사용 가능한 콘텐츠 열을 채우도록 100%를 사용하십시오.

대부분의 게임에서는 640px가 적합합니다. Tic Tac Toe도 600px에서 작동합니다. 자동 크기 조정을 위해 준비 이벤트의 payload.embedHeight를 사용하세요.

계략

/embed/tic-tac-toe/frame/, /embed/four-in-a-row/frame/, /embed/bingo/frame/, 또는 /embed/i-know/frame/을 사용하세요.

방법

플레이어 선택 모드를 생략하거나, embed이 먼저 AI을 요청하도록 하려면 mode=ai를 전달하세요.

일반 iframe

플레이어는 AI 할당량이 있을 경우 게임 내에서 경기 유형을 선택합니다.

html
<iframe
  src="https://gamesiknow.com/embed/tic-tac-toe/frame/?tenantId=TENANT_ID"
  width="100%"
  height="640"
  style="border:0;border-radius:16px;max-width:420px;display:block;margin:0 auto;"
  allow="fullscreen"
  loading="lazy"
  title="Tic Tac Toe by Games I Know"
></iframe>
강제 AI iframe

먼저 AI을 요청합니다. 할당량이 소진되면 PvP으로 조용히 전환됩니다.

html
<iframe
  src="https://gamesiknow.com/embed/tic-tac-toe/frame/?tenantId=TENANT_ID&mode=ai&campaignId=homepage-widget"
  width="100%"
  height="640"
  style="border:0;border-radius:16px;max-width:420px;display:block;margin:0 auto;"
  allow="fullscreen"
  loading="lazy"
  title="Tic Tac Toe vs AI by Games I Know"
></iframe>
5. 구성

iframe URL 매개변수

프레임 URL은 /embed/{gameSlug}/frame/을 사용합니다. 게임플레이가 없는 SEO 랜딩 페이지는 /embed/{gameSlug}/에 게시되어 있습니다.

매개변수필수의설명
세입자 IDGames I Know 파트너 대시보드에서 가져온 파트너 테넌트 ID입니다. 기존 통합의 경우 partnerId로도 사용할 수 있습니다.
방법아니요AI로 설정하여 강제로 AI 모드를 요청합니다. 서버 측 할당량 및 도메인 규칙은 여전히 적용됩니다. AI을 사용할 수 없는 경우 플레이어 대 플레이어 모드로 전환됩니다.
캠페인ID아니요선택 사항인 캠페인 라벨은 postMessage 이벤트에 반영되고 A/B 테스트 또는 페이지 수준 세분화를 위해 파트너 분석에 저장됩니다.
6. 행사

postMessage 이벤트 참조

동일한 계약이 Tic Tac Toe, Four in a Row, Bingo, I Know 및 향후 embed 릴리스에 적용됩니다.

규칙 1

필터 소스

data.source가 gamesiknow가 아닌 경우 메시지를 무시하세요.

규칙 2

핸들 라이프사이클

경기 상태, 승자 이름 및 결과는 GAME_STARTED 및 GAME_COMPLETED를 사용하십시오.

규칙 3

보상을 받으려면 인증하세요.

보상을 지급하기 전에 resultId와 signedToken을 백엔드로 전달하세요.

라이프사이클 이벤트

이벤트발사될 때체재주요 필드
준비가 된Embed이 초기화되고 구성이 로드되었습니다.모든 게임에 대해 게임플레이(버전 1)를 제공하거나, 일부 라이프사이클 래퍼의 경우 평면 버전을 제공합니다.matchId, 모드, embed높이
게임 시작됨모든 embeddable 게임(현재 및 향후). 경기가 시작될 때(예: 첫 번째 수 또는 AI 라운드 시작 시) 실행됩니다.평면 수명주기game, PartnerId, CampaignId, mode, matchId(게임플레이 스트림을 통해 암시적)
게임 완료경기 종료 시 모든 embeddable 게임 정보를 포함합니다. 결과, 승자, 승자 플레이어 이름, 플레이어 수를 포함하여 상위 페이지에서 결과를 즉시 표시할 수 있도록 합니다. 서버 측 서명이 성공한 경우 resultId와 signedToken도 포함합니다.평면 수명주기결과, 우승자, 우승자 선수 이름, 우승자 선수 ID, 참가 선수 수, 점수, 소요 시간(초), 결과 ID, 서명된 토큰
전체 화면 삽입 변경플레이어는 전체 화면 모드를 전환합니다.평면 수명주기페이로드.활성 부울

게임플레이 이벤트

모양: { source, game, version: 1, event, payload }

  • 준비가 된 - 버전 1 봉투와 동일한 라이프사이클 준비 상태입니다.
  • 모드 변경 - 플레이어는 PvP, AI을 선택하거나 모드 선택 화면으로 돌아갑니다.
  • 이동하다 - 움직임이나 동작이 발생했습니다 (보드 칸 이동, 디스크 떨어뜨리기, 빙고 호출, 퀴즈 정답).
  • 다시 놓기 - 보드 또는 라운드가 재설정됩니다.
  • 끄르다 - 마지막 동작 취소됨(Tic Tac Toe만 해당).
  • 상태 - 부모 get_state 명령(Tic Tac Toe, Four in a Row)에 대한 응답입니다.

모든 embeddable 게임 게시물 GAME_COMPLETED 부모에게 outcome, winner, 그리고 players 경기가 종료되었을 때. 계약이 성공적으로 체결되었을 때. GAME_COMPLETED 또한 다음을 포함합니다 resultId 그리고 signedToken 백엔드 검증을 위해.

게임 시작 예시
json
{
  "source": "gamesiknow",
  "event": "GAME_STARTED",
  "game": "tic-tac-toe",
  "partnerId": "partner_your_tenant",
  "campaignId": "homepage-widget",
  "mode": "ai"
}
게임 완료 예시
json
{
  "source": "gamesiknow",
  "event": "GAME_COMPLETED",
  "game": "tic-tac-toe",
  "resultId": "res_abc123xyz",
  "partnerId": "partner_your_tenant",
  "campaignId": "homepage-widget",
  "status": "completed",
  "outcome": "player_1",
  "score": 100,
  "durationSeconds": 24,
  "winnerPlayerId": "player_1",
  "winnerPlayerName": "Player X",
  "winner": {
    "playerId": "player_1",
    "participant": "player_1",
    "type": "human",
    "label": "Player 1",
    "name": "Player X",
    "score": 100
  },
  "players": [
    {
      "playerId": "player_1",
      "participant": "player_1",
      "type": "human",
      "label": "Player 1",
      "name": "Player X",
      "score": 100,
      "status": "winner"
    },
    {
      "playerId": "player_2",
      "participant": "ai_bot",
      "type": "ai",
      "label": "AI BOT",
      "name": "AI Bot",
      "score": 60,
      "status": "lost"
    }
  ],
  "signedToken": "eyJ..."
}

결과값

플레이어_1

첫 번째 인간 플레이어가 승리했습니다.

플레이어_2

두 번째 인간 플레이어가 승리했습니다.

ai_bot

AI 상대방이 승리했습니다.

그리다

승자 없음.

부모-iframe 명령

Tic Tac Toe 및 Four in a Row에서만 지원됩니다. 게임 슬러그와 액션을 사용하여 iframe 콘텐츠 창을 대상으로 지정하십시오.

상태 재설정 또는 요청
js
// Parent page -> iframe (Tic Tac Toe or Four in a Row)
const iframe = document.querySelector("iframe");
iframe.contentWindow.postMessage(
  { game: "tic-tac-toe", action: "reset" },
  "https://gamesiknow.com"
);

iframe.contentWindow.postMessage(
  { game: "tic-tac-toe", action: "get_state" },
  "https://gamesiknow.com"
);
7. 실행

샘플 통합 리스너

이 리스너를 iframe이 호스팅되는 페이지에 복사하세요. 이 리스너는 준비 상태, 게임 시작, 게임 플레이 이벤트, 서명된 완료 및 전체 화면 변경을 처리합니다.

통합 부모 페이지 리스너

출처별로 필터링하고, 경기 중 승자 UI 및 게임플레이 이벤트에 대해 GAME_STARTED 및 GAME_COMPLETED를 처리합니다.

js
/**
 * Games I Know embed listener (parent page)
 * Handles lifecycle events (GAME_STARTED, GAME_COMPLETED) and
 * version 1 gameplay events (move, mode_change, ...).
 */
const TRUSTED_ORIGIN = "https://gamesiknow.com"; // or your self-hosted origin

window.addEventListener("message", (event) => {
  if (TRUSTED_ORIGIN !== "*" && event.origin !== TRUSTED_ORIGIN) return;

  const data = event.data;
  if (!data || data.source !== "gamesiknow") return;

  // --- Lifecycle events (flat top-level event name) ---
  if (data.event === "GAME_STARTED") {
    console.log("Match started", {
      game: data.game,
      mode: data.mode,
      partnerId: data.partnerId,
      campaignId: data.campaignId,
    });
    return;
  }

  if (data.event === "GAME_COMPLETED") {
    const winnerLabel = data.winner?.name ?? data.winnerPlayerName ?? null;
    console.log("Match completed", {
      game: data.game,
      outcome: data.outcome, // player_1 | player_2 | ai_bot | draw
      winner: data.winner,
      winnerName: winnerLabel,
      players: data.players,
    });

    if (winnerLabel) {
      document.getElementById("game-winner")!.textContent = `${winnerLabel} won!`;
    } else if (data.outcome === "draw") {
      document.getElementById("game-winner")!.textContent = "Draw";
    }

    // For rewards: send resultId + signedToken to YOUR backend (never call verify from the browser)
    if (data.resultId && data.signedToken) {
      fetch("/api/reward-winner", {
        method: "POST",
        headers: { "content-type": "application/json" },
        body: JSON.stringify({
          resultId: data.resultId,
          signedToken: data.signedToken,
          userId: currentUserId,
        }),
      });
    }
    return;
  }

  if (data.event === "EMBED_FULLSCREEN_CHANGE") {
    document.body.classList.toggle("embed-fullscreen-active", Boolean(data.payload?.active));
    return;
  }

  // --- Gameplay events (version 1 envelope) ---
  if (data.version === 1 && typeof data.event === "string") {
    switch (data.event) {
      case "ready":
        resizeEmbed(data.payload?.embedHeight);
        break;
      case "mode_change":
        console.log("Mode changed", data.payload?.mode);
        break;
      case "move":
        console.log("Move", data.payload);
        break;
      default:
        console.log("Gameplay event", data.event, data.payload);
    }
  }
});

function resizeEmbed(height) {
  const iframe = document.querySelector('iframe[src*="/embed/"]');
  if (iframe && typeof height === "number") iframe.style.height = `${height}px`;
}

통합 체크리스트

  • GAME_STARTED 페이지에 게임 진행 중 배너를 표시합니다.
  • GAME_COMPLETED.winner 또는 GAME_COMPLETED.winnerPlayerName에서 승자 이름을 표시합니다.
  • resultId와 signedToken을 백엔드로 전달하고, 파트너 서버 키로 확인한 후 보상을 지급하세요.
  • 선택적으로 event.origin을 Games I Know 호스트와 비교하여 유효성을 검사할 수 있습니다.
8. 보안

검증된 게임 결과 API

승자를 표시하려면 상위 페이지에 GAME_COMPLETED를 사용하세요. 보상 지급을 위해서는 백엔드에서 파트너 서버 키를 사용하여 서명된 결과를 확인하세요. 브라우저에서 verify JavaScript을 호출하지 마세요.

서명된 결과를 확인하십시오

서버 측 전용입니다. GAME_COMPLETED에서 resultId와 signedToken을 사용하여 Authorization: Bearer gik_psk_… 형식으로 인증하세요.

http
POST https://api.gamesiknow.com/embed/results/verify
Authorization: Bearer gik_psk_your_secret_key
Content-Type: application/json

{
  "resultId": "res_abc123xyz",
  "signedToken": "signed_token_from_game_completed"
}

Call from your backend server only. The partner server key must belong to the same tenant as the signed result. Browser requests are rejected.
성공적인 확인 응답
json
{
  "ok": true,
  "resultId": "res_abc123xyz",
  "partnerId": "partner_your_tenant",
  "gameSlug": "tic-tac-toe",
  "outcome": "player_1",
  "score": 100,
  "durationSeconds": 24
}
예시 백엔드 보상 처리기

백엔드는 상위 페이지에서 토큰을 수신하고, Games I Know으로 검증한 후 보상을 지급합니다.

js
// Example: Node.js / Express handler on YOUR server
app.post("/api/reward-winner", async (req, res) => {
  const { resultId, signedToken, userId } = req.body;

  const verify = await fetch("https://api.gamesiknow.com/embed/results/verify", {
    method: "POST",
    headers: {
      "content-type": "application/json",
      authorization: `Bearer ${process.env.GAMESIKNOW_PARTNER_SERVER_KEY}`,
    },
    body: JSON.stringify({ resultId, signedToken }),
  });

  if (!verify.ok) return res.status(403).json({ error: "Invalid result" });

  const result = await verify.json();
  if (result.outcome !== "player_1") {
    return res.status(400).json({ error: "Player did not win" });
  }

  await grantReward(userId, result);
  return res.json({ ok: true });
});
9. 분석

서버 측 분석 이벤트

Games I Know은 iframe이 로드되고 플레이어가 상호 작용할 때 이러한 이벤트를 자동으로 기록합니다. 이러한 이벤트는 파트너 대시보드에 표시됩니다. 동일한 데이터를 자체 데이터베이스로 가져오려면 설치 페이지에서 파트너 서버 키를 생성하고 백엔드 서버에서만 GET /partners/analytics를 호출하십시오.

  • embed_로드됨 - 설정이 유효성 검사를 통과하거나 iframe 실행이 허용되면 모든 embeddable 게임이 실행됩니다.
  • 게임 시작됨 - 게임 플레이가 시작될 때 모든 embeddable 게임이 기록됩니다(iframe에 의해 자동으로 기록됨).
  • 게임 완료 - POST /embed/results가 성공하면 모든 embeddable 게임이 실행됩니다.
  • AI 매치 시작됨 - POST /embed/ai-matches/start를 통해 AI 할당량이 소모되었습니다.
  • embed_차단됨 - 도메인, 파트너 또는 게임 액세스가 거부되었습니다.
분석 데이터를 백엔드로 내보내세요(파트너 서버 키 필요).

파트너 대시보드 → 설치에서 파트너 서버 키를 생성하세요. 생성된 키를 서버 비밀로 저장합니다. 아래 쿼리 매개변수를 사용하여 내보내기를 필터링하세요.

http
GET https://api.gamesiknow.com/partners/analytics
인증: Bearer gik_psk_your_secret_key

선택적 쿼리 매개변수:
domain 등록된 웹사이트 호스트 이름(예: example.com)
campaignId iframe의 campaignId 매개변수 값
gameSlug tic-tac-toe | four-in-a-row | bingo | i-know
from 시작 날짜(UTC, YYYY-MM-DD)

to 종료 날짜(UTC, YYYY-MM-DD)

예시:

/partners/analytics?domain=www.example.com&gameSlug=tic-tac-toe&from=2026-05-01&to=2026-05-31

백엔드 서버에서만 호출하십시오. 파트너 서버 키를 브라우저에 JavaScript 노출하지 마십시오.
10. 카탈로그

게임 기능 매트릭스

모든 embeddable 게임은 동일한 핵심 이벤트를 전송합니다. 아래에서 각 게임별 타이밍 및 추가 기능을 비교하세요.

게임게임 시작됨완료 신호서명함강제 AIHeight부모 명령
Tic Tac Toe첫 번째 움직임 또는 AI 시작게임 완료640px리셋, 상태 가져오기
Four in a Row첫 번째 움직임 또는 AI 시작게임 완료640px리셋, 상태 가져오기
Bingo경기 시작(AI 또는 PvP)게임 완료640px아직 없음
I Know경기 시작(AI 또는 PvP)게임 완료640px아직 없음
11. 가이드

플랫폼 및 사용 사례 설정 가이드

이 페이지는 기술 참조 자료입니다. 플랫폼별 설치 단계 또는 수직 배치 관련 조언이 필요할 때 이 가이드를 활용하세요. 모든 가이드는 위에 설명된 것과 동일한 iframe 및 이벤트 모델을 사용합니다.

Developer frameworks

Framework-specific iframe placement, event listeners, and production notes.

Website builders and CMS

Copy-paste embed guides for no-code and low-code site builders.

Use-case guides

Placement and UX recommendations for common website types.

iframe 게임, HTML5 위젯 또는 무료 embeddable 게임과 같은 일반 개요 페이지를 찾고 계신가요? 모두 살펴보세요. embed 허브의 가이드.

12. 지원

자주 묻는 질문

통합 세부 정보, 현재 게임 지원, 명령어, 서명된 결과 및 향후 게임 호환성에 대한 답변입니다.

WordPress, Webflow, Wix, Squarespace 또는 사용자 지정 웹사이트에서 게임을 만들 수 있나요?

네. Games I Know 및 embed은 표준 iframe HTML을 사용하므로 WordPress 사용자 지정 HTML 블록, Webflow embed 요소, Wix 및 Squarespace 사용자 지정 코드 영역, 정적 HTML, React, Next.js 및 기타 사용자 지정 사이트에서 작동합니다. 먼저 파트너 대시보드에서 웹사이트 도메인을 등록한 다음 생성된 프레임 스니펫을 게임이 표시될 페이지에 붙여넣으세요.

/embed/{gameSlug}/과 /embed/{gameSlug}/frame/의 차이점은 무엇입니까?

/embed/{gameSlug}/는 게임 embed의 공개 랜딩 페이지입니다. /embed/{gameSlug}/frame/은 웹사이트에 붙여넣어야 할 iframe 런타임입니다. iframe 코드에서는 항상 /frame/ URL을 사용해야 합니다. 이 URL은 플레이 가능한 게임을 로드하고, 테넌트와 도메인의 유효성을 검사하며, 상위 페이지 이벤트를 전송합니다.

Games I Know iframe 게임이 모바일과 데스크톱에서 작동하나요?

네. Games I Know 및 iframe 게임은 모바일, 태블릿, 노트북 및 데스크톱 브라우저에 최적화되어 있습니다. 대부분의 embed에는 width="100%"를 사용하고 높이는 약 640px로 설정하는 것이 좋습니다. 또한, 부모 페이지에서 iframe의 크기를 자동으로 조정하도록 하려면 ready 이벤트를 수신하고 payload.embedHeight를 사용할 수 있습니다.

embed Games I Know 게임을 하는 데 비용이 얼마나 드나요?

Games I Know, iframe, embed은 embed 베타 기간 동안 무료로 제공됩니다. 시작하는 데 신용 카드 정보가 필요하지 않으며, 현재 베타 버전 embed에는 광고가 포함되어 있지 않습니다. 무료 파트너 계정을 만들고 도메인을 등록한 후 대시보드에서 iframe 스니펫을 생성하세요.

파트너 계정이나 embed 키가 필요한가요?

예. 파트너 계정은 테넌트 ID와 도메인 제한이 있는 iframe 스니펫을 제공합니다. iframe은 프레임 URL과 함께 테넌트 ID를 전송하여 Games I Know이 파트너, 허용된 도메인, 게임 액세스, AI 할당량, 분석 캠페인 및 결과 검증 흐름을 확인할 수 있도록 합니다.

누군가 제 iframe 코드를 복사해서 다른 웹사이트에서 사용할 수 있을까요?

embed은 도메인 제한이 있습니다. 누군가 iframe 스니펫을 무단 웹사이트에 복사하면 Games I Know이 요청 출처를 파트너 계정에 구성된 도메인과 비교하여 승인되지 않은 사용을 차단합니다. 웹사이트 또는 캠페인별로 더 깔끔한 분석을 원할 경우 별도의 캠페인 ID를 사용하세요.

어떤 Games I Know 게임을 embed할 수 있나요?

현재 Tic Tac Toe, Four in a Row, Bingo, I Know은 iframe 및 embed를 지원합니다. 각 게임은 준비 상태, 게임 시작, 게임 플레이, 완료, 승자 데이터, 분석 및 결과 검증을 위한 표준 embed 이벤트 계약을 전송합니다. 새로운 embed 지원 게임도 동일한 이벤트 패턴을 따를 것으로 예상되므로 파트너는 통합을 다시 구축할 필요가 없습니다.

Games I Know은 어떤 postMessage 이벤트를 상위 페이지로 전송합니까?

모든 embeddable 게임은 두 가지 postMessage 형식을 사용합니다. 라이프사이클 이벤트는 source: gamesiknow와 ready, GAME_STARTED, GAME_COMPLETED, EMBED_FULLSCREEN_CHANGE와 같은 이벤트 값을 가진 평면 형태를 사용합니다. 게임플레이 이벤트는 버전 1을 사용하며 ready, mode_change, move, reset, undo, state와 같은 중첩된 이벤트 이름을 가집니다. 항상 data.source === "gamesiknow"로 필터링하십시오.

embed으로 정의된 게임의 시작, 완료, 승자 및 플레이어 결과를 추적할 수 있습니까?

네. 경기가 시작되면 GAME_STARTED 이벤트를 수신하고, 경기 중에는 이동 및 모드 변경과 같은 게임플레이 이벤트를 활용하며, 경기가 종료되면 GAME_COMPLETED 이벤트를 수신합니다. GAME_COMPLETED 이벤트에는 결과, 승자, 참가 선수, 점수, 경기 시간, 그리고 서명이 가능한 경우 결과 식별자가 포함됩니다. 서버 측 분석 기능은 또한 로드, 시작, 완료, 차단된 시도 및 CTA 클릭 횟수를 기록합니다.

모든 게임에 어떤 완료 이벤트를 사용해야 할까요?

경기가 종료되면 GAME_COMPLETED 이벤트를 사용하세요. 모든 embeddable 게임은 결과, 승자, 승자 플레이어 이름, 플레이어 수를 포함하는 이 라이프사이클 이벤트를 전송합니다. GAME_COMPLETED 이벤트에 resultId와 signedToken이 포함된 경우, 해당 정보를 백엔드로 전달하고 파트너 서버 키를 사용하여 POST /embed/results/verify를 호출한 후 보상이나 크레딧을 지급하세요.

내 웹사이트에서 iframe로부터 embed 이벤트를 수신하려면 어떻게 해야 하나요?

iframe을 호스팅하는 페이지에 `window.addEventListener("message", handler)`를 추가합니다. 핸들러에서는 `event.data.source === "gamesiknow"`인 경우를 제외하고는 메시지를 무시합니다. 라이프사이클 이벤트의 경우 `event.data.event`를 기준으로 분기하고, 게임플레이 이벤트의 경우 `event.data.event`와 `event.data.version`이 모두 1인 경우를 기준으로 분기합니다. 선택적으로 `event.origin`을 허용된 `Games I Know` 출처와 비교하여 유효성을 검사할 수 있습니다.

게임 크레딧, 상품 또는 잠금 해제를 지급하기 전에 게임 결과를 어떻게 확인할 수 있나요?

상위 페이지에서 GAME_COMPLETED를 사용하여 승자를 즉시 표시하세요(결과, 승자, 승자 플레이어 이름, 플레이어). 보상을 지급하려면 GAME_COMPLETED에서 resultId와 signedToken을 백엔드로 전송한 다음, 대시보드에서 파트너 서버 키를 사용하여 Authorization: Bearer gik_psk_… 형식으로 POST /embed/results/verify를 호출하세요. verify 엔드포인트는 서버 측에서만 작동하며, 브라우저에서 JavaScript로 호출해서는 안 됩니다. 검증이 완료된 후에만 보상을 지급하세요.

Games I Know은 어떤 iframe URL 매개변수를 지원합니까?

필수: tenantId(파트너 테넌트 ID). 선택 사항: mode=ai는 할당량에 따라 AI 모드를 강제로 요청하는 데 사용되며, campaignId는 분석을 세분화하는 데 사용됩니다. 프레임 URL은 /embed/{gameSlug}/frame/?tenantId=YOUR_TENANT_ID 형식을 따릅니다.

embed으로 설정된 게임을 AI 모드로 강제로 시작할 수 있나요?

네. iframe URL에 mode=ai를 추가하면 AI 모드를 먼저 요청하게 됩니다. 서버 측 할당량 및 도메인 규칙은 여전히 적용되므로, AI 모드를 사용할 수 없거나 할당량이 소진된 경우 embed은 플레이어 선택 또는 플레이어 대 플레이어 모드로 전환됩니다.

Games I Know iframe에 명령어를 보낼 수 있나요?

Tic Tac Toe 및 Four in a Row은 게임 슬러그로 게임을 설정하고 액션을 reset 또는 get_state로 설정한 부모 메시지를 수락합니다. iframe은 게임 플레이 상태 이벤트로 응답합니다. 다른 embed 게임들은 아직 부모 명령을 노출하지 않습니다.

생산 체크리스트

토큰을 생성하기 전에 웹사이트 도메인이 활성화되어 있는지 확인하십시오.

웹사이트 또는 캠페인 그룹마다 별도의 토큰이나 캠페인 ID를 사용하십시오.

상위 페이지에서 GAME_STARTED 및 GAME_COMPLETED 이벤트를 수신합니다.

embed 내부에 Games I Know 브랜딩이 보이도록 유지하십시오.

상금이나 크레딧을 지급하기 전에 백엔드에서 서명된 결과를 확인하십시오.

테스트는 AI 모드를 강제로 사용하고, AI 할당량이 소진되면 PvP 모드로 대체합니다.

파트너 연동에 도움이 필요하신가요?

웹사이트 주소, CMS, 그리고 원하는 게임 배치 위치를 알려주세요. 이벤트 배선 설정을 함께 검토해 드리겠습니다.

고객 지원팀에 문의하세요.