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

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

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

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

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

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

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

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

ca-app-pub-3940256099942544/9214589741

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

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

إضافة AdView إلى التنسيق

إنّ الخطوة الأولى لعرض البانر هي وضع AdView في تنسيق 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.
  AdView adView = new AdView(this);
  adView.setAdSizes(getAdSize());
  adView.setAdUnitId("ca-app-pub-3940256099942544/9214589741");

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

  // Start loading the ad in the background.
  AdRequest adRequest = new AdRequest.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 = AdView(this)
  adView.adSizes = adSize
  adView.adUnitId = "ca-app-pub-3940256099942544/9214589741"

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

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

تحميل إعلان

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

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

Java

private void loadBanner() {
  // Create a new ad view.
  adView = new AdView(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.
  AdRequest adRequest = new AdRequest.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 = AdRequest.Builder().build()

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

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

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

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

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

Java

AdView.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

AdView.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 المقصود للإعلان. ويمكن لتطبيقك استخدامه لاستئناف الأنشطة المعلّقة أو تنفيذ أي عمل آخر ضروري ليكون جاهزًا للتفاعل. ارجع إلى مثال AdMob AdListener للاطّلاع على تنفيذ طرق الاستماع إلى الإعلانات في تطبيق Android API التجريبي.
onAdFailedToLoad() إنّ الطريقة onAdFailedToLoad() هي الطريقة الوحيدة التي تتضمّن مَعلمة. وتصف معلَمة الخطأ من النوع LoadAdError الخطأ الذي حدث. لمزيد من المعلومات، راجِع مستندات تصحيح أخطاء تحميل الإعلان.
onAdImpression() يتم استدعاء الطريقة onAdImpression() عند تسجيل مرة ظهور لإعلان.
onAdLoaded() يتم تنفيذ الطريقة onAdLoaded() عند انتهاء تحميل الإعلان. إذا كنت تريد تأخير إضافة AdView إلى نشاطك أو الجزء إلى أن تتأكّد من تحميل الإعلان، على سبيل المثال، يمكنك إجراء ذلك من هنا.
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>

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

مصادر إضافية

أمثلة على GitHub

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

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

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

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

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

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

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