Games I Know logoGames I Know
Embed jogosDocumentação

Embed API documentos

Aprenda o embed jogando, depois conecte os eventos.

Comece com a demonstração ao vivo, observe os eventos da página principal e, em seguida, copie os padrões iframe e de ouvinte para o seu site. O mesmo fluxo funciona para todos os jogos Games I Know iframe.

Obtenha uma chave embed
1. Aprenda primeiro

Demonstração ao vivo: reproduza e inspecione os eventos.

Faça uma jogada no Tic Tac Toe iframe. O registro de eventos mostra GAME_STARTED, eventos de jogo e informações de conclusão exatamente como uma página pai os recebe.

contrato de evento para toda a plataforma

Games I Know envia eventos embed para todos os jogos na plataforma: Tic Tac Toe, Four in a Row, Bingo e I Know atualmente, e para todos os novos jogos compatíveis com embed que adicionarmos no futuro. Você não precisa de uma integração separada para cada título. Crie um ouvinte de página principal com base no contrato padrão (pronto, GAME_STARTED, eventos de jogabilidade, conclusão com dados do vencedor e resultados assinados) e reutilize-o em todos os jogos embed atuais e futuros.

2. Início rápido

Do zero ao trabalho embed

Use este caminho quando já souber onde o jogo deve aparecer no seu site.

  1. 1

    Criar uma conta de parceiro

    Adicione o domínio do site que irá hospedar o iframe.

    Vá para a etapa
  2. 2

    Instale a rota da estrutura

    Use /embed/{gameSlug}/frame/ com seu tenantId. Não use iframe na página de destino de SEO.

    Vá para a etapa
  3. 3

    Ouça as mensagens dos pais.

    Filtre por data.source === "gamesiknow" e, em seguida, trate os eventos de jogo GAME_STARTED, GAME_COMPLETED e versão 1.

    Vá para a etapa
  4. 4

    Verificar resultados concluídos

    Envie o resultId e o signedToken para o seu servidor antes de conceder créditos, recompensas ou desbloqueios.

    Vá para a etapa
Iniciante iframe

Use o seu tenantId real do painel de controle de parceiros.

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. Arquitetura

Como funciona o embed

Um Games I Know embed é um iframe isolado em seu domínio. Ele valida seu tenant e domínio em relação ao API, e então se comunica com sua página pai através de window.postMessage.

Etapa 1

A página principal carrega iframe

Seu site renderiza um iframe apontando para /embed/{gameSlug}/frame/ com tenantId e parâmetros de consulta opcionais mode ou campaignId.

Etapa 2

Embed valida o locatário e o domínio

O iframe chama GET /embed/config (ou /api/embed/config). O Games I Know verifica sua conta de parceiro, domínio permitido, acesso ao jogo e cota do AI. Um evento analítico embed_loaded é registrado no servidor.

Etapa 3

Embed fica pronto

O iframe envia um evento de pronto para a página pai para que você possa mostrar um estado de carregamento ou redimensionar o quadro usando payload.embedHeight.

Etapa 4

O jogador inicia uma partida

Quando o jogo começa, cada jogo embeddable publica GAME_STARTED na página principal e registra game_started no servidor automaticamente. Você não precisa chamar nenhum API de análise do seu site.

Etapa 5

Transmissão de eventos de jogos

Durante a partida, eventos de jogabilidade da versão 1, como movimento e mudança de modo, atualizam sua interface de usuário ou análises internas.

Etapa 6

Partida concluída com dados do vencedor

Ao término, cada jogo embeddable envia GAME_COMPLETED para o servidor pai com o resultado, o vencedor e os jogadores, para que sua página possa exibir os resultados imediatamente. O iframe também assina o resultado via POST /embed/results e inclui resultId e signedToken em GAME_COMPLETED quando a assinatura é bem-sucedida. Seu backend pode verificar esses tokens com uma chave de servidor parceira antes de conceder as recompensas.

Dois formatos de postagem de mensagem

Eventos do ciclo de vida use um objeto plano com event: "GAME_STARTED" or event: "GAME_COMPLETED". Eventos de jogabilidade encapsular dados em version: 1 com aninhamento payload. Filtrar sempre ativado data.source === "gamesiknow".

4. Instalar

Configuração de parceiros e trechos de código iframe

A maioria das integrações envolve quatro decisões: registrar o domínio, gerar um token, instalar o iframe e, em seguida, ficar à escuta de eventos de início e conclusão.

Registre cada site

