Skip to content

In-game advertentie-integratie ​

Laatst bijgewerkt: 2026-08-11

Integreer Banner-, interstitial- en rewarded-advertenties via de PlayNova host-bridge. Je game draait in een iframe en communiceert met de host via postMessage — embed geen third-party advertentie-SDK's in het pakket.

Hoe monetisatie werkt ​

PlayNova vult advertenties aan hostzijde en deelt omzet met gecertificeerde makers (standaard 70% maker). Games vragen alleen show/load aan; de host beheert inventaris, frequentielimieten en impression/click-rapportage.

Envelope voor elk bericht:

json
{ "source": "...", "type": "...", "payload": { } }
  • Games moeten source instellen op playnova-game
  • De host antwoordt met source playnova-host

Advertentieformaten:

  • Rewarded — speler opt-in (revive, dubbele beloning, gratis item). Geef beloningen alleen na ads.rewarded_completed.
  • Interstitial — natuurlijke pauzes (level voltooid / game over). Nooit tijdens invoer.
  • Banner — host-eigen strip; game vraagt alleen show/hide aan.

Aanbevolen placements ​

Geef altijd een stabiele placement-string door voor analytics en limieten. Gebruik de platformnamen hieronder:

PlacementUse case
reviveDoorgaan na falen
double_rewardBonus einde level
free_item / unlockVerbruiksitem of content unlock
level_complete / level_start / game_over / pauseInterstitial-momenten
banner_bottom / banner_topBanner-slots

Integratiestroom ​

  1. Roep bij een natuurlijke pauze ads.load_* aan met placement (en optionele requestId).
  2. Wacht op ads.*_loaded (of behandel *_failed en ga door zonder advertenties).
  3. Roep ads.show_* aan met dezelfde requestId / placement.
  4. Voor rewarded: wijzig gamestatus alleen bij ads.rewarded_completed. Bij dismissed/failed geen beloning.

Bridge-berichttypen ​

Canonieke type-strings staan in playnova-web (ads-bridge). Houd je gamepakket aligned met deze exacte waarden.

Game → host ​

typeDoel
ads.load_rewardedRewarded-inventaris preloaden
ads.show_rewardedRewarded tonen (beloning alleen na voltooiing)
ads.load_interstitialInterstitial preloaden
ads.show_interstitialInterstitial tonen bij pauze
ads.show_bannerHost Banner zichtbaar aanvragen
ads.hide_bannerHost Banner verbergen
ads.preloadMeerdere formaten preloaden
ads.get_banner_heightBannerhoogte opvragen voor layout

Host → game ​

typeDoel
ads.rewarded_loadedRewarded klaar om te tonen
ads.rewarded_failedRewarded load/show mislukt
ads.rewarded_completedRewarded voltooid — veilig om te geven
ads.rewarded_dismissedRewarded vroeg gesloten — niet geven
ads.interstitial_loadedInterstitial klaar
ads.interstitial_failedInterstitial mislukt
ads.interstitial_closedInterstitial gesloten
ads.banner_shownBanner zichtbaar
ads.banner_hiddenBanner verborgen
ads.banner_failedBanner mislukt

Kopieer-plak helper ​

Plak in je index.html (of module). Vervang beloningsverlening door je eigen gamelogica.

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);
  });
}
// Voorbeeld: revive-stroom
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') {
    // beloning ALLEEN hier geven
  }
});

Productieregels ​

  • Geen auto-klik, geforceerde loops of verbergen van Close / Skip.
  • Geen beloningen zonder ads.rewarded_completed voor die requestId.
  • Respecteer host-fouten: lege inventaris, ga soepel verder.
  • Prefereer load vóór show voor minder wachten bij trigger.
  • Pakketten zonder third-party advertentie-SDK's, trackers of pop-under scripts.
  • Interstitial-frequentie wordt afgedwongen door host; show-spam kan worden genegeerd.

FAQ ​

Kan ik AdMob / Unity Ads in de zip gebruiken? ​

Nee. PlayNova aggregeert vraag op de host. Andere SDK's embedden faalt review en breekt iframe sandbox-aannames.

Wat als de host niet antwoordt? ​

Behandel stilte of *_failed als no-fill. Ga door zonder speler te blokkeren met eindeloze spinner.

Waar zie ik omzet? ​

Na live advertenties in productie gaan impressions en omzet naar maker-analytics. Afrekening volgens programmavoorwaarden.


Host-bridge is live op de speelpagina. Berichttypen hierboven zijn het productiecontract — implementeer ze nu.

PlayNova documentatie voor makers