Games I Know logoGames I Know
Permainan EmbedDokumentasi

Embed API dokumen

Pelajari embed dengan memainkannya, lalu hubungkan event-event tersebut.

Mulailah dengan demo langsung, perhatikan peristiwa halaman induk, lalu salin pola iframe dan listener ke situs Anda. Alur yang sama berlaku untuk setiap game Games I Know iframe.

Dapatkan kunci embed
1. Pelajari dulu

Demo langsung: mainkan dan periksa kejadian

Lakukan gerakan di Tic Tac Toe iframe. Log peristiwa menunjukkan GAME_STARTED, peristiwa permainan, dan muatan penyelesaian persis seperti yang diterima halaman induk.

Kontrak acara di seluruh platform

Games I Know mengirimkan embed event untuk setiap game di platform: Tic Tac Toe, Four in a Row, Bingo, dan I Know hari ini, dan setiap game baru yang dapat di-embed yang kami tambahkan di masa mendatang. Anda tidak memerlukan integrasi terpisah untuk setiap judul. Buat satu listener halaman induk terhadap kontrak standar (siap, GAME_STARTED, event gameplay, penyelesaian dengan data pemenang, dan hasil yang ditandatangani) dan gunakan kembali di semua game embed yang ada dan yang akan datang.

2. Panduan Singkat

Dari nol hingga berfungsi embed

Gunakan jalur ini jika Anda sudah mengetahui di mana game tersebut harus muncul di situs web Anda.

  1. 1

    Buat akun mitra

    Tambahkan domain situs web yang akan menampung iframe.

    Lanjutkan ke langkah
  2. 2

    Pasang jalur bingkai

    Gunakan /embed/{gameSlug}/frame/ dengan tenantId Anda. Jangan iframe halaman arahan SEO.

    Lanjutkan ke langkah
  3. 3

    Dengarkan pesan untuk orang tua.

    Filter berdasarkan data.source === "gamesiknow", lalu tangani event GAME_STARTED, GAME_COMPLETED, dan versi 1 gameplay.

    Lanjutkan ke langkah
  4. 4

    Verifikasi hasil yang telah selesai

    Kirim resultId dan signedToken ke backend Anda sebelum memberikan kredit, hadiah, atau pembukaan kunci.

    Lanjutkan ke langkah
Starter iframe

Gunakan tenantId asli Anda dari dasbor mitra.

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

Cara kerja __GIK_TERM__0__

Games I Know embed adalah iframe yang diisolasi (sandbox) pada domain Anda. Ia memvalidasi penyewa dan domain Anda terhadap API, kemudian berkomunikasi dengan halaman induk Anda melalui window.postMessage.

Langkah 1

Halaman induk dimuat iframe

Situs Anda merender iframe yang mengarah ke /embed/{gameSlug}/frame/ dengan tenantId dan parameter kueri mode atau campaignId opsional.

Langkah 2

Embed memvalidasi penyewa dan domain

iframe memanggil GET /embed/config (atau /api/embed/config). Games I Know memeriksa akun mitra Anda, domain yang diizinkan, akses game, dan kuota AI. Sebuah peristiwa analitik embed_loaded di sisi server dicatat.

Langkah 3

Embed siap

iframe mengirimkan event ready ke halaman induk sehingga Anda dapat menampilkan status loading atau mengubah ukuran frame menggunakan payload.embedHeight.

Langkah 4

Pemain memulai pertandingan

Saat permainan dimulai, setiap permainan yang dapat dijalankan (embed) mengirimkan GAME_STARTED ke halaman induk dan merekam game_started secara otomatis di sisi server. Anda tidak memanggil analitik apa pun (API) dari situs web Anda.

Langkah 5

Siaran langsung acara gameplay

Selama pertandingan, peristiwa permainan versi 1 seperti gerakan dan perubahan mode memperbarui UI atau analitik internal Anda.

Langkah 6

Pertandingan selesai dengan data pemenang.