Adicione todos os domínios que hospedarão um Games I Know embed. Os domínios são normalizados para que example.com e www.example.com sejam tratados de forma consistente.

Gere um token de domínio

Crie um token embed separado para cada site. Isso mantém as análises organizadas e prepara a conta para futuras precificações baseadas em domínio.

Instale o iframe

Copie o iframe ou o wrapper responsivo para o seu bloco HTML personalizado do CMS, área embed do construtor de sites ou modelo de front-end personalizado.

Fique atento aos eventos e verifique os resultados.

Gerencie os eventos postMessage GAME_STARTED e GAME_COMPLETED na sua página principal para exibir o estado da partida e os detalhes do vencedor. Verifique os resultados assinados no seu backend com uma chave de servidor parceira antes de conceder as recompensas.

Configurações recomendadas para iframe

Largura

Use 100% para que o embed preencha a coluna de conteúdo disponível.

Altura

640px para a maioria dos jogos. Tic Tac Toe também funciona com 600px. Use payload.embedHeight dos eventos ready para redimensionar automaticamente.

Jogos

Use /embed/tic-tac-toe/frame/, /embed/four-in-a-row/frame/, /embed/bingo/frame/, ou /embed/i-know/frame/.

Modo

Omita o modo para escolha do jogador ou passe mode=ai quando quiser que o embed solicite primeiro o AI.

Normal iframe

O jogador escolhe o tipo de partida dentro do jogo quando a quota AI estiver disponível.

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 forçado

Solicita primeiro o AI. Recorre silenciosamente ao PvP quando a cota estiver esgotada.

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. Configuração

Parâmetros de URL iframe

URLs de quadro usam /embed/{gameSlug}/frame/. Páginas de destino de SEO sem jogabilidade ao vivo em /embed/{gameSlug}/.

ParâmetroObrigatórioDescrição
ID do inquilinoSimSeu ID de locatário parceiro do painel de parceiros Games I Know. Também aceito como partnerId para integrações legadas.
modoNãoConfigurado para que a IA solicite o modo AI forçado. As regras de cota e domínio do servidor ainda se aplicam. Recorre ao modo jogador contra jogador quando AI não está disponível.
ID da campanhaNãoRótulo de campanha opcional repetido em eventos postMessage e armazenado nas análises do parceiro para testes A/B ou segmentação em nível de página.
6. Eventos

referência ao evento postMessage

O mesmo contrato se aplica a Tic Tac Toe, Four in a Row, Bingo, I Know e próximos lançamentos de embed.

Regra 1

Fonte de filtro

Ignore as mensagens a menos que data.source seja gamesiknow.

Regra 2

Ciclo de vida do manipulador

Use GAME_STARTED e GAME_COMPLETED para o estado da partida, nome do vencedor e resultado.

Regra 3

Verifique para obter recompensas

Antes de conceder as recompensas, encaminhe o resultId e o signedToken para o seu servidor.

Eventos do ciclo de vida

EventoQuando ele disparaFormatarCampos-chave
prepararEmbed inicializado e configuração carregada.Jogabilidade (versão 1) para todos os jogos, ou simples para alguns wrappers de ciclo de vida.matchId, modo, embedHeight
JOGO_INICIADOTodo jogo embeddable (atual e futuro). É acionado quando uma partida começa (por exemplo, primeiro lance ou início da rodada AI).Ciclo de vida planojogo, parceiroId, campanhaId, modo, matchId (implícito via fluxo de jogo)
JOGO_CONCLUÍDOCada jogo embeddable quando uma partida termina. Inclui resultado, vencedor, nome do jogador vencedor e jogadores para que a página principal possa exibir os resultados imediatamente. Também inclui resultId e signedToken quando a assinatura do lado do servidor for bem-sucedida.Ciclo de vida planoresultado, vencedor, nomeDoJogadorVencedor, IDDoJogadorVencedor, jogadores, pontuação, duraçãoEmSegundos, IDDoResultado, tokenAssinado
INCORPORAR_TELA_CHEIA_ALTERAÇÃOO jogador alterna entre os modos de tela cheia em embed.Ciclo de vida planopayload.ativo booleano

Eventos de jogabilidade

Forma: { source, game, version: 1, event, payload }

  • preparar - Igual ao ciclo de vida pronto com o envelope da versão 1.
  • mudança de modo - O jogador escolhe PvP, AI ou retorna à seleção de modo.
  • mover - Ocorreu um movimento ou ação (célula do tabuleiro, queda de disco, chamada do bingo, resposta de pergunta de curiosidades).
  • reiniciar - Reinicialização do tabuleiro ou da rodada.
  • desfazer - Última jogada desfeita (apenas Tic Tac Toe).
  • estado - Resposta ao comando get_state do pai (Tic Tac Toe, Four in a Row).

