Annonseintegrasjon i spillet
Sist oppdatert: 2026-08-11
Integrer Banner-, interstitial- og rewarded-annonser via PlayNova-vertens bro. Spillet ditt kjører i en iframe og kommuniserer med verten via postMessage — ikke embed tredjeparts annonse-SDK-er i pakken.
Slik fungerer inntektsgenerering
PlayNova fyller annonser på vertsiden og deler inntekter med sertifiserte skapere (standard 70% skaper). Spill ber kun om show/load; verten håndterer lager, frekvensgrenser og impression/klikk-rapportering.
Konvolutt for hver melding:
{ "source": "...", "type": "...", "payload": { } }- Spill må sette
sourcetilplaynova-game - Verten svarer med
sourceplaynova-host
Annonseformater:
- Rewarded — spiller opt-in (revive, dobbel belønning, gratis gjenstand). Gi belønninger kun etter
ads.rewarded_completed. - Interstitial — naturlige pauser (nivå fullført / game over). Aldri midt i input.
- Banner — vertseid stripe; spillet ber kun om show/hide.
Anbefalte plasseringer
Send alltid en stabil placement-streng for analyse og grenser. Foretrekk plattformnavnene nedenfor:
| Placement | Brukstilfelle |
|---|---|
revive | Fortsett etter feil |
double_reward | Bonus ved nivåslutt |
free_item / unlock | Forbruksvare eller innholdsopplåsning |
level_complete / level_start / game_over / pause | Interstitial-øyeblikk |
banner_bottom / banner_top | Banner-plasser |
Integrasjonsflyt
- Ved naturlig pause, kall
ads.load_*medplacement(og valgfrirequestId). - Vent på
ads.*_loaded(eller håndter*_failedog fortsett uten annonser). - Kall
ads.show_*med sammerequestId/placement. - For rewarded, endre spilltilstand kun ved
ads.rewarded_completed. dismissed/failed — ikke gi belønning.
Bridge-meldingstyper
Kanoniske type-strenger er definert i playnova-web (ads-bridge). Hold spillpakken aligned med disse eksakte verdiene.
Spill → vert
| type | Formål |
|---|---|
ads.load_rewarded | Forhåndslast rewarded-lager |
ads.show_rewarded | Vis rewarded (gi kun etter fullføring) |
ads.load_interstitial | Forhåndslast interstitial |
ads.show_interstitial | Vis interstitial ved pause |
ads.show_banner | Be om synlig vert-Banner |
ads.hide_banner | Skjul vert-Banner |
ads.preload | Forhåndslast flere formater |
ads.get_banner_height | Spør Banner-høyde for layout |
Vert → spill
| type | Formål |
|---|---|
ads.rewarded_loaded | Rewarded klar til visning |
ads.rewarded_failed | Rewarded load/show feilet |
ads.rewarded_completed | Rewarded fullført — trygt å gi |
ads.rewarded_dismissed | Rewarded lukket tidlig — ikke gi |
ads.interstitial_loaded | Interstitial klar |
ads.interstitial_failed | Interstitial feilet |
ads.interstitial_closed | Interstitial lukket |
ads.banner_shown | Banner synlig |
ads.banner_hidden | Banner skjult |
ads.banner_failed | Banner feilet |
Kopier-lim inn-hjelper
Lim inn i index.html (eller modul). Erstatt belønningsgivning med din egen spillelogikk.
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);
});
}
// Eksempel: revive-flyt
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') {
// gi belønning KUN her
}
});Produksjonsregler
- Ingen auto-klikk, tvungne løkker eller skjul Close / Skip.
- Gi ingen belønninger uten
ads.rewarded_completedfor detrequestId. - Respekter vertfeil: tomt lager, fortsett spillet smidig.
- Foretrekk load før show for kortere ventetid.
- Pakker uten tredjeparts annonse-SDK-er, trackere eller pop-under scripts.
- Interstitial-frekvens håndheves av verten; show-spam kan ignoreres.
FAQ
Kan jeg bruke AdMob / Unity Ads i zip?
Nei. PlayNova aggregerer etterspørsel på verten. Innebygging av andre SDK-er feiler review og bryter iframe sandbox-antagelser.
Hva hvis verten ikke svarer?
Behandle stillhet eller *_failed som no-fill. Fortsett spillet uten å blokkere spilleren med uendelig spinner.
Hvor ser jeg inntekter?
Etter live-annonser i produksjon går impressions og inntekter til skaperanalyse. Oppgjør etter programvilkår.
Vert-bro er live på spillsiden. Meldingstypene ovenfor er produksjonskontrakten — implementer dem nå.
