إعلانات البانر

إعلانات البانر هي إعلانات مستطيلة تشغل جزءًا من تصميم التطبيق. وتظل معروضة على الشاشة أثناء تفاعل المستخدمين مع التطبيق، سواء في الجزء العلوي أو السفلي من الشاشة أو مضمَّنة مع المحتوى أثناء تمرير الشاشة. يمكن إعادة تحميل إعلانات البانر تلقائيًا بعد فترة زمنية محدّدة يمكنك الاطّلاع على نظرة عامة على إعلانات البانر لمزيد من المعلومات.

يوضِّح لك هذا الدليل كيفية بدء استخدام إعلانات البانر التكيُّفية الثابتة، والتي تحسِّن الأداء إلى أقصى حدّ من خلال تحسين حجم الإعلان لكلّ جهاز باستخدام عرض الإعلان الذي تحدّده.

إعلانات البانر التكيُّفية الثابتة هي إعلانات بنسبة عرض إلى ارتفاع ثابتة، وليست إعلانات ذات حجم ثابت عادي. وتشبه نسبة العرض إلى الارتفاع المعيار المتّبع في المجال 320×50. بعد تحديد العرض الكامل المتاح، سيعرض لك إعلانًا بالارتفاع الأمثل لهذا العرض. ولا يتغيّر الارتفاع الأمثل مع الطلبات الواردة من الجهاز نفسه، ولا حاجة إلى تغيّر عدد المشاهدات المحيطة عند إعادة تحميل الإعلان.

المتطلّبات الأساسية

الاختبار دائمًا باستخدام الإعلانات الاختبارية

عند إنشاء تطبيقاتك واختبارها، احرص على استخدام إعلانات تجريبية بدلاً من الإعلانات النهائية المباشرة. وقد يؤدي عدم الالتزام بذلك إلى تعليق حسابك.

أسهل طريقة لتحميل الإعلانات الاختبارية هي استخدام رقم تعريف الوحدة الإعلانية الاختبارية المخصص لإعلانات البانر في Android:

/21775744923/example/banner

تم تكوينه خصيصًا لعرض إعلانات اختبارية لكل طلب، ويمكنك استخدامه في تطبيقاتك الخاصة أثناء الترميز والاختبار وتصحيح الأخطاء. ما عليك سوى التأكد من استبداله بمعرّف وحدتك الإعلانية قبل نشر تطبيقك.

لمزيد من المعلومات عن آلية عمل الإعلانات الاختبارية لحزمة تطوير البرامج (SDK) لعرض الإعلانات للأجهزة الجوّالة، يُرجى الاطّلاع على اختبار الإعلانات.

أضِف AdManagerAdView إلى التنسيق

إنّ الخطوة الأولى لعرض البانر هي وضع AdManagerAdView في تنسيق Activity أو Fragment الذي تريد عرض الإعلان فيه.:

Java

private AdSize getAdSize() {
  // Determine the screen width (less decorations) to use for the ad width.
  Display display = getWindowManager().getDefaultDisplay();
  DisplayMetrics outMetrics = new DisplayMetrics();
  display.getMetrics(outMetrics);

  float density = outMetrics.density;

  float adWidthPixels = adContainerView.getWidth();

  // If the ad hasn't been laid out, default to the full screen width.
  if (adWidthPixels == 0) {
    adWidthPixels = outMetrics.widthPixels;
  }

  int adWidth = (int) (adWidthPixels / density);
  return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
}

private void loadBanner() {
  
  // Create a new ad view.
  AdManagerAdView adView = new AdManagerAdView(this);
  adView.setAdSizes(getAdSize());
  adView.setAdUnitId("/21775744923/example/banner");

  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
  adView.loadAd(adRequest);
}

Kotlin


// Determine the screen width (less decorations) to use for the ad width.
// If the ad hasn't been laid out, default to the full screen width.
private val adSize: AdSize
  get() {
    val display = windowManager.defaultDisplay
    val outMetrics = DisplayMetrics()
    display.getMetrics(outMetrics)

    val density = outMetrics.density

    var adWidthPixels = binding.adViewContainer.width.toFloat()
    if (adWidthPixels == 0f) {
      adWidthPixels = outMetrics.widthPixels.toFloat()
    }

    val adWidth = (adWidthPixels / density).toInt()
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
  }

