Skip to content

Integrasi iklan in-game ​

Terakhir diperbarui: 2026-08-11

Integrasikan iklan Banner, interstitial, dan rewarded melalui bridge host PlayNova. Game Anda berjalan di iframe dan berkomunikasi dengan host via postMessage — jangan sematkan SDK iklan pihak ketiga di paket.

Cara monetisasi bekerja ​

PlayNova mengisi iklan di sisi host dan membagi pendapatan dengan kreator bersertifikat (default 70% kreator). Game hanya meminta show/load; host menangani inventaris, batas frekuensi, dan pelaporan impression/klik.

Envelope untuk setiap pesan:

json
{ "source": "...", "type": "...", "payload": { } }
  • Game harus mengatur source ke playnova-game
  • Host membalas dengan source playnova-host

Format iklan:

  • Rewarded — opt-in pemain (revive, hadiah ganda, item gratis). Berikan hadiah hanya setelah ads.rewarded_completed.
  • Interstitial — jeda alami (level selesai / game over). Jangan saat input.
  • Banner — strip milik host; game hanya meminta show/hide.

Placement yang direkomendasikan ​

Selalu kirim string placement stabil untuk analitik dan batas. Utamakan nama platform di bawah:

PlacementKasus penggunaan
reviveLanjut setelah gagal
double_rewardBonus akhir level
free_item / unlockConsumable atau buka konten
level_complete / level_start / game_over / pauseMomen interstitial
banner_bottom / banner_topSlot Banner

Alur integrasi ​

  1. Pada jeda alami, panggil ads.load_* dengan placement (dan requestId opsional).
  2. Tunggu ads.*_loaded (atau tangani *_failed dan lanjut tanpa iklan).
  3. Panggil ads.show_* dengan requestId / placement yang sama.
  4. Untuk rewarded, ubah status game hanya pada ads.rewarded_completed. dismissed/failed jangan beri hadiah.

Jenis pesan bridge ​

String type kanonik didefinisikan di playnova-web (ads-bridge). Selaraskan paket game dengan nilai persis ini.

Game → host ​

typeTujuan
ads.load_rewardedPreload inventaris rewarded
ads.show_rewardedTampilkan rewarded (beri hanya setelah selesai)
ads.load_interstitialPreload interstitial
ads.show_interstitialTampilkan interstitial saat jeda
ads.show_bannerMinta Banner host terlihat
ads.hide_bannerSembunyikan Banner host
ads.preloadPreload beberapa format
ads.get_banner_heightTanyakan tinggi Banner untuk layout

Host → game ​

typeTujuan
ads.rewarded_loadedRewarded siap ditampilkan
ads.rewarded_failedRewarded load/show gagal
ads.rewarded_completedRewarded selesai — aman beri hadiah
ads.rewarded_dismissedRewarded ditutup lebih awal — jangan beri
ads.interstitial_loadedInterstitial siap
ads.interstitial_failedInterstitial gagal
ads.interstitial_closedInterstitial ditutup
ads.banner_shownBanner terlihat
ads.banner_hiddenBanner disembunyikan
ads.banner_failedBanner gagal

Helper salin-tempel ​

Tempel ke index.html (atau modul). Ganti pemberian hadiah dengan logika game Anda.

js
function pnAds(type, payload) {
  parent.postMessage({ source: 'playnova-game', type, payload }, '*');
}
function onPnHost(handler) {
  window.addEventListener('message', (e) => {
    const d = e.data;
    if (!d || d.source !== 'playnova-host') return;
    handler(d);
  });
}
// Contoh: alur revive
pnAds('ads.load_rewarded', { placement: 'revive' });
onPnHost((msg) => {
  if (msg.type === 'ads.rewarded_loaded') {
    pnAds('ads.show_rewarded', {
      requestId: msg.payload && msg.payload.requestId,
      placement: 'revive',
      reward: { type: 'life', amount: 1 },
    });
  }
  if (msg.type === 'ads.rewarded_completed') {
    // beri hadiah HANYA di sini
  }
});

Aturan production ​

  • Jangan auto-klik, loop paksa, atau tutupi kontrol Close / Skip.
  • Jangan beri hadiah tanpa ads.rewarded_completed untuk requestId itu.
  • Hormati kegagalan host: inventaris kosong, lanjutkan game dengan baik.
  • Utamakan load sebelum show agar pemain kurang menunggu.
  • Paket bebas SDK iklan pihak ketiga, tracker, atau skrip pop-under.
  • Frekuensi interstitial ditegakkan host; spam show bisa diabaikan.

FAQ ​

Bisakah saya pakai AdMob / Unity Ads di zip? ​

Tidak. PlayNova mengagregasi demand di host. Menyematkan SDK lain gagal review dan melanggar asumsi sandbox iframe.

Bagaimana jika host tidak menjawab? ​

Anggap diam atau *_failed sebagai no-fill. Lanjutkan gameplay tanpa memblokir pemain dengan spinner tak berujung.

Di mana melihat pendapatan? ​

Setelah iklan live di production, impression dan pendapatan masuk ke analitik kreator. Penyelesaian sesuai syarat program.


Host bridge live di halaman main. Jenis pesan di atas adalah kontrak production — implementasikan sekarang.

Dokumentasi PlayNova untuk kreator