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 отправляет события embed для каждой игры на платформе: Tic Tac Toe, Four in a Row, Bingo и I Know сегодня, а также для каждой новой игры, доступной для embed, которую мы добавим в будущем. Вам не нужна отдельная интеграция для каждой игры. Создайте один обработчик событий для родительской страницы на основе стандартного контракта (готовность, GAME_STARTED, события игрового процесса, завершение с данными о победителе и подписанные результаты) и используйте его для всех текущих и будущих игр embed.

2. Быстрый старт

От нуля до работы embed

Используйте этот путь, если вы уже знаете, где игра должна отображаться на вашем сайте.

  1. 1

    Создайте партнерский аккаунт

    Добавьте домен веб-сайта, на котором будет размещен iframe.

    Перейти к шагу
  2. 2

    Установите маршрут прокладки рамы.

    Используйте /embed/{gameSlug}/frame/ с вашим tenantId. Не используйте iframe для SEO-целевой страницы.

    Перейти к шагу
  3. 3

    Прислушайтесь к сообщениям родителей.

    Отфильтруйте данные по параметру data.source === "gamesiknow", затем обработайте события GAME_STARTED, GAME_COMPLETED и version 1.

    Перейти к шагу
  4. 4

    Проверьте завершенные результаты

    Перед предоставлением кредитов, наград или разблокировок отправьте resultId и signedToken на свой бэкэнд.

    Перейти к шагу
Стартовый iframe

Используйте свой реальный идентификатор арендатора (tenantId) из партнерской панели управления.

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

На вашем сайте отображается iframe, указывающий на /embed/{gameSlug}/frame/ с tenantId и необязательными параметрами запроса mode или campaignId.

Шаг 2

Embed проверяет арендатора и домен.

iframe вызывает GET /embed/config (или /api/embed/config). Games I Know проверяет вашу партнерскую учетную запись, разрешенный домен, доступ к игре и квоту AI. На стороне сервера регистрируется событие embed_loaded analytics.

Шаг 3

Embed становится готовым

Объект iframe отправляет событие готовности на родительскую страницу, что позволяет отображать состояние загрузки или изменять размер фрейма с помощью payload.embedHeight.

Шаг 4

Игрок начинает матч

Когда начинается игровой процесс, каждая игра embeddable отправляет GAME_STARTED на родительскую страницу и автоматически записывает game_started на стороне сервера. Вы не вызываете никакие аналитические инструменты API со своего веб-сайта.

Шаг 5

Трансляция игровых событий

Во время матча игровые события версии 1, такие как перемещение и смена режима, обновляют ваш пользовательский интерфейс или внутреннюю аналитику.

Шаг 6

Матч завершен, данные о победителе известны.

По завершении каждая игра embeddable отправляет родительскому элементу сообщение 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 или адаптивную обертку в пользовательский HTML-блок вашей CMS, область embed в конструкторе сайтов или пользовательский шаблон внешнего интерфейса.

Слушайте трансляцию событий и проверяйте результаты.

Обрабатывайте события postMessage GAME_STARTED и GAME_COMPLETED на родительской странице, чтобы отображать состояние матча и информацию о победителе. Перед начислением наград проверяйте подписанные результаты с помощью ключа партнерского сервера на вашем бэкэнде.

Рекомендуемые настройки iframe

Ширина

Используйте значение 100%, чтобы embed заполнил столбец доступного содержимого.

Высота

640 пикселей для большинства игр. Tic Tac Toe также работает при 600 пикселях. Используйте payload.embedHeight из событий готовности для автоматического изменения размера.

Игры

Используйте /embed/tic-tac-toe/frame/, /embed/four-in-a-row/frame/, /embed/bingo/frame/ или /embed/i-know/frame/.

Режим

Опустите параметр mode для выбора игрока или передайте mode=ai, если хотите, чтобы embed сначала запросил 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}/.

ПараметрНеобходимыйОписание
tenantIdДаИдентификатор вашего партнера из партнерской панели Games I Know. Также принимается в качестве partnerId для устаревших интеграций.
режимНетУстановите значение AI, чтобы запросить принудительный режим AI. Правила квот и доменов на стороне сервера по-прежнему применяются. При недоступности режима AI происходит переключение на режим «игрок против игрока».
campaignIdНетДополнительная метка кампании отображается в событиях 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, режим, embedHeight
GAME_STARTEDКаждая игра embeddable (текущая и будущая). Срабатывает при начале матча (например, при первом ходу или начале раунда AI).Плоский жизненный циклигра, PartnerId, CampaignId, Mode, MatchId (неявно через поток игрового процесса)
ИГРА ЗАВЕРШЕНАКаждая игра, доступная по протоколу embeddable, завершается по окончании матча. Включает результат, победителя, winnerPlayerName и игроков, чтобы родительская страница могла немедленно отобразить результаты. Также включает resultId и signedToken, если подписание на стороне сервера прошло успешно.Плоский жизненный циклрезультат, победитель, winnerPlayerName, winnerPlayerId, игроки, счет, durationSeconds, resultId, signedToken
EMBED_FULLSCREEN_CHANGEПлеер переключает режим полноэкранного режима в embed.Плоский жизненный циклpayload.active логическое значение

