Ενσωμάτωση διαφημίσεων in-game
Τελευταία ενημέρωση: 2026-08-11
Ενσωματώστε διαφημίσεις Banner, interstitial και rewarded μέσω της γέφυρας host PlayNova. Το παιχνίδι τρέχει σε iframe και επικοινωνεί με τον host μέσω postMessage — μην ενσωματώνετε SDK διαφημίσεων τρίτων στο πακέτο.
Πώς λειτουργεί η monetization
Το PlayNova γεμίζει διαφημίσεις στην πλευρά host και μοιράζει έσοδα με πιστοποιημένους δημιουργούς (προεπιλογή 70% δημιουργός). Τα παιχνίδια ζητούν μόνο show/load· ο host διαχειρίζεται inventory, όρια συχνότητας και αναφορές impression/click.
Φάκελος για κάθε μήνυμα:
{ "source": "...", "type": "...", "payload": { } }- Τα παιχνίδια πρέπει να ορίσουν
sourceσεplaynova-game - Ο host απαντά με
sourceplaynova-host
Μορφές διαφημίσεων:
- Rewarded — opt-in παίκτη (revive, διπλή ανταμοιβή, δωρεάν αντικείμενο). Δώστε ανταμοιβές μόνο μετά το
ads.rewarded_completed. - Interstitial — φυσικές παύσεις (επίπεδο ολοκληρώθηκε / game over). Ποτέ κατά την εισαγωγή.
- Banner — λωρίδα του host· το παιχνίδι ζητά μόνο show/hide.
Συνιστώμενες θέσεις
Περάστε πάντα σταθερό string placement για αναλυτικά και όρια. Προτιμήστε τα ονόματα πλατφόρμας παρακάτω:
| Placement | Περίπτωση χρήσης |
|---|---|
revive | Συνέχεια μετά από αποτυχία |
double_reward | Μπόνους τέλους επιπέδου |
free_item / unlock | Consumable ή ξεκλείδωμα περιεχομένου |
level_complete / level_start / game_over / pause | Στιγμές interstitial |
banner_bottom / banner_top | Θέσεις Banner |
Ροή ενσωμάτωσης
- Σε φυσική παύση, καλέστε
ads.load_*μεplacement(και προαιρετικόrequestId). - Περιμένετε
ads.*_loaded(ή χειριστείτε*_failedκαι συνεχίστε χωρίς διαφημίσεις). - Καλέστε
ads.show_*με το ίδιοrequestId/placement. - Για 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_loaded | Rewarded έτοιμο για εμφάνιση |
ads.rewarded_failed | Rewarded load/show απέτυχε |
ads.rewarded_completed | Rewarded ολοκληρώθηκε — ασφαλές να δοθεί |
ads.rewarded_dismissed | Rewarded κλείστηκε νωρίς — μην δώσετε |
ads.interstitial_loaded | Interstitial έτοιμο |
ads.interstitial_failed | Interstitial απέτυχε |
ads.interstitial_closed | Interstitial έκλεισε |
ads.banner_shown | Banner ορατό |
ads.banner_hidden | Banner κρυφό |
ads.banner_failed | Banner απέτυχε |
Βοηθός αντιγραφής-επικόλλησης
Επικολλήστε στο index.html (ή module). Αντικαταστήστε τη δώση ανταμοιβής με τη δική σας λογική παιχνιδιού.
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 συμβόλαιο — υλοποιήστε τώρα.