Todas as postagens de jogos embeddable GAME_COMPLETED para os pais com outcome, winner, e players Quando uma partida termina. Quando a assinatura é bem-sucedida, GAME_COMPLETED também inclui resultId e signedToken para verificação de backend.

Exemplo GAME_STARTED
json
{
  "source": "gamesiknow",
  "event": "GAME_STARTED",
  "game": "tic-tac-toe",
  "partnerId": "partner_your_tenant",
  "campaignId": "homepage-widget",
  "mode": "ai"
}
Exemplo 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..."
}

Valores de resultado

jogador_1

O primeiro jogador humano venceu.

jogador_2

O segundo jogador humano venceu.

bot de IA

O oponente AI venceu.

empate

Sem vencedor.

Comandos pai-para-iframe

Compatível apenas com Tic Tac Toe e Four in a Row. Selecione a janela de conteúdo iframe com o slug e a ação do jogo.

Redefinir ou solicitar estado
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. Implementação

Ouvinte de integração de amostra

Copie este ouvinte para a página que hospeda seu iframe. Ele lida com o estado de prontidão, início do jogo, eventos de jogabilidade, conclusão com assinatura e mudanças para tela cheia.

ouvinte de página pai unificado

Filtrar por origem, lidar com GAME_STARTED e GAME_COMPLETED para interface do usuário do vencedor e eventos de jogabilidade durante a partida.

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

Lista de verificação de integração

  • Exibir um banner de jogo em andamento em GAME_STARTED.
  • Exibir o nome do vencedor a partir de GAME_COMPLETED.winner ou GAME_COMPLETED.winnerPlayerName.
  • Encaminhe o resultId e o signedToken para o seu servidor; verifique com uma chave de servidor parceira antes de conceder as recompensas.
  • Opcionalmente, valide event.origin em relação ao seu host Games I Know.
8. Segurança

Resultados de jogo verificados API

Use GAME_COMPLETED na página principal para mostrar quem ganhou. Para recompensas, verifique os resultados assinados do seu backend com uma chave de servidor parceira - nunca chame a verificação API do navegador JavaScript.

Verificar um resultado assinado

Somente no lado do servidor. Use resultId e signedToken de GAME_COMPLETED com 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.
Resposta de verificação bem-sucedida
json
{
  "ok": true,
  "resultId": "res_abc123xyz",
  "partnerId": "partner_your_tenant",
  "gameSlug": "tic-tac-toe",
  "outcome": "player_1",
  "score": 100,
  "durationSeconds": 24
}
Exemplo de manipulador de recompensas de backend

Seu servidor recebe tokens da página principal, verifica com Games I Know, e então concede a recompensa.

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. Análises

eventos de análise do lado do servidor

O Games I Know registra esses eventos automaticamente quando o seu iframe é carregado e os jogadores interagem. Eles aparecem no seu painel de parceiros. Para importar os mesmos dados para o seu próprio banco de dados, crie uma chave de servidor de parceiros na página de Instalação e execute o comando GET /partners/analytics somente a partir do seu servidor de backend.

  • embed_carregado - Todo jogo embeddable quando a configuração é validada ou o iframe tem permissão para ser executado.
  • jogo_iniciado - Cada jogo embeddable quando a jogabilidade começa (registrado automaticamente pelo iframe).
  • jogo_concluído - Todo jogo embeddable quando POST /embed/results for bem-sucedido.
  • partida_ai_iniciada - Cota AI consumida através de POST /embed/ai-matches/start.
  • embed_bloqueado - Acesso negado ao domínio, parceiro ou jogo.
Exporte as análises para o seu sistema (é necessária uma chave de servidor de parceiro).

Gere uma chave de servidor de parceiro em Painel de Parceiros → Instalar. Armazene-a como um segredo do servidor. Use os parâmetros de consulta abaixo para filtrar a exportação.

http
GET https://api.gamesiknow.com/partners/analytics
Autorização: Bearer gik_psk_sua_chave_secreta

Parâmetros de consulta opcionais:

domain Nome do host do site registrado (example.com)

campaignId Valor do seu parâmetro campaignId iframe

gameSlug jogo da velha | quatro em linha | bingo | i-know

from Data de início em UTC (AAAA-MM-DD)

to Data de término em UTC (AAAA-MM-DD)