Игровые события

Форма: { 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 для проверки на стороне сервера.

Пример GAME_STARTED
json
{
  "source": "gamesiknow",
  "event": "GAME_STARTED",
  "game": "tic-tac-toe",
  "partnerId": "partner_your_tenant",
  "campaignId": "homepage-widget",
  "mode": "ai"
}
Пример GAME_COMPLETED
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. Укажите в качестве целевого объекта contentWindow в 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. Он обрабатывает состояние готовности, начало игры, события игрового процесса, подписанное завершение и переход в полноэкранный режим.

Единый обработчик событий родительской страницы

Фильтрация по источнику, обработка событий 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 на родительской странице, чтобы показать, кто победил. Для получения наград проверяйте подписанные результаты из вашей серверной части с помощью ключа партнерского сервера - никогда не вызывайте проверку API из браузера JavaScript.

Проверьте результат с подписью.

Только на стороне сервера. Используйте resultId и signedToken из GAME_COMPLETED с авторизацией: 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_loaded - Каждая игра, запускаемая через embeddable, проходит проверку конфигурации или разрешен запуск iframe.
  • игра_начала - Каждая игра embeddable начинается с момента начала игрового процесса (записывается автоматически iframe).
  • игра_завершена - Каждая игра embeddable, если POST /embed/results проходит успешно.
  • ai_match_started - Квота AI израсходована в ходе выполнения POST-запроса /embed/ai-matches/start.
  • embed_blocked - Доступ к домену, партнеру или игре запрещен.
Экспорт аналитики в вашу внутреннюю систему (требуется ключ партнерского сервера).

Сгенерируйте ключ партнерского сервера в разделе «Партнерская панель» → «Установить». Сохраните его как секретный ключ сервера. Используйте приведенные ниже параметры запроса для фильтрации экспорта.

http
GET https://api.gamesiknow.com/partners/analytics
Авторизация: Bearer gik_psk_your_secret_key

Необязательные параметры запроса:
domain Зарегистрированное имя хоста веб-сайта (example.com)
campaignId Значение из вашего параметра campaignId iframe
gameSlug крестики-нолики | четыре в ряд | бинго | i-know
from Дата начала в UTC (ГГГГ-ММ-ДД)
to Дата окончания в UTC (ГГГГ-ММ-ДД)

Пример:

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

Вызов только с вашего бэкэнд-сервера. Никогда не раскрывайте ключ вашего партнерского сервера в браузере JavaScript.
10. Каталог

Матрица игровых возможностей

В каждой игре embeddable отправляются одни и те же основные события. Сравните время и дополнительные данные для каждой игры ниже.

ИграGAME_STARTEDСигнал завершенияПодписьПринудительно 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 используют стандартный HTML iframe, поэтому они работают в пользовательских HTML-блоках WordPress, элементах Webflow embed, пользовательских областях кода Wix и Squarespace, статическом HTML, React, Next.js и других пользовательских сайтах. Сначала зарегистрируйте домен веб-сайта в панели управления партнера, затем вставьте сгенерированный фрагмент фрейма на страницу, где должна отображаться игра.

В чем разница между /embed/{gameSlug}/ и /embed/{gameSlug}/frame/?

/embed/{gameSlug}/ - это публичная целевая страница игры embed. /embed/{gameSlug}/frame/ - это среда выполнения iframe, которую следует вставить на ваш веб-сайт. Всегда используйте URL /frame/ в коде iframe, поскольку он загружает играбельную игру, проверяет ваш арендатор и домен, а также отправляет события родительской страницы.

Работают ли игры Games I Know iframe на мобильных устройствах и компьютерах?

Да. Игры Games I Know и iframe разработаны для мобильных устройств, планшетов, ноутбуков и настольных компьютеров. Используйте width="100%" и рекомендуемую высоту около 640 пикселей для большинства игр embed. Вы также можете отслеживать событие ready и использовать payload.embedHeight, если хотите, чтобы родительская страница автоматически изменяла размер iframe.

Сколько стоит embed Games I Know игры?

Games I Know iframe embed доступны бесплатно во время бета-тестирования embed. Для начала работы не требуется кредитная карта, и текущие бета-версии embed не содержат рекламы. Создайте бесплатный партнерский аккаунт, зарегистрируйте свой домен и сгенерируйте фрагмент iframe из панели управления.

Нужен ли мне партнерский аккаунт или ключ embed?

Да. Партнерский аккаунт предоставляет вам идентификатор арендатора и фрагмент кода iframe с ограничениями по домену. iframe отправляет tenantId вместе с URL-адресом фрейма, чтобы Games I Know мог проверить партнера, разрешенный домен, доступ к игре, квоту AI, аналитическую кампанию и процесс проверки результатов.

Может ли кто-нибудь скопировать мой код iframe и использовать его на другом веб-сайте?

embed имеет ограничения по домену. Если кто-то скопирует ваш фрагмент iframe на неавторизованный веб-сайт, Games I Know проверит источник запроса на соответствие доменам, настроенным для вашей партнерской учетной записи, и заблокирует несанкционированное использование. Используйте отдельные идентификаторы кампаний, если хотите получить более точную аналитику для каждого веб-сайта или кампании.

Какие игры Games I Know можно embedded?

Tic Tac Toe, Four in a Row, Bingo и I Know сегодня поддерживают iframe и embed. Каждая игра отправляет стандартный контракт события embed для состояния готовности, начала игры, игрового процесса, завершения, данных о победителе, аналитики и проверки результатов. Ожидается, что новые игры, поддерживающие embed, будут следовать той же схеме событий, чтобы партнерам не приходилось перестраивать свою интеграцию.

Какие события postMessage отправляет Games I Know на родительскую страницу?

Каждая игра embeddable использует два формата postMessage. События жизненного цикла используют плоскую структуру с источником: gamesiknow и значениями событий, такими как ready, GAME_STARTED, GAME_COMPLETED и EMBED_FULLSCREEN_CHANGE. События игрового процесса используют версию: 1 с вложенными именами событий, такими как ready, mode_change, move, reset, undo и state. Всегда фильтруйте по data.source === "gamesiknow".

Могу ли я отслеживать начало, завершение, победителей и результаты игроков в игре, созданной с помощью embedded?

Да. Необходимо отслеживать событие GAME_STARTED при начале матча, использовать игровые события, такие как перемещение и смена режима, во время игры, а также событие GAME_COMPLETED при завершении матча. Событие GAME_COMPLETED включает в себя идентификаторы результата, победителя, игроков, счета, продолжительности и итога, если доступна функция подписи. Аналитика на стороне сервера также записывает загрузки, начала, завершения, заблокированные попытки и клики по призывам к действию.

Какое событие завершения следует использовать для всех игр?

Используйте событие GAME_COMPLETED, когда матч заканчивается. Каждая игра, использующая протокол embeddable, отправляет это событие жизненного цикла с результатом, победителем, именем победителяPlayerName и игроками. Если GAME_COMPLETED содержит resultId и signedToken, перешлите их на свой бэкэнд и вызовите POST /embed/results/verify с ключом вашего партнерского сервера, прежде чем начислять награды или кредиты.

Как мне отслеживать события embed от iframe на моем веб-сайте?

Добавьте window.addEventListener("message", handler) на страницу, на которой размещен iframe. В обработчике игнорируйте сообщения, если event.data.source === "gamesiknow". Используйте ветвление по event.data.event для событий жизненного цикла или по event.data.event плюс event.data.version === 1 для событий игрового процесса. При желании проверьте event.origin на соответствие разрешенному источнику Games I Know.

Как проверить результаты игры перед начислением кредитов, призов или разблокировкой новых возможностей?

Используйте GAME_COMPLETED на родительской странице, чтобы сразу отобразить победителей (результат, победитель, winnerPlayerName, игроки). Для начисления наград отправьте resultId и signedToken из GAME_COMPLETED на ваш бэкэнд, затем вызовите POST /embed/results/verify с Authorization: Bearer gik_psk_… используя ключ партнерского сервера из вашей панели управления. Конечная точка проверки работает только на стороне сервера - никогда не вызывайте ее из браузера JavaScript. Начисляйте награды только после успешной проверки.

Какие параметры URL-адреса iframe поддерживает Games I Know?

Обязательный параметр: tenantId (идентификатор вашего партнера-арендатора). Необязательный параметр: mode=ai для запроса принудительного включения режима AI при наличии квоты, и campaignId для сегментации аналитики. URL-адреса фреймов: /embed/{gameSlug}/frame/?tenantId=YOUR_TENANT_ID.

Можно ли принудительно запустить игру, созданную с помощью embed, в режиме AI?

Да. Добавьте параметр mode=ai к URL-адресу iframe, чтобы сначала запросить режим AI. Правила квотирования и домена на стороне сервера по-прежнему применяются, поэтому embed может вернуться к выбору игрока или игре «игрок против игрока», когда режим AI недоступен или квота исчерпана.

Могу ли я отправлять команды в Games I Know iframe?

Tic Tac Toe и Four in a Row принимают сообщения от родительского процесса, в которых игра установлена на игровой идентификатор, а действие - на reset или get_state. iframe отвечает событием состояния игрового процесса. Другие игры embed пока не предоставляют доступ к командам родительского процесса.

Контрольный список производства

Перед генерацией токена убедитесь, что домен веб-сайта активен.

Для каждого веб-сайта или группы кампаний используйте отдельный токен или идентификатор кампании.

Отслеживайте события GAME_STARTED и GAME_COMPLETED на родительской странице.

Сохраните видимым фирменный стиль Games I Know внутри embed.

Перед присуждением призов или начислением баллов обязательно проверяйте подписанные результаты в своей системе.

В ходе тестирования принудительно включается режим AI и происходит переключение на режим PvP при исчерпании квоты AI.

Нужна помощь с интеграцией с партнёром?

Предоставьте нам ссылку на ваш сайт, CMS и желаемое место размещения игры. Мы можем проверить с вами схему подключения событий embed.

Связаться со службой поддержки