Setelah selesai, setiap permainan yang dapat dijalankan melalui embed mengirimkan GAME_COMPLETED ke induk dengan hasil, pemenang, dan pemain sehingga halaman Anda dapat menampilkan hasilnya segera. iframe juga menandatangani hasilnya melalui POST /embed/results dan menyertakan resultId dan signedToken dalam GAME_COMPLETED ketika penandatanganan berhasil. Backend Anda dapat memverifikasi token tersebut dengan kunci server mitra sebelum memberikan hadiah.

Dua format postMessage

Peristiwa siklus hidup gunakan benda datar dengan event: "GAME_STARTED" or event: "GAME_COMPLETED". Peristiwa dalam permainan bungkus data di dalam version: 1 dengan bersarang payload. Selalu filter pada data.source === "gamesiknow".

4. Instal

Pengaturan mitra dan cuplikan iframe

Sebagian besar integrasi melibatkan empat keputusan: mendaftarkan domain, menghasilkan token, menginstal iframe, lalu mendengarkan peristiwa mulai dan selesai.

Daftarkan setiap situs web

Tambahkan setiap domain yang akan menjadi host Games I Know embed. Domain dinormalisasi sehingga example.com dan www.example.com ditangani secara konsisten.

Hasilkan token domain

Buat token embed terpisah untuk setiap situs web. Ini menjaga agar analitik tetap bersih dan mempersiapkan akun untuk penetapan harga berbasis domain di masa mendatang.

Instal iframe

Salin iframe atau pembungkus responsif ke dalam blok HTML kustom CMS Anda, area embed pembuat situs web, atau templat frontend kustom.

Dengarkan kejadian-kejadian dan verifikasi hasilnya.

Tangani event postMessage GAME_STARTED dan GAME_COMPLETED di halaman induk Anda untuk menampilkan status pertandingan dan detail pemenang. Verifikasi hasil yang telah ditandatangani dari backend Anda dengan kunci server mitra sebelum memberikan hadiah.

Pengaturan iframe yang direkomendasikan

Lebar

Gunakan 100% agar embed mengisi kolom konten yang tersedia.

Tinggi

640px untuk sebagian besar game. Tic Tac Toe juga berfungsi pada 600px. Gunakan payload.embedHeight dari event ready untuk mengubah ukuran secara otomatis.

Pertandingan

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

Mode

Hilangkan mode untuk pilihan pemain, atau lewati mode=ai ketika Anda ingin embed meminta AI terlebih dahulu.

Normal iframe

Pemain memilih jenis pertandingan di dalam game ketika kuota AI tersedia.

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>
Dipaksa AI iframe

Meminta akses ke AI terlebih dahulu. Beralih ke PvP secara diam-diam ketika kuota habis.

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

Parameter URL iframe

URL bingkai menggunakan /embed/{gameSlug}/frame/. Laman landas SEO tanpa gameplay ditayangkan langsung di /embed/{gameSlug}/.

ParameterDiperlukanKeterangan
ID penyewaYaID penyewa mitra Anda dari dasbor mitra Games I Know. Juga diterima sebagai partnerId untuk integrasi lama.
modeTIDAKDiatur ke ai untuk meminta mode AI paksa. Kuota sisi server dan aturan domain tetap berlaku. Beralih ke pemain vs pemain ketika AI tidak tersedia.
ID kampanyeTIDAKLabel kampanye opsional akan ditampilkan dalam event postMessage dan disimpan dalam analitik mitra untuk pengujian A/B atau segmentasi tingkat halaman.
6. Acara

Referensi peristiwa postMessage

Kontrak yang sama berlaku untuk rilis Tic Tac Toe, Four in a Row, Bingo, I Know, dan embed mendatang.

Aturan 1

Sumber filter

Abaikan pesan kecuali data.source adalah gamesiknow.

Aturan 2

Menangani siklus hidup

Gunakan GAME_STARTED dan GAME_COMPLETED untuk status pertandingan, nama pemenang, dan hasil akhir.

Aturan 3

