Skip to content

Oyun içi reklam entegrasyonu ​

Son güncelleme: 2026-08-11

PlayNova host köprüsü üzerinden Banner, interstitial ve rewarded reklamları entegre edin. Oyununuz bir iframe içinde çalışır ve host ile postMessage ile konuşur — pakete üçüncü taraf reklam SDK'ları gömmeyin.

Monetizasyon nasıl çalışır ​

PlayNova reklamları host tarafında doldurur ve sertifikalı içerik üreticileriyle geliri paylaşır (varsayılan %70 içerik üretici payı). Oyunlar yalnızca show/load ister; envanter, sıklık sınırları ve impression/tıklama raporlamasını host yönetir.

Her mesaj için zarf:

json
{ "source": "...", "type": "...", "payload": { } }
  • Oyunlar source değerini playnova-game olarak ayarlamalıdır
  • Host source playnova-host ile yanıt verir

Reklam formatları:

  • Rewarded — oyuncu opt-in (revive, çift ödül, ücretsiz eşya). Ödülleri yalnızca ads.rewarded_completed sonrası verin.
  • Interstitial — doğal molalar (seviye tamamlandı / game over). Girdi sırasında asla.
  • Banner — host sahipli şerit; oyun yalnızca show/hide ister.

Önerilen yerleşimler ​

Analitik ve sınırlar için her zaman kararlı bir placement dizesi geçirin. Aşağıdaki platform adlarını tercih edin:

PlacementKullanım durumu
reviveBaşarısızlıktan sonra devam
double_rewardSeviye sonu bonusu
free_item / unlockTüketilebilir veya içerik kilidi açma
level_complete / level_start / game_over / pauseInterstitial anları
banner_bottom / banner_topBanner yuvaları

Entegrasyon akışı ​

  1. Doğal bir molada ads.load_* çağırın (placement ve isteğe bağlı requestId ile).
  2. ads.*_loaded bekleyin (veya *_failed işleyin ve reklamsız devam edin).
  3. Aynı requestId / placement ile ads.show_* çağırın.
  4. Rewarded için oyun durumunu yalnızca ads.rewarded_completed üzerinde değiştirin. dismissed/failed durumunda ödül vermeyin.

Bridge mesaj türleri ​

Kanonik type dizeleri playnova-web (ads-bridge) içinde tanımlıdır. Oyun paketinizi bu tam değerlerle hizalayın.

Oyun → host ​

typeAmaç
ads.load_rewardedRewarded envanterini önceden yükle
ads.show_rewardedRewarded göster (yalnızca tamamlandıktan sonra ver)
ads.load_interstitialInterstitial önceden yükle
ads.show_interstitialMolada interstitial göster
ads.show_bannerHost Banner görünürlüğü iste
ads.hide_bannerHost Banner gizle
ads.preloadBirden fazla formatı önceden yükle
ads.get_banner_heightLayout için Banner yüksekliğini sorgula

Host → oyun ​

typeAmaç
ads.rewarded_loadedRewarded gösterime hazır
ads.rewarded_failedRewarded load/show başarısız
ads.rewarded_completedRewarded tamamlandı — vermek güvenli
ads.rewarded_dismissedRewarded erken kapatıldı — verme
ads.interstitial_loadedInterstitial hazır
ads.interstitial_failedInterstitial başarısız
ads.interstitial_closedInterstitial kapandı
ads.banner_shownBanner görünür
ads.banner_hiddenBanner gizli
ads.banner_failedBanner başarısız

Kopyala-yapıştır yardımcısı ​

index.html (veya modül) içine yapıştırın. Ödül vermeyi kendi oyun mantığınızla değiştirin.

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);
  });
}
// Örnek: revive akışı
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') {
    // ödülü YALNIZCA burada ver
  }
});

Üretim kuralları ​

  • Otomatik tıklama, zorunlu döngü veya Close / Skip kontrollerini gizleme yok.
  • Bu requestId için ads.rewarded_completed almadan ödül vermeyin.
  • Host hatalarına saygı: envanter boşsa oyunu zarifçe sürdürün.
  • Tetik anında daha az beklemek için show öncesinde load tercih edin.
  • Paketlerde üçüncü taraf reklam SDK, izleyici veya pop-under script yok.
  • Interstitial sıklığı host tarafından uygulanır; show spam'i yok sayılabilir.

SSS ​

Zip içinde AdMob / Unity Ads kullanabilir miyim? ​

Hayır. PlayNova talebi host'ta toplar. Diğer SDK'ları gömmek incelemeyi başarısız kılar ve iframe sandbox varsayımlarını bozar.

Host yanıt vermezse? ​

Sessizliği veya *_failed durumunu no-fill olarak değerlendirin. Oyuncuyu sonsuz spinner'da bloklamadan devam edin.

Geliri nerede görürüm? ​

Reklamlar üretimde yayına alındıktan sonra impression ve gelir içerik üretici analitiği içine akar. Ödeme içerik üretici programı şartlarına göre yapılır.


Host köprüsü oyun sayfasında canlı. Yukarıdaki mesaj türleri üretim sözleşmesidir — şimdi uygulayın.

PlayNova içerik üretici dokümantasyonu