Skip to content

تكامل الإعلانات داخل اللعبة ​

آخر تحديث: 2026-08-11

ادمج إعلانات Banner وinterstitial وrewarded عبر جسر المضيف PlayNova. تعمل لعبتك داخل iframe وتتواصل مع المضيف عبر postMessage — لا تضمّن SDK إعلانات طرف ثالث داخل الحزمة.

كيف تعمل تحقيق الدخل ​

PlayNova تعبّئ الإعلانات على جانب المضيف وتشارك الإيرادات مع المبدعين المعتمدين (70% للمبدع افتراضيًا). الألعاب تطلب show/load فقط؛ المضيف يدير المخزون وحدود التكرار وتقارير impression/click.

غلاف لكل رسالة:

json
{ "source": "...", "type": "...", "payload": { } }
  • يجب على الألعاب تعيين source إلى playnova-game
  • المضيف يرد بـ source playnova-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

مسار التكامل ​

  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 للتخطيط

المضيف → اللعبة ​

typeالغرض
ads.rewarded_loadedRewarded جاهز للعرض
ads.rewarded_failedفشل load/show rewarded
ads.rewarded_completedاكتمل rewarded — آمن للمنح
ads.rewarded_dismissedأُغلق rewarded مبكرًا — لا تمنح
ads.interstitial_loadedInterstitial جاهز
ads.interstitial_failedفشل interstitial
ads.interstitial_closedأُغلق interstitial
ads.banner_shownBanner ظاهر
ads.banner_hiddenBanner مخفي
ads.banner_failedفشل Banner

مساعد نسخ ولصق ​

الصق في 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') {
    // امنح المكافأة هنا فقط
  }
});

قواعد الإنتاج ​

  • لا نقر تلقائي ولا حلقات إجبارية ولا إخفاء عناصر 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 والإيرادات تذهب إلى تحليلات المبدع. التسوية وفق شروط البرنامج.


جسر المضيف يعمل على صفحة اللعب. أنواع الرسائل أعلاه هي عقد الإنتاج — نفّذها الآن.

وثائق PlayNova للمبدعين