الإعلانات البينية هي إعلانات بملء الشاشة تغطي واجهة التطبيق المضيف. وعادةً ما تظهر هذه الإعلانات في نقاط الانتقال العادية في تدفق التطبيقات، مثلاً بين الأنشطة أو أثناء فترة الإيقاف المؤقت بين المستويات في الألعاب. عندما يعرض تطبيق إعلانًا بينيًا، يمكن للمستخدم النقر على الإعلان والمتابعة إلى وجهته أو إغلاقه والعودة إلى التطبيق. اطّلِع على إحدى دراسات الحالة.
يوضّح هذا الدليل كيفية دمج الإعلانات البينية في تطبيق Android.
المتطلبات الأساسية
اختبار الإعلانات دائمًا باستخدام الإعلانات الاختبارية
عند إنشاء تطبيقاتك واختبارها، احرص على استخدام إعلانات اختبارية بدلاً من الإعلانات المباشرة في مرحلة الإنتاج. وقد يؤدي عدم اتّخاذ هذا الإجراء إلى تعليق حسابك.
أسهل طريقة لتحميل إعلانات اختبارية هي استخدام معرّف وحدة الإعلان الاختبارية المخصّص للإعلانات البينية على Android:
ca-app-pub-3940256099942544/1033173712
تم إعداد هذا المعرّف خصيصًا لعرض إعلانات اختبارية لكل طلب، ويمكنك استخدامه في تطبيقاتك أثناء الترميز والاختبار وتصحيح الأخطاء. ما عليك سوى التأكّد من استبداله برقم تعريف وحدتك الإعلانية قبل نشر تطبيقك.
لمزيد من المعلومات عن طريقة عمل الإعلانات الاختبارية في حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" (الإصدار التجريبي)، يُرجى الاطّلاع على الإعلانات الاختبارية.
تحميل إعلان
لتحميل إعلان، توفّر حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" (إصدار تجريبي) ما يلي:
- تحميل باستخدام واجهة برمجة التطبيقات لتحميل إعلان واحد 
- يمكنك تحميل الإعلانات باستخدام واجهة برمجة التطبيقات لتحميل الإعلانات مسبقًا، ما يغنيك عن تحميل الإعلانات وتخزينها مؤقتًا يدويًا. 
التحميل باستخدام واجهة برمجة التطبيقات لتحميل إعلان واحد
يوضّح المثال التالي كيفية تحميل إعلان واحد:
Kotlin
import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback
import com.google.android.libraries.ads.mobile.sdk.common.AdRequest
import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAd
import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAdEventCallback
import com.google.android.libraries.ads.mobile.sdk.MobileAds
class InterstitialActivity : Activity() {
  private var interstitialAd: InterstitialAd? = null
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // Load ads after you initialize Google Mobile Ads SDK (beta).
    InterstitialAd.load(
      AdRequest.Builder(AD_UNIT_ID).build(),
      object : AdLoadCallback<InterstitialAd> {
        override fun onAdLoaded(ad: InterstitialAd) {
          // Interstitial ad loaded.
          interstitialAd = ad
        }
        override fun onAdFailedToLoad(adError: LoadAdError) {
          // Interstitial ad failed to load.
          interstitialAd = null
        }
      },
    )
  }
  companion object {
    // Sample interstitial ad unit ID.
    const val AD_UNIT_ID = "ca-app-pub-3940256099942544/1033173712"
  }
}
Java
import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback;
import com.google.android.libraries.ads.mobile.sdk.common.AdRequest;
import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError;
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError;
import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAd;
import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAdEventCallback;
import com.google.android.libraries.ads.mobile.sdk.MobileAds;
class InterstitialActivity extends Activity {
  // Sample interstitial ad unit ID.
  private static final String AD_UNIT_ID = "ca-app-pub-3940256099942544/1033173712";
  private InterstitialAd interstitialAd;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Load ads after you initialize Google Mobile Ads SDK (beta).
    InterstitialAd.load(
        new AdRequest.Builder(AD_UNIT_ID).build(),
        new AdLoadCallback<InterstitialAd>() {
          @Override
          public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
            // Interstitial ad loaded.
            AdLoadCallback.super.onAdLoaded(interstitialAd);
            InterstitialActivity.this.interstitialAd = interstitialAd;
          }
          @Override
          public void onAdFailedToLoad(@NonNull LoadAdError adError) {
            // Interstitial ad failed to load.
            AdLoadCallback.super.onAdFailedToLoad(adError);
            interstitialAd = null;
          }
        }
    );
  }
}
التحميل باستخدام واجهة برمجة التطبيقات الخاصة بالتحميل المُسبَق للإعلانات
لبدء التحميل المُسبَق، اتّبِع الخطوات التالية:
- تهيئة إعداد التحميل المُسبَق باستخدام طلب إعلان 
- ابدأ أداة التحميل المُسبَق للإعلانات البينية باستخدام معرّف الوحدة الإعلانية وإعدادات التحميل المُسبَق: 
Kotlin
private fun startPreloading(adUnitID: String) {
  val adRequest: AdRequest = AdRequest.Builder(adUnitID).build()
  val preloadConfig = PreloadConfiguration(adRequest)
  InterstitialAdPreloader.start(adUnitID, preloadConfig)
}
Java
private void startPreloading(String adUnitId) {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
  InterstitialAdPreloader.start(adUnitId, preloadConfig);
}
تتوفّر الإعلانات باستمرار أثناء عرضها. يعرض المثال التالي استطلاعًا للحصول على إعلان من أداة التحميل المُسبَق:
Kotlin
// Polling returns the next available ad and loads another ad in the background.
val ad = InterstitialAdPreloader.pollAd(adUnitID)
Java
// Polling returns the next available ad and loads another ad in the background.
final InterstitialAd ad = InterstitialAdPreloader.pollAd(adUnitId);
ضبط InterstitialAdEventCallback
يتعامل InterstitialAdEventCallback مع الأحداث المرتبطة بعرض InterstitialAd. قبل عرض الإعلان البيني، تأكَّد من ضبط
دالة معاودة الاتصال على النحو التالي:
Kotlin
// Listen for ad events.
interstitialAd?.adEventCallback =
  object : InterstitialAdEventCallback {
    override fun onAdShowedFullScreenContent() {
      // Interstitial ad did show.
    }
    override fun onAdDismissedFullScreenContent() {
      // Interstitial ad did dismiss.
      interstitialAd = null
    }
    override fun onAdFailedToShowFullScreenContent(
      fullScreenContentError: FullScreenContentError
    ) {
      // Interstitial ad failed to show.
      interstitialAd = null
    }
    override fun onAdImpression() {
      // Interstitial ad did record an impression.
    }
    override fun onAdClicked() {
      // Interstitial ad did record a click.
    }
  }