private fun loadBanner() {
  
  // Create a new ad view.
  val adView = AdManagerAdView(this)
  adView.adSizes = adSize
  adView.adUnitId = "/21775744923/example/banner"

  // Create an ad request.
  val adRequest = AdManagerAdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

تحميل إعلان

بعد وضع AdManagerAdView موضع الإعلان، تتمثل الخطوة التالية في تحميل إعلان. ويتم ذلك باستخدام الطريقة loadAd() في الفئة AdManagerAdView. يتم استخدام مَعلمة AdManagerAdRequest، التي تحتوي على معلومات وقت التشغيل، مثل معلومات الاستهداف، حول طلب إعلان واحد.

إليك مثال يوضّح كيفية تحميل إعلان باستخدام طريقة onCreate() في Activity:

Java

private void loadBanner() {
  // Create a new ad view.
  adView = new AdManagerAdView(this);
  adView.setAdUnitId(AD_UNIT);
  adView.setAdSize(getAdSize());
  
  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
  adView.loadAd(adRequest);
}

Kotlin

private fun loadBanner() {
  // This is an ad unit ID for a test ad. Replace with your own banner ad unit ID.
  adView.adUnitId = "/6499/example/banner"
  adView.setAdSize(adSize)
  
  // Create an ad request.
  val adRequest = AdManagerAdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

إذا تعذّر تحميل إعلانك، لن تحتاج إلى طلب إعلان آخر بشكل صريح طالما أنّك أعددت وحدتك الإعلانية لتتم إعادة تحميلها، وتجدر الإشارة إلى أنّ حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" تلتزم بأي معدّل إعادة تحميل حدّدته في Ad Manager واجهة الويب. في حال عدم تفعيل خيار "إعادة التحميل"، عليك إصدار طلب جديد.

أكملت هذه الخطوة. تطبيقك جاهز الآن لعرض إعلانات البانر.

أحداث الإعلانات

يمكنك الاطّلاع على عدد من الأحداث خلال مراحل نشاط الإعلان، بما في ذلك أحداث التحميل، وظهور الإعلان والنقر عليه، بالإضافة إلى أحداث فتح الإعلان وإغلاقه. ننصحك بضبط رد الاتصال قبل تحميل إعلان البانر.

Java

AdManagerAdView.setAdListener(new AdListener() {
    @Override
    public void onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    @Override
    public void onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    @Override
    public void onAdFailedToLoad(LoadAdError adError) {
      // Code to be executed when an ad request fails.
    }

    @Override
    public void onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    @Override
    public void onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    @Override
    public void onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
});

Kotlin

AdManagerAdView.adListener = object: AdListener() {
    override fun onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    override fun onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    override fun onAdFailedToLoad(adError : LoadAdError) {
      // Code to be executed when an ad request fails.
    }

    override fun onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    override fun onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    override fun onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
}

تتوافق كل طريقة من الطرق القابلة للإلغاء في AdListener مع حدث في دورة حياة الإعلان.

الطرق القابلة للإلغاء
onAdClicked() يتم استدعاء الطريقة onAdClicked() عند تسجيل نقرة على إعلان.
onAdClosed() يتم استدعاء الطريقة onAdClosed() عندما يعود المستخدم إلى التطبيق بعد مشاهدة عنوان URL المقصود للإعلان. ويمكن لتطبيقك استخدامه لاستئناف الأنشطة المعلّقة أو تنفيذ أي عمل آخر ضروري ليكون جاهزًا للتفاعل.
onAdFailedToLoad() إنّ الطريقة onAdFailedToLoad() هي الطريقة الوحيدة التي تتضمّن مَعلمة. وتصف معلَمة الخطأ من النوع LoadAdError الخطأ الذي حدث. لمزيد من المعلومات، راجِع مستندات تصحيح أخطاء تحميل الإعلان.
onAdImpression() يتم استدعاء الطريقة onAdImpression() عند تسجيل مرة ظهور لإعلان.
onAdLoaded() يتم تنفيذ الطريقة onAdLoaded() عند انتهاء تحميل الإعلان. إذا كنت تريد تأخير إضافة AdManagerAdView إلى نشاطك أو الجزء إلى أن تتأكّد من تحميل الإعلان، على سبيل المثال، يمكنك إجراء ذلك من هنا.
onAdOpened() يتم استدعاء الطريقة onAdOpened() عندما يفتح إعلان تراكبًا يغطي الشاشة.

تسريع الأجهزة لإعلانات الفيديو

لكي تظهر إعلانات الفيديو بنجاح في مشاهدات إعلانات البانر، يجب تفعيل تسريع الأجهزة.

يتم تمكين ميزة تسريع الأجهزة افتراضيًا، ولكن قد تختار بعض التطبيقات تعطيله. إذا كان ذلك منطبقًا على تطبيقك، ننصحك بتفعيل تسريع الأجهزة في Activity فئات تستخدم الإعلانات.

تفعيل ميزة "تسريع الأجهزة"

وإذا كان تطبيقك لا يعمل على نحو سليم عند تفعيل تسريع الأجهزة على مستوى العالم، يمكنك التحكّم فيه في الأنشطة الفردية أيضًا. لتفعيل ميزة "تسريع الأجهزة" أو إيقافها، يمكنك استخدام السمة android:hardwareAccelerated للعنصرَين <application> و<activity> في AndroidManifest.xml. يمكّن المثال التالي تسريع الأجهزة للتطبيق بأكمله ولكنه يوقفه لنشاط واحد:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

يمكنك مراجعة دليل تسريع الأجهزة للحصول على مزيد من المعلومات حول خيارات التحكم في تسريع الأجهزة. وتجدر الإشارة إلى أنّه لا يمكن تفعيل تسريع الأجهزة لمشاهدات الإعلانات الفردية في حال إيقاف النشاط، وبالتالي يجب تفعيل تسريع الأجهزة في النشاط نفسه.

احتساب عدد مرات الظهور يدويًا

لا يتوافق احتساب عدد مرات الظهور اليدوي إلا مع حملات البيع المباشر وحملات لنفس الشركة، التي تتضمن تصميمات الإعلانات التي يتم نقلها مباشرةً إلى "مدير الإعلانات". وينبغي ألا تُستخدم لإعادة الإعلانات أو إعلانات الشبكات التابعة لجهات خارجية. لمزيد من التفاصيل، راجع احتساب مرات الظهور والنقرات.

يمكنك إرسال إشعارات مرات الظهور يدويًا إلى "مدير الإعلانات" إذا كانت لديك شروط خاصة تتعلق بوقت تسجيل مرة الظهور. ولإجراء ذلك، عليك تفعيل AdManagerAdRequest لمرات الظهور اليدوية قبل تحميل الإعلان:

Java

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build();

Kotlin

val adRequest = AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build()

عندما تلاحظ أنّ أحد الإعلانات قد تمّ عرضه بنجاح ويظهر على الشاشة، يمكنك تسجيل مرّة ظهور يدويًا:

Java

AdManagerAdView.recordManualImpression();

Kotlin

AdManagerAdView.recordManualImpression()

أحداث التطبيقات

تتيح لك أحداث التطبيقات إنشاء إعلانات يمكنها إرسال رسائل إلى رمز التطبيق. يمكن للتطبيق بعد ذلك اتخاذ إجراءات بناءً على هذه الرسائل.

يمكنك الاستماع إلى أحداث تطبيقات معيّنة في "مدير الإعلانات" باستخدام AppEventListener. يمكن أن تقع هذه الأحداث في أي وقت خلال دورة حياة الإعلان، حتى قبل عرض اسم onAdLoaded().

Java

public interface AppEventListener {
  void onAppEvent(String name, String info);
}

Kotlin

interface AppEventListener {
    fun onAppEvent(name: String, info: String)
}

يتم استدعاء void onAppEvent(String name, String info) عند وقوع حدث تطبيق في أحد الإعلانات. يمكن تنفيذ هذه الواجهة من خلال نشاطك أو أي كائن آخر:

Java

import com.google.android.gms.ads.admanager.*;

public class BannerExample extends Activity implements AppEventListener {
}

Kotlin

import com.google.android.gms.ads.admanager.*

class BannerExample : Activity(), AppEventListener {
}

ثم تمريرها إلى AdManagerAdView:

Java

AdManagerAdView.setAppEventListener(this);

Kotlin

AdManagerAdView.appEventListener = this

في ما يلي مثال يوضّح كيفية تغيير لون الخلفية لتطبيقك بناءً على حدث تطبيق باسم لون:

Java

@Override
public void onAppEvent(String name, String info) {
  if ("color".equals(name)) {
    if ("green".equals(info)) {
      // Set background color to green.
    } else if ("blue".equals(info)) {
      // Set background color to blue.
    } else {
      // Set background color to black.
    }
  }
}

Kotlin

override fun onAppEvent(name: String?, info: String?) {
    if (name == "color") {
        when (info) {
            "green" -> {
                // Set background color to green.
            }
            "blue" -> {
                // Set background color to blue.
            }
            else -> {
                // Set background color to black.
            }
        }
    }
}

وإليك تصميم الإعلان المقابل الذي يرسل رسائل أحداث تطبيقات الألوان إلى المستمع:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

يمكنك الاطّلاع على مثال أحداث تطبيقات "مدير الإعلانات" لتنفيذ أحداث التطبيقات في تطبيق واجهة برمجة التطبيقات التجريبية.

Java كوتلين

مصادر إضافية

أمثلة على GitHub

  • مثال على إعلانات البانر التكيُّفية الثابتة: Java | Kotlin
  • عرض توضيحي للميزات المتقدمة: Java | Kotlin

الخطوات التالية

إعلانات البانر القابلة للتصغير

إعلانات البانر القابلة للتصغير هي إعلانات بانر يتم عرضها مبدئيًا على شكل تراكب أكبر، مع زر لتصغير الإعلان إلى حجم أصغر. ننصحك باستخدامها لتحسين أدائك بشكلٍ أكبر. اطّلِع على إعلانات البانر القابلة للتصغير للحصول على مزيد من التفاصيل.

إعلانات البانر التكيُّفية المضمّنة

إعلانات البانر التكيُّفية المضمّنة هي إعلانات بانر أكبر وأطول مقارنةً بإعلانات البانر التكيّفية الثابتة. فهي ذات ارتفاع متغير، ويمكن أن يصل طولها إلى نفس شاشة الجهاز. يُنصَح باستخدام إعلانات البانر التكيُّفية المضمّنة بدلاً من إعلانات البانر التكيُّفية الثابتة للتطبيقات التي تعرض إعلانات بانر في محتوى قابل للتمرير. راجع إعلانات البانر التكيُّفية المضمّنة لمزيد من التفاصيل.

الاطّلاع على مواضيع أخرى