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

اختيار النظام الأساسي: Android جديد Android iOS Unity Flutter

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

يشرح هذا الدليل كيفية تحميل "إعلان بانر تكيُّفي ثابت" في تطبيق Android.

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

  • إعداد Google Mobile Ads SDK.
  • اختياري: للحصول على مثال على تنفيذ إعلانات البانر، اختَر أحد التطبيقات النموذجية التالية:
    • مثال على "إعلانات البانر التكيُّفية الثابتة" بلغة Java أو Kotlin أو Jetpack Compose
    • عرض توضيحي للميزات المتقدّمة بلغة Java أو Kotlin

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

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

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

/21775744923/example/adaptive-banner

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

لمزيد من المعلومات عن طريقة عمل الإعلانات الاختبارية Google Mobile Ads SDK، اطّلِع على مقالة تفعيل الإعلانات الاختبارية.

تحديد مشاهدة الإعلان

تصميم XML

أضِف طريقة عرض إلى ملف XML الخاص بالتصميم لتكون بمثابة الحاوية لـ "إعلان البانر التكيُّفي الثابت":

<!-- Ad view container that fills the width of the screen and adjusts its
    height to the content of the ad. -->
<FrameLayout
        android:id="@+id/ad_view_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_alignParentBottom="true" />

Jetpack Compose

  1. أدرِج مجلد JetpackCompose Utilities. يتضمّن هذا المجلد أدوات مساعِدة لإنشاء العنصر AdView ومواد العرض.

  2. أنشئ العنصر AdView:


// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { AdManagerBannerAd(adView, modifier) }
}

ضبط حجم الإعلان

توفّر "إعلانات البانر التكيُّفية الكبيرة" شكلاً أكبر مصمّمًا للتصاميم غير القابلة للتمرير. مقارنةً بـ "إعلانات البانر التكيُّفية الثابتة" العادية، تسمح هذه الإعلانات بحد أقصى للارتفاع أكبر، يصل إلى% 20 من ارتفاع الشاشة، ويتراوح بين 50 و150 بكسل مستقل الكثافة. تم تحسين هذه المساحة المتزايدة لعرض محتوى الفيديو.

اضبط AdSize على نوع "إعلان بانر تكيُّفي ثابت" بعرض محدّد:

جافا


// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

Kotlin


// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))

Jetpack Compose


// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

إضافة AdManagerAdView إلى التصميم

أنشئ AdManagerAdView باستخدام حجم الإعلان لإضافته إلى تصميم تطبيقك:

جافا


// Create a new ad view.
adView = new AdManagerAdView(this);
adView.setAdUnitId(AD_UNIT);
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

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

Kotlin


// Create a new ad view.
val adView = AdManagerAdView(this)
adView.adUnitId = AD_UNIT_ID
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView

// Replace ad container with new ad view.
binding.adViewContainer.removeAllViews()
binding.adViewContainer.addView(adView)

Jetpack Compose


val adView = remember { AdManagerAdView(context) }

// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = ADMANAGER_ADAPTIVE_BANNER_AD_UNIT_ID

// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { AdManagerBannerAd(adView, modifier) }
}

تحميل إعلان

يحمّل المثال التالي "إعلان بانر تكيُّفي ثابت" بعرض 360 بكسل في عنصر AdManagerAdView:

جافا

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);

Kotlin

val adRequest = AdManagerAdRequest.Builder().build()
adView.loadAd(adRequest)

إعادة تحميل إعلان

إذا ضبطت وحدتك الإعلانية على إعادة التحميل، ليس عليك طلب إعلان آخر عندما يتعذّر تحميل الإعلان. Google Mobile Ads SDK تحترم أي معدّل إعادة تحميل تحدّده في واجهة مستخدم "مدير الإعلانات". إذا لم تفعِّل إعادة التحميل، أرسِل طلبًا جديدًا. لمزيد من التفاصيل عن إعادة تحميل الوحدة الإعلانية، مثل ضبط معدّل إعادة التحميل، اطّلِع على معدّل إعادة تحميل الإعلانات في التطبيقات على الأجهزة الجوّالة.

إطلاق مورد إعلان

عند الانتهاء من استخدام إعلان بانر، يمكنك إطلاق موارد إعلان البانر.

لإطلاق مورد الإعلان، عليك إزالة الإعلان من هيكلية طرق العرض وإزالة جميع مَراجعه:

جافا

public void destroyBanner() {
  // Remove banner from view hierarchy.
  if (adView != null) {
    View parentView = (View) adView.getParent();
    if (parentView instanceof ViewGroup) {
      ((ViewGroup) parentView).removeView(adView);
    }

    // Destroy the banner ad resources.
    adView.destroy();
  }

  // Drop reference to the banner ad.
  adView = null;
}

Kotlin

fun destroyBanner() {
  // Remove banner from view hierarchy.
  val parentView = adView?.parent
  if (parentView is ViewGroup) {
    parentView.removeView(adView)
  }

  // Destroy the banner ad resources.
  adView?.destroy()

  // Drop reference to the banner ad.
  adView = null
}

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

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

جافا

if (adView != null) {
  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(@NonNull 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 المقصود للإعلان. يمكن لتطبيقك استخدامه لاستئناف الأنشطة المعلّقة أو تنفيذ أي عمل آخر ضروري لإعداده للتفاعل.
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>

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

العدّ اليدوي لمرّات الظهور

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

يمكنك إرسال إشعارات مرّات الظهور يدويًا إلى "مدير الإعلانات" إذا كانت لديك شروط خاصة لتسجيل مرّة الظهور:

جافا

if (adManagerAdView != null) {
  adManagerAdView.setManualImpressionsEnabled(true);
}

Kotlin

adManagerAdView?.setManualImpressionsEnabled(true)

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

جافا

if (adManagerAdView != null) {
  adManagerAdView.recordManualImpression();
}

Kotlin

adManagerAdView?.recordManualImpression()

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

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

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

اضبط AppEventListener على AdManagerAdView:

جافا

if (adManagerAdView != null) {
  adManagerAdView.setAppEventListener(this);
}

Kotlin

adManagerAdView?.appEventListener = this

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

جافا

@Override
public void onAppEvent(@NonNull String name, @NonNull String info) {
  if (name.equals("color")) {
    switch (info) {
      case "green":
        // Set background color to green.
        break;
      case "blue":
        // Set background color to blue.
        break;
      default:
        // Set background color to black.
        break;
    }
  }
}

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

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

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

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

Java Kotlin JetpackCompose

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

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

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

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

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

استكشاف مواضيع أخرى