Skip to content

Интеграция на реклами в играта ​

Последна актуализация: 2026-08-11

Интегрирайте Banner, interstitial и rewarded реклами чрез PlayNova host bridge. Играта работи в iframe и комуникира с хоста чрез postMessage — не вграждайте рекламни SDK на трети страни в пакета.

Как работи монетизацията ​

PlayNova попълва реклами от страна на хоста и споделя приходи с сертифицирани създатели (по подразбиране 70% създател). Игрите само искат show/load; хостът управлява инвентара, честотните ограничения и отчитането impression/click.

Плик за всяко съобщение:

json
{ "source": "...", "type": "...", "payload": { } }
  • Игрите трябва да зададат source на playnova-game
  • Хостът отговаря с source playnova-host

Формати на реклами:

  • Rewarded — opt-in на играча (revive, двойна награда, безплатен предмет). Давайте награди само след ads.rewarded_completed.
  • Interstitial — естествени паузи (завършен level / game over). Никога по време на въвеждане.
  • Banner — лента на хоста; играта само иска show/hide.

Препоръчани разположения ​

Винаги предавайте стабилен placement низ за аналитика и ограничения. Предпочитайте имената на платформата по-долу:

PlacementСлучай на употреба
reviveПродължаване след неуспех
double_rewardБонус в края на level
free_item / unlockConsumable или отключване на съдържание
level_complete / level_start / game_over / pauseМоменти interstitial
banner_bottom / banner_topСлотове Banner

Поток на интеграция ​

  1. При естествена пауза извикайте ads.load_* с placement (и опционален requestId).
  2. Изчакайте ads.*_loaded (или обработете *_failed и продължете без реклами).
  3. Извикайте ads.show_* със същия requestId / placement.
  4. За rewarded променяйте състоянието на играта само при ads.rewarded_completed. dismissed/failed — не давайте награда.

Типове bridge съобщения ​

Каноничните type низове са дефинирани в playnova-web (ads-bridge). Подравнете пакета на играта с тези точни стойности.

Игра → хост ​

typeЦел
ads.load_rewardedПредварително зареждане на rewarded инвентар
ads.show_rewardedПоказване rewarded (даване само след завършване)
ads.load_interstitialПредварително зареждане interstitial
ads.show_interstitialПоказване interstitial при пауза
ads.show_bannerЗаявка Banner на хоста видим
ads.hide_bannerСкриване Banner на хоста
ads.preloadПредварително зареждане на няколко формата
ads.get_banner_heightЗапитване височина Banner за layout

Хост → игра ​

typeЦел
ads.rewarded_loadedRewarded готов за показване
ads.rewarded_failedRewarded load/show неуспешен
ads.rewarded_completedRewarded завършен — безопасно да се даде
ads.rewarded_dismissedRewarded затворен рано — не давайте
ads.interstitial_loadedInterstitial готов
ads.interstitial_failedInterstitial неуспешен
ads.interstitial_closedInterstitial затворен
ads.banner_shownBanner видим
ads.banner_hiddenBanner скрит
ads.banner_failedBanner неуспешен

Helper копиране-вмъкване ​

Поставете в index.html (или модул). Заменете даването на награда със собствена логика на играта.

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);
  });
}
// Пример: 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') {
    // давайте награда САМО тук
  }
});

Production правила ​

  • Без auto-click, принудителни цикли или скриване на Close / Skip.
  • Не давайте награди без ads.rewarded_completed за този requestId.
  • Уважавайте грешки на хоста: празен инвентар, продължете играта плавно.
  • Предпочитайте load преди show за по-малко чакане.
  • Пакети без рекламни SDK на трети страни, tracker-и или pop-under скриптове.
  • Честотата interstitial се налага от хоста; spam show може да се игнорира.

ЧЗВ ​

Мога ли да използвам AdMob / Unity Ads в zip? ​

Не. PlayNova агрегира търсенето на хоста. Вграждането на други SDK проваля review и нарушава iframe sandbox предположенията.

Какво ако хостът не отговори? ​

Третирайте тишина или *_failed като no-fill. Продължете играта без блокиране с безкраен spinner.

Къде виждам приходите? ​

След live реклами в production impression и приходи отиват в аналитика на създателя. Уреждане според условията на програмата.


Host bridge е live на play страницата. Типовете съобщения по-горе са production договор — имплементирайте ги сега.

Документация PlayNova за създатели