Exemplo:

/partners/analytics?domain=www.example.com&gameSlug=jogo da velha&from=2026-05-01&to=2026-05-31

Chame somente do seu servidor de backend. Nunca exponha sua chave de servidor de parceiros no navegador JavaScript.
10. Catálogo

Matriz de capacidades do jogo

Todos os jogos embeddable enviam os mesmos eventos principais. Compare o tempo e os extras de cada título abaixo.

JogoJOGO_INICIADOSinal de conclusãoAssinadoForçado AIHeightComandos principais
Tic Tac ToePrimeiro movimento ou AI inícioJOGO_CONCLUÍDOSimSim640pxreset, get_state
Four in a RowPrimeiro movimento ou AI inícioJOGO_CONCLUÍDOSimSim640pxreset, get_state
BingoA partida começa (AI ou PvP)JOGO_CONCLUÍDOSimSim640pxNenhum ainda
I KnowA partida começa (AI ou PvP)JOGO_CONCLUÍDOSimSim640pxNenhum ainda
11. Guias

Guias de configuração da plataforma e de casos de uso

Esta página é a referência técnica. Use estes guias quando precisar de instruções de instalação específicas para a plataforma ou conselhos sobre posicionamento vertical. Todos os guias usam o mesmo iframe e modelo de evento documentado acima.

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.

Procurando páginas de visão geral, como jogos iframe, widgets HTML5 ou jogos embed gratuitos? Navegue por todas. embed guias no hub.

12. Suporte

Perguntas frequentes

Respostas sobre detalhes de integração, suporte atual a jogos, comandos, resultados assinados e compatibilidade futura com jogos.

Posso jogar embed Games I Know jogos no WordPress, Webflow, Wix, Squarespace ou em um site personalizado?

Sim. Os Games I Know e embed usam HTML padrão iframe, portanto, funcionam em blocos HTML personalizados do WordPress, elementos embed do Webflow, áreas de código personalizadas do Wix e Squarespace, HTML estático, React, Next.js e outros sites personalizados. Primeiro, registre o domínio do site no painel de controle do parceiro e, em seguida, cole o trecho de código gerado na página onde o jogo deve aparecer.

Qual é a diferença entre /embed/{gameSlug}/ e /embed/{gameSlug}/frame/?

/embed/{gameSlug}/ é a página inicial pública do jogo embed. /embed/{gameSlug}/frame/ é o ambiente de execução iframe que deve ser inserido no seu site. Sempre utilize a URL /frame/ no código iframe, pois ela carrega o jogo, valida seu tenant e domínio e envia eventos da página pai.

Os jogos Games I Know iframe funcionam em dispositivos móveis e computadores?

Sim. Os jogos Games I Know e iframe são projetados para navegadores de dispositivos móveis, tablets, laptops e desktops. Use width="100%" e uma altura recomendada de cerca de 640px para a maioria dos embed. Você também pode monitorar o evento ready e usar payload.embedHeight se quiser que a página principal redimensione o iframe automaticamente.

Quanto custa jogar embed Games I Know jogos?

Os termos Games I Know, iframe e embed são gratuitos durante o período beta do embed. Não é necessário cartão de crédito para começar, e os termos embed da versão beta atual não incluem anúncios. Crie uma conta de parceiro gratuita, registre seu domínio e gere o snippet iframe no painel de controle.

Preciso de uma conta de parceiro ou da chave embed?

Sim. Uma conta de parceiro fornece um ID de locatário e um snippet iframe com restrição de domínio. O iframe envia o ID do locatário com o URL do frame para que o Games I Know possa validar o parceiro, o domínio permitido, o acesso ao jogo, a cota do AI, a campanha de análise e o fluxo de verificação de resultados.

Alguém pode copiar meu código iframe e usá-lo em outro site?

O embed tem restrição de domínio. Se alguém copiar o seu snippet iframe para um site não autorizado, o Games I Know verifica a origem da solicitação em relação aos domínios configurados para a sua conta de parceiro e bloqueia o uso não autorizado. Use IDs de campanha separados quando desejar análises mais precisas por site ou campanha.

Quais jogos Games I Know podem ser embedded?

Os termos Tic Tac Toe, Four in a Row, Bingo e I Know já são compatíveis com os termos iframe e embed. Cada jogo envia o contrato de evento padrão embed para estado de prontidão, início do jogo, jogabilidade, conclusão, dados do vencedor, análises e verificação de resultados. Espera-se que novos jogos compatíveis com embed sigam o mesmo padrão de evento, para que os parceiros não precisem reconstruir sua integração.

