Pelinsisäinen mainosintegraatio
Viimeksi päivitetty: 2026-08-11
Integroi Banner-, interstitial- ja rewarded-mainokset PlayNova-isäntäbridgen kautta. Pelisi toimii iframessa ja kommunikoi isännän kanssa postMessage-viestillä — älä upota kolmannen osapuolen mainos-SDK:ita pakettiin.
Miten monetisointi toimii
PlayNova täyttää mainokset isäntäpuolella ja jakaa tulot sertifioiduille luojille (oletus 70% luojalle). Pelit pyytävät vain show/load; isäntä hallitsee varastoa, tiheysrajoja ja impression/klik-raportointia.
Kuori jokaiselle viestille:
{ "source": "...", "type": "...", "payload": { } }- Pelien on asetettava
sourcearvoonplaynova-game - Isäntä vastaa
sourceplaynova-host
Mainosformaatit:
- Rewarded — pelaajan opt-in (revive, kaksinkertainen palkinto, ilmainen esine). Anna palkinnot vain
ads.rewarded_completedjälkeen. - Interstitial — luonnolliset tauot (taso suoritettu / game over). Ei koskaan syötteen aikana.
- Banner — isännän omistama kaista; peli pyytää vain show/hide.
Suositellut sijainnit
Välitä aina vakaa placement-merkkijono analytiikkaa ja rajoja varten. Käytä alla olevia alustanimiä:
| Placement | Käyttötapa |
|---|---|
revive | Jatka epäonnistumisen jälkeen |
double_reward | Bonu tason lopussa |
free_item / unlock | Kulutustavara tai sisällön avaus |
level_complete / level_start / game_over / pause | Interstitial-hetket |
banner_bottom / banner_top | Banner-paikat |
Integraatiovirta
- Luonnollisella tauolla kutsu
ads.load_*parametrillaplacement(ja valinnainenrequestId). - Odota
ads.*_loaded(tai käsittele*_failedja jatka ilman mainoksia). - Kutsu
ads.show_*samallarequestId/placement. - Rewardedissa muuta pelitilaa vain
ads.rewarded_completed-kohdassa. dismissed/failed — älä anna palkintoa.
Bridge-viestityypit
Kanoniset type-merkkijonot on määritelty playnova-web-projektissa (ads-bridge). Pidä pelipaketti linjassa näiden tarkkojen arvojen kanssa.
Peli → isäntä
| type | Tarkoitus |
|---|---|
ads.load_rewarded | Esilataa rewarded-varasto |
ads.show_rewarded | Näytä rewarded (anna vain valmistumisen jälkeen) |
ads.load_interstitial | Esilataa interstitial |
ads.show_interstitial | Näytä interstitial tauolla |
ads.show_banner | Pyydä isäntä-Banner näkyviin |
ads.hide_banner | Piilota isäntä-Banner |
ads.preload | Esilataa useita formaatteja |
ads.get_banner_height | Kysy Banner-korkeus layoutia varten |
Isäntä → peli
| type | Tarkoitus |
|---|---|
ads.rewarded_loaded | Rewarded valmis näytettäväksi |
ads.rewarded_failed | Rewarded load/show epäonnistui |
ads.rewarded_completed | Rewarded valmis — turvallista antaa |
ads.rewarded_dismissed | Rewarded suljettu aikaisin — älä anna |
ads.interstitial_loaded | Interstitial valmis |
ads.interstitial_failed | Interstitial epäonnistui |
ads.interstitial_closed | Interstitial suljettu |
ads.banner_shown | Banner näkyvissä |
ads.banner_hidden | Banner piilotettu |
ads.banner_failed | Banner epäonnistui |
Kopioi-liitä-apuri
Liitä index.html-tiedostoon (tai moduuliin). Korvaa palkinnon antaminen omalla pelilogiikallasi.
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);
});
}
// Esimerkki: revive-virta
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') {
// anna palkinto VAIN täällä
}
});Tuotantosäännöt
- Ei automaattista klikkausta, pakotettuja silmukoita tai Close / Skip -piilotusta.
- Älä anna palkintoja ilman
ads.rewarded_completedtällerequestId. - Kunnioita isäntävirheitä: tyhjä varasto, jatka peliä sujuvasti.
- Suosi load ennen show'ta lyhyemmän odotuksen vuoksi.
- Paketit ilman kolmannen osapuolen mainos-SDK:ita, seuraimia tai pop-under-skriptejä.
- Interstitial-tiheyden isäntä pakottaa; show-spam voidaan jättää huomiotta.
UKK
Voinko käyttää AdMob / Unity Ads zip-tiedostossa?
Et. PlayNova kokoaa kysynnän isännällä. Muiden SDK:iden upotus epäonnistuu tarkastuksessa ja rikkoo iframe-sandbox-oletukset.
Entä jos isäntä ei vastaa?
Käsittele hiljaisuus tai *_failed no-fillinä. Jatka peliä ilman loputonta spinneriä.
Missä näen tulot?
Tuotannon mainosten jälkeen impressionit ja tulot menevät luojan analytiikkaan. Tilitys ohjelman ehtojen mukaan.
Isäntäbridge on käytössä pelisivulla. Yllä olevat viestityypit ovat tuotantosopimus — toteuta ne nyt.