Java
// Listen for ad events.
interstitialAd.setAdEventCallback(
    new InterstitialAdEventCallback() {
      @Override
      public void onAdShowedFullScreenContent() {
        // Interstitial ad did show.
        InterstitialAdEventCallback.super.onAdShowedFullScreenContent();
      }
      @Override
      public void onAdDismissedFullScreenContent() {
        // Interstitial ad did dismiss.
        InterstitialAdEventCallback.super.onAdDismissedFullScreenContent();
        interstitialAd = null;
      }
      @Override
      public void onAdFailedToShowFullScreenContent(
          @NonNull FullScreenContentError fullScreenContentError) {
        // Interstitial ad failed to show.
        InterstitialAdEventCallback.super.onAdFailedToShowFullScreenContent(
            fullScreenContentError);
        initerstitialAd = null;
      }
      @Override
      public void onAdImpression() {
        // Interstitial ad did record an impression.
        InterstitialAdEventCallback.super.onAdImpression();
      }
      @Override
      public void onAdClicked() {
        // Interstitial ad did record a click.
        InterstitialAdEventCallback.super.onAdClicked();
      }
    }
);
عرض الإعلان
لعرض إعلان بيني، استخدِم طريقة show().
Kotlin
// Show the ad.
interstitialAd?.show(this@InterstitialActivity)
Java
// Show the ad.
interstitialAd.show(InterstitialActivity.this);
بعض أفضل الممارسات
- عليك تحديد ما إذا كانت "الإعلانات البينية" هي نوع الإعلانات المناسب لتطبيقك.
- تعمل "الإعلانات البينية" بشكل أفضل في التطبيقات التي تتضمّن نقاط انتقال طبيعية. يتم إنشاء نقطة انتقال عند إكمال مهمة في تطبيق، مثل مشاركة صورة أو إنهاء مستوى في لعبة. احرص على تحديد النقاط التي ستعرض فيها الإعلانات البينية في سير عمل تطبيقك، وكيف من المرجّح أن يتفاعل المستخدم معها.
- تذكَّر إيقاف الإجراء مؤقتًا عند عرض إعلان بيني.
- هناك العديد من أنواع الإعلانات البينية المختلفة: الإعلانات النصية والإعلانات المصوّرة وإعلانات الفيديو وغيرها. من المهم التأكّد من أنّ تطبيقك يعلّق استخدام بعض الموارد عند عرض إعلان بيني، وذلك للسماح للإعلان بالاستفادة من هذه الموارد. على سبيل المثال، عند إجراء طلب لعرض إعلان بيني، احرص على إيقاف أي ناتج صوتي يصدره تطبيقك مؤقتًا.
- يجب إتاحة وقت تحميل كافٍ.
- كما أنّه من المهم التأكّد من عرض الإعلانات البينية في الوقت المناسب، من المهم أيضًا التأكّد من أنّ المستخدم لن يضطر إلى الانتظار حتى يتم تحميلها. يمكنك تحميل الإعلان مسبقًا من خلال طلب load()قبل أن تنوي طلبshow()، ما يضمن أن يكون تطبيقك جاهزًا لعرض إعلان بيني تم تحميله بالكامل عندما يحين وقت عرضه.
- لا تغرق المستخدم بالإعلانات.
- قد تبدو زيادة معدّل تكرار الإعلانات البينية في تطبيقك طريقة رائعة لزيادة الإيرادات، ولكنّها قد تؤدي أيضًا إلى انخفاض مستوى تجربة المستخدمين وانخفاض معدلات النقر. تأكَّد من عدم مقاطعة المستخدمين بشكل متكرّر لدرجة أنّهم لم يعودوا قادرين على الاستمتاع باستخدام تطبيقك.
مثال
نزِّل تطبيق المثال الذي يوضّح كيفية استخدام الإصدار التجريبي من "SDK لإعلانات Google على الأجهزة الجوّالة" وشغِّله.