الإعلانات البينية

اختيار النظام الأساسي: Android New-selected Android iOS Unity Flutter

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

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

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

  • إعداد GMA Next-Gen SDK.
  • الاختبار دائمًا باستخدام "الإعلانات التجريبية"

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

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

    /21775744923/example/interstitial

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

    لمزيد من التفاصيل عن GMA Next-Gen SDK الإعلانات التجريبية، يُرجى الاطّلاع على مقالة تفعيل "الإعلانات التجريبية".

    تحميل إعلان

    لتحميل إعلان، GMA Next-Gen SDK توفّر ما يلي:

    التحميل باستخدام واجهة برمجة التطبيقات لتحميل إعلان واحد

    يوضّح لك المثال التالي كيفية تحميل إعلان واحد:

    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 GMA Next-Gen SDK.
        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 = "/21775744923/example/interstitial"
      }
    }
    

    جافا

    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 = "/21775744923/example/interstitial";
      private InterstitialAd interstitialAd;
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        // Load ads after you initialize GMA Next-Gen SDK.
        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;
              }
            }
        );
      }
    }
    

    التحميل باستخدام واجهة برمجة التطبيقات لتحميل الإعلانات مسبقًا

    لبدء التحميل المسبق، اتّبِع الخطوات التالية:

    1. إعداد تهيئة التحميل المُسبق باستخدام طلب عرض الإعلان.

    2. ابدأ أداة التحميل المسبق للإعلانات البينية باستخدام رقم تعريف الوحدة الإعلانية وإعداد التحميل المسبق:

    Kotlin

    private fun startPreloading(adUnitId: String) {
      val adRequest = AdRequest.Builder(adUnitId).build()
      val preloadConfig = PreloadConfiguration(adRequest)
      InterstitialAdPreloader.start(adUnitId, preloadConfig)
    }
    
    

    جافا

    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)
    

    جافا

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

    جافا

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

    جافا

    // Show the ad.
    interstitialAd.show(InterstitialActivity.this);
    

    بعض أفضل الممارسات

    حدِّد ما إذا كانت "الإعلانات البينية" هي نوع الإعلان المناسب لتطبيقك.
    تحقّق "الإعلانات البينية" أفضل أداء في التطبيقات التي تتضمّن نقاط انتقال عادية. ويُنشئ إكمال مهمة داخل التطبيق، مثل مشاركة صورة أو إكمال مستوى في لعبة، نقطة انتقال من هذا النوع. احرص على تحديد النقاط في سير عمل تطبيقك التي ستعرض فيها "الإعلانات البينية" وكيفية تفاعل المستخدِم معها على الأرجح.
    تذكَّر إيقاف الإجراء مؤقتًا عند عرض "إعلان بيني".
    هناك العديد من أنواع "الإعلانات البينية" المختلفة: الإعلانات النصية والإعلانات المصوّرة وإعلانات الفيديو وغير ذلك. من المهم التأكّد من أنّ تطبيقك يعلّق أيضًا استخدام بعض الموارد عندما يعرض "إعلانًا بينيًا" للسماح للإعلان بالاستفادة منها. على سبيل المثال، عند إجراء طلب لعرض "إعلان بيني"، احرص على إيقاف أي مصدر إخراج للصوت يعرضه تطبيقك مؤقتًا.
    امنح وقتًا كافيًا للتحميل.
    كما أنّه من المهم التأكّد من عرض "الإعلانات البينية" في وقت مناسب، من المهم أيضًا التأكّد من عدم اضطرار المستخدِم إلى الانتظار حتى يتم تحميلها. يمكن أن يضمن تحميل الإعلان مسبقًا من خلال استدعاء load() قبل أن تنوي استدعاء show() أن يكون تطبيقك جاهزًا لعرض "إعلان بيني" تم تحميله بالكامل عندما يحين وقت عرضه.
    عدم عرض كمّ هائل من الإعلانات للمستخدمين
    زيادة معدّل تكرار "الإعلانات البينية" في تطبيقك قد تبدو ملائمة لزيادة الإيرادات، لكنّها قد تؤدي أيضًا إلى تدهور تجربة المستخدم وانخفاض نسب النقر إلى الظهور. احرص على ألا يتم مقاطعة المستخدِمين بشكل متكرر لدرجة تجعلهم غير قادرين على الاستمتاع باستخدام تطبيقك.

    مثال

    نزِّل التطبيق النموذجي الذي يوضّح كيفية استخدام GMA Next-Gen SDK وشغِّله.