تكامل الإعلانات داخل اللعبة
آخر تحديث: 2026-08-11
ادمج إعلانات Banner وinterstitial وrewarded عبر جسر المضيف PlayNova. تعمل لعبتك داخل iframe وتتواصل مع المضيف عبر postMessage — لا تضمّن SDK إعلانات طرف ثالث داخل الحزمة.
كيف تعمل تحقيق الدخل
PlayNova تعبّئ الإعلانات على جانب المضيف وتشارك الإيرادات مع المبدعين المعتمدين (70% للمبدع افتراضيًا). الألعاب تطلب show/load فقط؛ المضيف يدير المخزون وحدود التكرار وتقارير impression/click.
غلاف لكل رسالة:
{ "source": "...", "type": "...", "payload": { } }- يجب على الألعاب تعيين
sourceإلىplaynova-game - المضيف يرد بـ
sourceplaynova-host
صيغ الإعلان:
- Rewarded — opt-in للاعب (revive ومكافأة مضاعفة وعنصر مجاني). امنح المكافآت فقط بعد
ads.rewarded_completed. - Interstitial — فواصل طبيعية (إكمال مستوى / game over). لا أبدًا أثناء الإدخال.
- Banner — شريط يملكه المضيف؛ اللعبة تطلب show/hide فقط.
المواضع الموصى بها
مرّر دائمًا سلسلة placement ثابتة للتحليلات والحدود. فضّل أسماء المنصة أدناه:
| Placement | حالة الاستخدام |
|---|---|
revive | المتابعة بعد الفشل |
double_reward | مكافأة نهاية المستوى |
free_item / unlock | مستهلك أو فتح محتوى |
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). اجعل حزمة لعبتك متوافقة مع هذه القيم بالضبط.
اللعبة → المضيف
| 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 للتخطيط |
المضيف → اللعبة
| type | الغرض |
|---|---|
ads.rewarded_loaded | Rewarded جاهز للعرض |
ads.rewarded_failed | فشل load/show rewarded |
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 (أو وحدة). استبدل منح المكافأة بمنطق لعبتك.
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') {
// امنح المكافأة هنا فقط
}
});قواعد الإنتاج
- لا نقر تلقائي ولا حلقات إجبارية ولا إخفاء عناصر Close / Skip.
- لا تمنح مكافآت دون
ads.rewarded_completedلذلكrequestId. - احترم فشل المضيف: مخزون فارغ، تابع اللعب بسلاسة.
- فضّل load قبل show لتقليل انتظار اللاعب.
- حزم خالية من SDK إعلانات طرف ثالث ومتتبعات وscripts pop-under.
- تكرار interstitial يفرضه المضيف؛ spam show قد يُتجاهل.
الأسئلة الشائعة
هل يمكنني استخدام AdMob / Unity Ads داخل zip؟
لا. PlayNova تجمع الطلب على المضيف. تضمين SDK أخرى يفشل المراجعة ويكسر افتراضات sandbox iframe.
ماذا لو لم يرد المضيف؟
اعتبر الصمت أو *_failed no-fill. تابع اللعب دون حظر اللاعب بspinner لا ينتهي.
أين أرى الإيرادات؟
بعد تشغيل الإعلانات في الإنتاج، impressions والإيرادات تذهب إلى تحليلات المبدع. التسوية وفق شروط البرنامج.
جسر المضيف يعمل على صفحة اللعب. أنواع الرسائل أعلاه هي عقد الإنتاج — نفّذها الآن.