Quais eventos postMessage Games I Know envia para a página pai?

Cada jogo embeddable usa dois formatos de postMessage. Os eventos de ciclo de vida usam um formato plano com source: gamesiknow e valores de evento como ready, GAME_STARTED, GAME_COMPLETED e EMBED_FULLSCREEN_CHANGE. Os eventos de jogabilidade usam version: 1 com nomes de eventos aninhados como ready, mode_change, move, reset, undo e state. Sempre filtre por data.source === "gamesiknow".

Posso rastrear inícios, conclusões, vencedores e resultados dos jogadores de um jogo embedded?

Sim. O servidor detecta o evento GAME_STARTED quando uma partida começa, utiliza eventos de jogabilidade como move e mode_change durante o jogo e usa GAME_COMPLETED quando uma partida termina. O evento GAME_COMPLETED inclui identificadores de resultado, vencedor, jogadores, pontuação, duração e desfecho, quando a assinatura estiver disponível. As análises do servidor também registram carregamentos, inícios, conclusões, tentativas bloqueadas e cliques em CTAs.

Qual evento de conclusão devo usar para todos os jogos?

Use GAME_COMPLETED quando uma partida terminar. Todo jogo embeddable envia este evento de ciclo de vida com resultado, vencedor, nome do jogador vencedor e jogadores. Quando GAME_COMPLETED incluir resultId e signedToken, encaminhe-os para o seu backend e chame POST /embed/results/verify com a chave do seu servidor parceiro antes de conceder recompensas ou créditos.

Como faço para detectar eventos embed de um iframe no meu site?

Adicione `window.addEventListener("message", handler)` na página que hospeda o `iframe`. No manipulador, ignore as mensagens a menos que `event.data.source === "gamesiknow"`. Faça um branch com base em `event.data.event` para eventos de ciclo de vida ou com base em `event.data.event` mais `event.data.version === 1` para eventos de jogabilidade. Opcionalmente, valide `event.origin` em relação à sua origem `Games I Know` permitida.

Como faço para verificar os resultados do jogo antes de conceder créditos, prêmios ou desbloqueios?

Use o evento GAME_COMPLETED na página principal para mostrar imediatamente quem ganhou (resultado, vencedor, nome do jogador vencedor, jogadores). Para conceder recompensas, envie o resultId e o signedToken do evento GAME_COMPLETED para o seu backend e, em seguida, faça uma chamada POST para /embed/results/verify com Authorization: Bearer gik_psk_… usando uma chave de servidor parceira do seu painel de controle. O endpoint de verificação é exclusivo do servidor - nunca o acesse pelo navegador JavaScript. Conceda recompensas somente após a verificação ser concluída com sucesso.

Quais parâmetros de URL iframe são suportados por Games I Know?

Obrigatório: tenantId (seu ID de locatário parceiro). Opcional: mode=ai para solicitar o modo AI forçado quando a cota permitir, e campaignId para segmentar as análises. Os URLs de frames seguem o formato /embed/{gameSlug}/frame/?tenantId=SEU_ID_DE_LOCATÁRIO.

Posso forçar um jogo embedded a iniciar no modo AI?

Sim. Adicione `mode=ai` à URL `iframe` para solicitar primeiro o modo `AI`. As regras de cota e domínio do servidor ainda se aplicam, portanto, o `embed` pode recorrer à escolha do jogador ou ao modo jogador contra jogador quando o modo `AI` não estiver disponível ou a cota estiver esgotada.

Posso enviar comandos para o Games I Know iframe?

Tic Tac Toe e Four in a Row aceitam mensagens do servidor pai com o jogo definido como o slug do jogo e a ação definida como reset ou get_state. O servidor iframe responde com um evento de estado do jogo. Outros jogos embed ainda não expõem comandos do servidor pai.

Lista de verificação de produção

Confirme se o domínio do site está ativo antes de gerar um token.

Utilize um token ou campaignId diferente para cada site ou grupo de campanhas.

Fique atento aos eventos GAME_STARTED e GAME_COMPLETED na página principal.

Mantenha a marca Games I Know visível dentro do embed.

Verifique os resultados assinados em seu sistema antes de conceder prêmios ou créditos.

O teste força o modo AI e o fallback para PvP quando a cota de AI se esgota.

Precisa de ajuda com a integração de um parceiro?

Compartilhe o site, o CMS e a localização desejada para o jogo. Podemos analisar a configuração do seu evento embed com você.

Contate o suporte