Skip to content

Integracja reklam in-game ​

Ostatnia aktualizacja: 2026-08-11

Integruj reklamy Banner, interstitial i rewarded przez most hosta PlayNova. Gra działa w iframe i komunikuje się z hostem przez postMessage — nie osadzaj SDK reklamowych firm trzecich w pakiecie.

Jak działa monetyzacja ​

PlayNova serwuje reklamy po stronie hosta i dzieli przychody z certyfikowanymi twórcami (domyślnie 70% twórcy). Gry tylko żądają show/load; host zarządza inventory, limitami częstotliwości i raportowaniem impression/click.

Koperta dla każdej wiadomości:

json
{ "source": "...", "type": "...", "payload": { } }
  • Gry muszą ustawić source na playnova-game
  • Host odpowiada z source playnova-host

Formaty reklam:

  • Rewarded — opt-in gracza (revive, podwójna nagroda, darmowy przedmiot). Przyznawaj nagrody tylko po ads.rewarded_completed.
  • Interstitial — naturalne przerwy (poziom ukończony / game over). Nigdy w trakcie inputu.
  • Banner — pasek hosta; gra tylko żąda show/hide.

Zalecane placementy ​

Zawsze przekazuj stabilny string placement dla analityki i limitów. Preferuj nazwy platformy poniżej:

PlacementPrzypadek użycia
reviveKontynuacja po porażce
double_rewardBonus na końcu poziomu
free_item / unlockConsumable lub odblokowanie treści
level_complete / level_start / game_over / pauseMomenty interstitial
banner_bottom / banner_topSloty Banner

Przepływ integracji ​

  1. W naturalnej przerwie wywołaj ads.load_* z placement (i opcjonalnym requestId).
  2. Czekaj na ads.*_loaded (lub obsłuż *_failed i kontynuuj bez reklam).
  3. Wywołaj ads.show_* z tym samym requestId / placement.
  4. Dla rewarded zmieniaj stan gry tylko na ads.rewarded_completed. Przy dismissed/failed nie przyznawaj nagrody.

Typy wiadomości bridge ​

Kanoniczne stringi type są zdefiniowane w playnova-web (ads-bridge). Dopasuj pakiet gry do tych dokładnych wartości.

Gra → host ​

typeCel
ads.load_rewardedWstępne ładowanie inventory rewarded
ads.show_rewardedPokaż rewarded (przyznaj tylko po ukończeniu)
ads.load_interstitialWstępne ładowanie interstitial
ads.show_interstitialPokaż interstitial w przerwie
ads.show_bannerŻądaj widocznego Banner hosta
ads.hide_bannerUkryj Banner hosta
ads.preloadWstępne ładowanie wielu formatów
ads.get_banner_heightZapytaj wysokość Banner dla layoutu

Host → gra ​

typeCel
ads.rewarded_loadedRewarded gotowy do pokazania
ads.rewarded_failedBłąd load/show rewarded
ads.rewarded_completedRewarded ukończony — bezpiecznie przyznać
ads.rewarded_dismissedRewarded zamknięty wcześnie — nie przyznawać
ads.interstitial_loadedInterstitial gotowy
ads.interstitial_failedInterstitial nieudany
ads.interstitial_closedInterstitial zamknięty
ads.banner_shownBanner widoczny
ads.banner_hiddenBanner ukryty
ads.banner_failedBanner nieudany

Helper kopiuj-wklej ​

Wklej do index.html (lub modułu). Zamień przyznawanie nagrody na własną logikę gry.

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);
  });
}
// Przykład: przepływ 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') {
    // przyznaj nagrodę TYLKO tutaj
  }
});

Zasady produkcji ​

  • Bez auto-click, wymuszonych pętli i zasłaniania Close / Skip.
  • Nie przyznawaj nagród bez ads.rewarded_completed dla tego requestId.
  • Szanuj błędy hosta: puste inventory, kontynuuj grę normalnie.
  • Preferuj load przed show, by gracz mniej czekał.
  • Pakiety bez SDK reklamowych firm trzecich, trackerów i skryptów pop-under.
  • Częstotliwość interstitial jest wymuszana przez host; spam show może być ignorowany.

FAQ ​

Czy mogę użyć AdMob / Unity Ads w zip? ​

Nie. PlayNova agreguje popyt na hoście. Osadzenie innych SDK nie przejdzie review i łamie założenia sandbox iframe.

Co jeśli host nie odpowiada? ​

Traktuj ciszę lub *_failed jako no-fill. Kontynuuj grę bez blokowania gracza nieskończonym spinnerem.

Gdzie widzę przychody? ​

Po uruchomieniu reklam w produkcji impression i przychody trafiają do analityki twórcy. Rozliczenie według warunków programu.


Most hosta jest aktywny na stronie gry. Typy wiadomości powyżej to kontrakt produkcyjny — zaimplementuj je teraz.

Dokumentacja PlayNova dla twórców