Annonsering i spelet
Senast uppdaterad: 2026-08-11
Integrera Banner-, interstitial- och rewarded-annonser via PlayNova-värdens bridge. Ditt spel körs i en iframe och kommunicerar med värden via postMessage — bädda inte in tredjepartsannons-SDK:er i paketet.
Så fungerar intäktsgenerering
PlayNova fyller annonser på värdsidan och delar intäkter med certifierade skapare (standard 70% skapare). Spel begär bara show/load; värden hanterar lager, frekvensgränser och impression/klick-rapportering.
Kuvert för varje meddelande:
{ "source": "...", "type": "...", "payload": { } }- Spel måste sätta
sourcetillplaynova-game - Värden svarar med
sourceplaynova-host
Annonsformat:
- Rewarded — spelaropt-in (revive, dubbel belöning, gratis föremål). Ge belöningar endast efter
ads.rewarded_completed. - Interstitial — naturliga pauser (nivå klar / game over). Aldrig mitt i inmatning.
- Banner — värdägd remsa; spelet begär bara show/hide.
Rekommenderade placeringar
Skicka alltid en stabil placement-sträng för analys och gränser. Föredra plattformsnamnen nedan:
| Placement | Användningsfall |
|---|---|
revive | Fortsätt efter misslyckande |
double_reward | Bonus i slutet av nivå |
free_item / unlock | Förbrukningsvara eller innehålls-upplåsning |
level_complete / level_start / game_over / pause | Interstitial-ögonblick |
banner_bottom / banner_top | Banner-platser |
Integrationsflöde
- Vid naturlig paus, anropa
ads.load_*medplacement(och valfrittrequestId). - Vänta på
ads.*_loaded(eller hantera*_failedoch fortsätt utan annonser). - Anropa
ads.show_*med sammarequestId/placement. - För rewarded, ändra spelläge endast vid
ads.rewarded_completed. dismissed/failed — ge ingen belöning.
Bridge-meddelandetyper
Kanoniska type-strängar definieras i playnova-web (ads-bridge). Håll ditt spelpaket aligned med dessa exakta värden.
Spel → värd
| type | Syfte |
|---|---|
ads.load_rewarded | Förladda rewarded-lager |
ads.show_rewarded | Visa rewarded (ge endast efter slutförande) |
ads.load_interstitial | Förladda interstitial |
ads.show_interstitial | Visa interstitial vid paus |
ads.show_banner | Begär synlig värd-Banner |
ads.hide_banner | Dölj värd-Banner |
ads.preload | Förladda flera format |
ads.get_banner_height | Fråga Banner-höjd för layout |
Värd → spel
| type | Syfte |
|---|---|
ads.rewarded_loaded | Rewarded redo att visas |
ads.rewarded_failed | Rewarded load/show misslyckades |
ads.rewarded_completed | Rewarded slutförd — säkert att ge |
ads.rewarded_dismissed | Rewarded stängd tidigt — ge inte |
ads.interstitial_loaded | Interstitial redo |
ads.interstitial_failed | Interstitial misslyckades |
ads.interstitial_closed | Interstitial stängd |
ads.banner_shown | Banner synlig |
ads.banner_hidden | Banner dold |
ads.banner_failed | Banner misslyckades |
Kopiera-klistra-in-hjälpare
Klistra in i index.html (eller modul). Ersätt belöningsgivning med din egen spellogik.
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);
});
}
// Exempel: revive-flöde
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') {
// ge belöning ENDAST här
}
});Produktionsregler
- Ingen auto-klick, tvingade loopar eller dölj Close / Skip.
- Ge inga belöningar utan
ads.rewarded_completedför detrequestId. - Respektera värdfel: tomt lager, fortsätt spelet smidigt.
- Föredra load före show för kortare väntan vid trigger.
- Paket utan tredjepartsannons-SDK:er, trackers eller pop-under-skript.
- Interstitial-frekvens verkställs av värden; show-spam kan ignoreras.
FAQ
Kan jag använda AdMob / Unity Ads i zip?
Nej. PlayNova aggregerar efterfrågan på värden. Inbäddning av andra SDK:er misslyckas granskning och bryter iframe sandbox-antaganden.
Vad om värden inte svarar?
Behandla tystnad eller *_failed som no-fill. Fortsätt spelet utan att blockera spelaren med oändlig spinner.
Var ser jag intäkter?
Efter live-annonser i produktion går impressions och intäkter till skaparanalys. Avräkning enligt programvillkor.
Värd-bridge är live på spelsidan. Meddelandetyperna ovan är produktionskontraktet — implementera dem nu.
