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

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

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

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

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

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

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

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

/6499/example/adaptive-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("/6499/example/adaptive-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 = "/6499/example/adaptive-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 على الأجهزة الجوّالة" أي معدّل إعادة تحميل حدّدته في "مدير إعلانات Google" وواجهة الويب. في حال عدم تفعيل إعادة التحميل، ستحتاج إلى إصدار رمز جديد طلبك.

هذا كل شيء! تطبيقك جاهز الآن لعرض إعلانات البانر.

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

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

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>

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

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

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

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

Java

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

Kotlin

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

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

Java

{ ad_view }.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 Kotlin

مراجع إضافية

أمثلة على GitHub

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

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

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

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

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

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

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