Skip to content

Integrare reclame in-game ​

Ultima actualizare: 2026-08-11

Integrați reclame Banner, interstitial și rewarded prin puntea gazdă PlayNova. Jocul rulează într-un iframe și comunică cu gazda via postMessage — nu încorporați SDK-uri publicitare terțe în pachet.

Cum funcționează monetizarea ​

PlayNova umple reclamele pe partea gazdă și împarte veniturile cu creatorii certificați (implicit 70% creator). Jocurile cer doar show/load; gazda gestionează inventarul, limitele de frecvență și raportarea impression/click.

Plic pentru fiecare mesaj:

json
{ "source": "...", "type": "...", "payload": { } }
  • Jocurile trebuie să seteze source la playnova-game
  • Gazda răspunde cu source playnova-host

Formate reclamă:

  • Rewarded — opt-in jucător (revive, recompensă dublă, obiect gratuit). Acordați recompense doar după ads.rewarded_completed.
  • Interstitial — pauze naturale (nivel complet / game over). Niciodată în timpul inputului.
  • Banner — bandă deținută de gazdă; jocul cere doar show/hide.

Plasamente recomandate ​

Transmiteți mereu un șir placement stabil pentru analize și limite. Preferați numele platformei de mai jos:

PlacementCaz de utilizare
reviveContinuare după eșec
double_rewardBonus la final de nivel
free_item / unlockConsumabil sau deblocare conținut
level_complete / level_start / game_over / pauseMomente interstitial
banner_bottom / banner_topSloturi Banner

Flux integrare ​

  1. La o pauză naturală, apelați ads.load_* cu placement (și requestId opțional).
  2. Așteptați ads.*_loaded (sau tratați *_failed și continuați fără reclame).
  3. Apelați ads.show_* cu același requestId / placement.
  4. Pentru rewarded, modificați starea jocului doar la ads.rewarded_completed. dismissed/failed — nu acordați recompensa.

Tipuri mesaje bridge ​

Șirurile type canonice sunt definite în playnova-web (ads-bridge). Aliniați pachetul jocului la aceste valori exacte.

Joc → gazdă ​

typeScop
ads.load_rewardedPreîncărcare inventar rewarded
ads.show_rewardedAfișare rewarded (acordare doar după finalizare)
ads.load_interstitialPreîncărcare interstitial
ads.show_interstitialAfișare interstitial la pauză
ads.show_bannerCerere Banner gazdă vizibil
ads.hide_bannerAscundere Banner gazdă
ads.preloadPreîncărcare formate multiple
ads.get_banner_heightInterogare înălțime Banner pentru layout

Gazdă → joc ​

typeScop
ads.rewarded_loadedRewarded gata de afișare
ads.rewarded_failedRewarded load/show eșuat
ads.rewarded_completedRewarded finalizat — sigur de acordat
ads.rewarded_dismissedRewarded închis devreme — nu acordați
ads.interstitial_loadedInterstitial gata
ads.interstitial_failedInterstitial eșuat
ads.interstitial_closedInterstitial închis
ads.banner_shownBanner vizibil
ads.banner_hiddenBanner ascuns
ads.banner_failedBanner eșuat

Helper copiere-lipire ​

Lipiți în index.html (sau modul). Înlocuiți acordarea recompensei cu logica jocului.

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);
  });
}
// Exemplu: flux 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') {
    // acordați recompensa DOAR aici
  }
});

Reguli producție ​

  • Fără auto-click, bucle forțate sau ascundere Close / Skip.
  • Nu acordați recompense fără ads.rewarded_completed pentru acel requestId.
  • Respectați eșecurile gazdei: inventar gol, continuați jocul elegant.
  • Preferați load înainte de show pentru mai puțină așteptare.
  • Pachete fără SDK-uri publicitare terțe, trackere sau scripturi pop-under.
  • Frecvența interstitial este impusă de gazdă; spam show poate fi ignorat.

Întrebări frecvente ​

Pot folosi AdMob / Unity Ads în zip? ​

Nu. PlayNova agregă cererea pe gazdă. Încorporarea altor SDK-uri eșuează review-ul și încalcă presupunerile sandbox iframe.

Ce dacă gazda nu răspunde? ​

Tratați tăcerea sau *_failed ca no-fill. Continuați jocul fără a bloca jucătorul cu spinner infinit.

Unde văd veniturile? ​

După reclame live în producție, impression și venituri merg la analize creator. Decontare conform termenilor programului.


Puntea gazdă este live pe pagina de joc. Tipurile de mesaje de mai sus sunt contractul de producție — implementați acum.

Documentație PlayNova pentru creatori