Verifikasi untuk mendapatkan hadiah.

Teruskan resultId dan signedToken ke backend Anda sebelum memberikan hadiah.

Peristiwa siklus hidup

PeristiwaSaat ditembakkanFormatBidang utama
siapEmbed diinisialisasi dan konfigurasi dimuat.Gameplay (versi 1) untuk semua game, atau datar untuk beberapa pembungkus siklus hidup.matchId, mode, embedTinggi
PERMAINAN_DIMULAISetiap permainan yang dapat dimainkan (saat ini dan di masa mendatang). Dipicu ketika pertandingan dimulai (misalnya, langkah pertama atau awal ronde).Siklus hidup datargame, partnerId, campaignId, mode, matchId (implisit melalui aliran gameplay)
PERMAINAN_SELESAISetiap permainan yang dapat dimainkan saat pertandingan berakhir. Termasuk hasil, pemenang, nama pemain pemenang, dan pemain sehingga halaman induk dapat menampilkan hasil dengan segera. Juga termasuk resultId dan signedToken ketika penandatanganan sisi server berhasil.Siklus hidup datarhasil, pemenang, nama pemain pemenang, ID pemain pemenang, pemain, skor, durasi detik, ID hasil, token yang ditandatangani
PERUBAHAN_LAYAR_PENUH_SEMATKANPemain beralih antara mode layar penuh di embed.Siklus hidup datarmuatan.aktif boolean

Peristiwa dalam permainan

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

  • siap - Sama seperti siklus hidup yang siap dengan amplop versi 1.
  • perubahan mode - Pemain memilih PvP, AI, atau kembali ke pemilihan mode.
  • bergerak - Suatu gerakan atau tindakan telah terjadi (sel papan, jatuhan cakram, panggilan bingo, jawaban kuis).
  • mengatur ulang - Pengaturan ulang papan atau putaran.
  • membuka - Langkah terakhir dibatalkan (Tic Tac Toe saja).
  • negara - Respons terhadap perintah get_state induk (Tic Tac Toe, Four in a Row).

Setiap postingan game embeddable GAME_COMPLETED kepada orang tua dengan outcome, winner, Dan players Saat pertandingan berakhir. Saat penandatanganan berhasil, GAME_COMPLETED juga termasuk resultId Dan signedToken untuk verifikasi backend.

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

Nilai hasil

pemain_1

Pemain manusia pertama menang.

pemain_2

Pemain manusia kedua menang.

ai_bot

Lawan AI menang.

menggambar

Tidak ada pemenang.

Perintah Parent-to-iframe

Hanya didukung pada Tic Tac Toe dan Four in a Row. Targetkan contentWindow iframe dengan slug game dan aksi.

Atur ulang atau minta status
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. Implementasi

Pendengar integrasi sampel

Salin listener ini ke halaman yang menampung iframe Anda. Listener ini menangani status siap, memulai permainan, peristiwa permainan, penyelesaian yang ditandatangani, dan perubahan layar penuh.

Pendengar halaman induk terpadu

Saring berdasarkan sumber, tangani GAME_STARTED dan GAME_COMPLETED untuk UI pemenang dan peristiwa permainan selama pertandingan.

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

Daftar periksa integrasi

  • Tampilkan banner permainan sedang berlangsung di GAME_STARTED.
  • Tampilkan nama pemenang dari GAME_COMPLETED.winner atau GAME_COMPLETED.winnerPlayerName.
  • Teruskan resultId dan signedToken ke backend Anda; verifikasi dengan kunci server mitra sebelum memberikan hadiah.
  • Secara opsional, validasi event.origin terhadap host Games I Know Anda.
8. Keamanan

Hasil permainan terverifikasi API

Gunakan GAME_COMPLETED di halaman utama untuk menunjukkan siapa yang menang. Untuk hadiah, verifikasi hasil yang ditandatangani dari backend Anda dengan kunci server mitra - jangan pernah memanggil verifikasi API dari browser JavaScript.

