Skip to content

In-game інтеграція реклами ​

Останнє оновлення: 2026-08-11

Інтегруйте Banner, interstitial та rewarded через host bridge PlayNova. Гра працює в iframe і спілкується з хостом через postMessage — не вбудовуйте сторонні рекламні SDK у пакет.

Як працює монетизація ​

PlayNova показує рекламу на стороні хоста та ділить дохід із сертифікованими творцями (за замовчуванням 70% творцю). Ігри лише запитують show/load; інвентар, частотні ліміти та звіти impressions/clicks обробляє хост.

Конверт для кожного повідомлення:

json
{ "source": "...", "type": "...", "payload": { } }
  • Ігри повинні встановити source на playnova-game
  • Хост відповідає з source playnova-host

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

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

Рекомендовані placements ​

Завжди передавайте стабільний рядок placement для аналітики та лімітів. Віддавайте перевагу іменам платформи нижче:

PlacementСценарій
reviveПродовжити після провалу
double_rewardБонус наприкінці рівня
free_item / unlockРозхідник або розблокування контенту
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_failedПомилка load/show rewarded
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.
  • Поважайте помилки хоста: порожній інвентар — продовжуйте гру.
  • Попередньо завантажуйте перед show, щоб гравець менше чекав.
  • Пакети без сторонніх рекламних SDK, трекерів і pop-under скриптів.
  • Частота interstitial контролюється хостом; spam show може ігноруватися.

FAQ ​

Чи можна використовувати AdMob / Unity Ads у zip? ​

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

Що якщо хост не відповідає? ​

Вважайте тишу або *_failed no-fill. Продовжуйте гру без нескінченного spinner.

Де дивитися дохід? ​

Після запуску реклами в production impressions і дохід йдуть у аналітику творця. Розрахунки за умовами програми.


Host bridge активний на play-сторінці. Типи повідомлень вище — production-контракт — реалізуйте їх зараз.

Документація PlayNova для творців