Skip to content

Ενσωμάτωση διαφημίσεων in-game ​

Τελευταία ενημέρωση: 2026-08-11

Ενσωματώστε διαφημίσεις Banner, interstitial και rewarded μέσω της γέφυρας host PlayNova. Το παιχνίδι τρέχει σε iframe και επικοινωνεί με τον host μέσω postMessage — μην ενσωματώνετε SDK διαφημίσεων τρίτων στο πακέτο.

Πώς λειτουργεί η monetization ​

Το PlayNova γεμίζει διαφημίσεις στην πλευρά host και μοιράζει έσοδα με πιστοποιημένους δημιουργούς (προεπιλογή 70% δημιουργός). Τα παιχνίδια ζητούν μόνο show/load· ο host διαχειρίζεται inventory, όρια συχνότητας και αναφορές impression/click.

Φάκελος για κάθε μήνυμα:

json
{ "source": "...", "type": "...", "payload": { } }
  • Τα παιχνίδια πρέπει να ορίσουν source σε playnova-game
  • Ο host απαντά με source playnova-host

Μορφές διαφημίσεων:

  • Rewarded — opt-in παίκτη (revive, διπλή ανταμοιβή, δωρεάν αντικείμενο). Δώστε ανταμοιβές μόνο μετά το ads.rewarded_completed.
  • Interstitial — φυσικές παύσεις (επίπεδο ολοκληρώθηκε / game over). Ποτέ κατά την εισαγωγή.
  • Banner — λωρίδα του host· το παιχνίδι ζητά μόνο show/hide.

Συνιστώμενες θέσεις ​

Περάστε πάντα σταθερό string placement για αναλυτικά και όρια. Προτιμήστε τα ονόματα πλατφόρμας παρακάτω:

PlacementΠερίπτωση χρήσης
reviveΣυνέχεια μετά από αποτυχία
double_rewardΜπόνους τέλους επιπέδου
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). Ευθυγραμμίστε το πακέτο παιχνιδιού με αυτές τις ακριβείς τιμές.

Παιχνίδι → host ​

typeΣκοπός
ads.load_rewardedΠροφόρτωση inventory rewarded
ads.show_rewardedΕμφάνιση rewarded (δώστε μόνο μετά την ολοκλήρωση)
ads.load_interstitialΠροφόρτωση interstitial
ads.show_interstitialΕμφάνιση interstitial σε παύση
ads.show_bannerΑίτημα ορατού Banner host
ads.hide_bannerΑπόκρυψη Banner host
ads.preloadΠροφόρτωση πολλών μορφών
ads.get_banner_heightΕρώτηση ύψους Banner για layout

Host → παιχνίδι ​

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 απέτυχε

Βοηθός αντιγραφής-επικόλλησης ​

Επικολλήστε στο index.html (ή module). Αντικαταστήστε τη δώση ανταμοιβής με τη δική σας λογική παιχνιδιού.

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, принудитель loops ή απόκρυψη Close / Skip.
  • Μην δώσετε ανταμοιβές χωρίς ads.rewarded_completed για αυτό το requestId.
  • Σεβαστείτε αποτυχίες host: κενό inventory, συνεχίστε ομαλά.
  • Προτιμήστε load πριν το show για λιγότερη αναμονή.
  • Πακέτα χωρίς SDK διαφημίσεων τρίτων, trackers ή pop-under scripts.
  • Η συχνότητα interstitial επιβάλλεται από host· spam show μπορεί να αγνοηθεί.

Συχνές ερωτήσεις ​

Μπορώ να χρησιμοποιήσω AdMob / Unity Ads στο zip; ​

Όχι. Το PlayNova συγκεντρώνει ζήτηση στον host. Η ενσωμάτωση άλλων SDK αποτυγχάνει review και παραβιάζει υποθέσεις iframe sandbox.

Τι γίνεται αν ο host δεν απαντήσει; ​

Θεωρήστε σιωπή ή *_failed ως no-fill. Συνεχίστε χωρίς να μπλοκάρετε τον παίκτη με άπειρο spinner.

Πού βλέπω τα έσοδα; ​

Μετά live διαφημίσεις σε production, impressions και έσοδα πηγαίνουν στα αναλυτικά δημιουργού. Διακανονισμός σύμφωνα με τους όρους του προγράμματος.


Η γέφυρα host είναι live στη σελίδα παιχνιδιού. Οι τύποι μηνυμάτων παραπάνω είναι το production συμβόλαιο — υλοποιήστε τώρα.

Τεκμηρίωση PlayNova για δημιουργούς