Verifikasi hasil yang telah ditandatangani.

Hanya sisi server. Gunakan resultId dan signedToken dari GAME_COMPLETED dengan 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.
Respons verifikasi berhasil.
json
{
  "ok": true,
  "resultId": "res_abc123xyz",
  "partnerId": "partner_your_tenant",
  "gameSlug": "tic-tac-toe",
  "outcome": "player_1",
  "score": 100,
  "durationSeconds": 24
}
Contoh penanganan hadiah backend

Backend Anda menerima token dari halaman induk, memverifikasinya dengan Games I Know, lalu memberikan hadiah.

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

Peristiwa analitik sisi server

Games I Know secara otomatis merekam peristiwa ini saat iframe Anda dimuat dan pemain berinteraksi. Data tersebut muncul di dasbor mitra Anda. Untuk menarik data yang sama ke dalam basis data Anda sendiri, buat kunci server mitra di halaman Instalasi dan panggil GET /partners/analytics hanya dari server backend Anda.

  • embed_dimuat - Setiap embed dapat memainkan game ketika konfigurasi divalidasi atau iframe diizinkan untuk dijalankan.
  • permainan dimulai - Setiap permainan yang dapat dimainkan saat permainan dimulai (direkam secara otomatis oleh iframe).
  • permainan_selesai - Setiap embeddable game ketika POST /embed/results berhasil.
  • ai_match_started - Kuota AI dikonsumsi melalui POST /embed/ai-matches/start.
  • embed_diblokir - Akses ke domain, mitra, atau game ditolak.
Ekspor analitik ke backend Anda (diperlukan kunci server mitra)

Buat kunci server mitra di Dasbor Mitra → Instal. Simpan sebagai rahasia server. Gunakan parameter kueri di bawah ini untuk memfilter ekspor.

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

Parameter kueri opsional:
domain Nama host situs web terdaftar (example.com)
campaignId Nilai dari parameter campaignId iframe Anda
gameSlug tic-tac-toe | four-in-a-row | bingo | i-know
from Tanggal mulai dalam UTC (YYYY-MM-DD)
to Tanggal akhir dalam UTC (YYYY-MM-DD)

Contoh:

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

Panggil hanya dari server backend Anda. Jangan pernah mengekspos kunci server mitra Anda di browser JavaScript.
10. Katalog

Matriks kemampuan permainan

Setiap game yang dapat dijalankan mengirimkan event inti yang sama. Bandingkan pengaturan waktu dan fitur tambahan per judul di bawah ini.

PermainanPERMAINAN_DIMULAISinyal penyelesaianDitandatanganiDipaksa AIHeightPerintah orang tua
Tic Tac ToeLangkah pertama atau AI dimulaiPERMAINAN_SELESAIYaYa640pxatur ulang, dapatkan_keadaan
Four in a RowLangkah pertama atau AI dimulaiPERMAINAN_SELESAIYaYa640pxatur ulang, dapatkan_keadaan
BingoPertandingan dimulai (AI atau PvP)PERMAINAN_SELESAIYaYa640pxBelum ada
I KnowPertandingan dimulai (AI atau PvP)PERMAINAN_SELESAIYaYa640pxBelum ada
11. Pemandu

Panduan pengaturan platform dan kasus penggunaan

Halaman ini adalah referensi teknis. Gunakan panduan ini ketika Anda memerlukan langkah-langkah instalasi khusus platform atau saran penempatan vertikal. Semua panduan menggunakan iframe dan model kejadian yang sama seperti yang didokumentasikan di atas.

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.

Mencari halaman gambaran umum seperti game iframe, widget HTML5, atau game embeddable gratis? Jelajahi semua embed panduan di hub.

12. Dukungan

Pertanyaan yang sering diajukan

Jawaban untuk detail integrasi, dukungan game saat ini, perintah, hasil yang ditandatangani, dan kompatibilitas game di masa mendatang.

Bisakah saya embed Games I Know memainkan game di WordPress, Webflow, Wix, Squarespace, atau situs web kustom?

Ya. Games I Know embed menggunakan HTML iframe standar, sehingga berfungsi di blok HTML kustom WordPress, elemen embed Webflow, area kode kustom Wix dan Squarespace, HTML statis, React, Next.js, dan situs kustom lainnya. Daftarkan domain situs web di dasbor mitra Anda terlebih dahulu, lalu tempelkan cuplikan frame yang dihasilkan ke halaman tempat game tersebut seharusnya muncul.

Apa perbedaan antara /embed/{gameSlug}/ dan /embed/{gameSlug}/frame/?

/embed/{gameSlug}/ adalah halaman arahan publik untuk game embed. /embed/{gameSlug}/frame/ adalah runtime iframe yang harus ditempelkan ke situs web Anda. Selalu gunakan URL /frame/ dalam kode iframe karena URL tersebut memuat game yang dapat dimainkan, memvalidasi penyewa dan domain Anda, serta mengirimkan peristiwa halaman induk.

Apakah game Games I Know iframe berfungsi di perangkat seluler dan desktop?

Ya. Game Games I Know iframe dirancang untuk browser seluler, tablet, laptop, dan desktop. Gunakan lebar="100%" dan tinggi yang disarankan sekitar 640px untuk sebagian besar embed. Anda juga dapat mendengarkan peristiwa ready dan menggunakan payload.embedHeight jika Anda ingin halaman induk Anda mengubah ukuran iframe secara otomatis.

Berapa biaya untuk bermain game di embed dan Games I Know?

Games I Know iframe embed gratis selama beta embed. Tidak ada persyaratan kartu kredit untuk memulai, dan beta embed saat ini tidak menyertakan iklan. Buat akun mitra gratis, daftarkan domain Anda, dan hasilkan cuplikan iframe dari dasbor.

Apakah saya memerlukan akun mitra atau kunci embed?

Ya. Akun mitra memberi Anda ID penyewa dan cuplikan iframe yang dibatasi domain. iframe mengirimkan tenantId dengan URL frame sehingga Games I Know dapat memvalidasi mitra, domain yang diizinkan, akses game, kuota AI, kampanye analitik, dan alur verifikasi hasil.

Bisakah seseorang menyalin kode iframe saya dan menggunakannya di situs web lain?

embed dibatasi domainnya. Jika seseorang menyalin cuplikan iframe Anda ke situs web yang tidak sah, Games I Know akan memeriksa asal permintaan terhadap domain yang dikonfigurasi untuk akun mitra Anda dan memblokir penggunaan yang tidak disetujui. Gunakan ID kampanye terpisah jika Anda menginginkan analitik yang lebih bersih per situs web atau kampanye.

Game Games I Know mana yang bisa embedded?

Tic Tac Toe, Four in a Row, Bingo, dan I Know mendukung iframe dan embed saat ini. Setiap game mengirimkan kontrak event embed standar untuk status siap, awal game, gameplay, penyelesaian, data pemenang, analitik, dan verifikasi hasil. Game baru yang mendukung embed diharapkan mengikuti pola event yang sama sehingga mitra tidak perlu membangun ulang integrasi mereka.

Peristiwa postMessage apa yang dikirimkan oleh Games I Know ke halaman induk?

Setiap game yang dapat dijalankan menggunakan dua format postMessage. Peristiwa siklus hidup menggunakan bentuk datar dengan sumber: gamesiknow dan nilai peristiwa seperti ready, GAME_STARTED, GAME_COMPLETED, dan EMBED_FULLSCREEN_CHANGE. Peristiwa gameplay menggunakan versi: 1 dengan nama peristiwa bersarang seperti ready, mode_change, move, reset, undo, dan state. Selalu filter pada data.source === "gamesiknow".

Bisakah saya melacak awal, penyelesaian, pemenang, dan hasil pemain dari permainan embedded?

Ya. Pantau GAME_STARTED saat pertandingan dimulai, gunakan event gameplay seperti move dan mode_change selama permainan, dan gunakan GAME_COMPLETED saat pertandingan berakhir. GAME_COMPLETED mencakup hasil, pemenang, pemain, skor, durasi, dan pengidentifikasi hasil jika tersedia penanda tangan. Analisis sisi server juga mencatat pemuatan, permulaan, penyelesaian, upaya yang diblokir, dan klik CTA.

Acara penyelesaian mana yang harus saya gunakan untuk semua game?

Gunakan GAME_COMPLETED saat pertandingan berakhir. Setiap game yang dapat dijalankan (embeddable) mengirimkan event siklus hidup ini dengan hasil, pemenang, winnerPlayerName, dan pemain. Saat GAME_COMPLETED menyertakan resultId dan signedToken, teruskan ke backend Anda dan panggil POST /embed/results/verify dengan kunci server mitra Anda sebelum memberikan hadiah atau kredit.

Bagaimana cara saya mendengarkan peristiwa embed dari iframe di situs web saya?

Tambahkan window.addEventListener("message", handler) pada halaman yang menampung iframe. Di dalam handler, abaikan pesan kecuali event.data.source === "gamesiknow". Buat percabangan berdasarkan event.data.event untuk peristiwa siklus hidup, atau berdasarkan event.data.event ditambah event.data.version === 1 untuk peristiwa permainan. Secara opsional, validasi event.origin terhadap asal Games I Know yang diizinkan.

Bagaimana cara saya memverifikasi hasil permainan sebelum memberikan kredit, hadiah, atau item yang dapat dibuka?

Gunakan GAME_COMPLETED di halaman utama untuk langsung menampilkan siapa yang menang (hasil, pemenang, winnerPlayerName, pemain). Untuk hadiah, kirim resultId dan signedToken dari GAME_COMPLETED ke backend Anda, lalu panggil POST /embed/results/verify dengan Authorization: Bearer gik_psk_… menggunakan kunci server mitra dari dasbor Anda. Endpoint verifikasi hanya berada di sisi server - jangan pernah memanggilnya dari browser JavaScript. Berikan hadiah hanya setelah verifikasi berhasil.

Parameter URL iframe apa saja yang didukung oleh Games I Know?

Wajib: tenantId (ID tenant mitra Anda). Opsional: mode=ai untuk meminta mode AI paksa jika kuota memungkinkan, dan campaignId untuk segmentasi analitik. URL frame mengikuti /embed/{gameSlug}/frame/?tenantId=YOUR_TENANT_ID.

Bisakah saya memaksa game yang menggunakan embed untuk dimulai dalam mode AI?

Ya. Tambahkan mode=ai ke URL iframe untuk meminta mode AI terlebih dahulu. Kuota sisi server dan aturan domain tetap berlaku, sehingga embed dapat beralih ke pilihan pemain atau pemain lawan pemain ketika mode AI tidak tersedia atau kuota habis.

Bisakah saya mengirimkan perintah ke Games I Know iframe?

Tic Tac Toe dan Four in a Row menerima pesan induk dengan game yang diatur ke slug game dan action diatur ke reset atau get_state. iframe merespons dengan event gameplay state. Game embed lainnya belum mengekspos perintah induk.

Daftar periksa produksi

Konfirmasikan bahwa domain situs web aktif sebelum membuat token.

Gunakan token atau campaignId terpisah untuk setiap situs web atau grup kampanye.

Pantau suara GAME_STARTED dan GAME_COMPLETED di halaman utama.

Pertahankan agar logo Games I Know tetap terlihat di dalam embed.

Verifikasi hasil yang telah ditandatangani di sistem backend Anda sebelum memberikan hadiah atau kredit.

Pengujian memaksa mode AI dan fallback PvP ketika kuota AI habis.

Butuh bantuan dengan integrasi mitra?

Bagikan situs web, CMS, dan penempatan game yang diinginkan. Kami dapat meninjau pengaturan event embed Anda bersama Anda.

Hubungi dukungan