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

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

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

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

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

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

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

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

    ca-app-pub-3940256099942544/1033173712

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

    للحصول على تفاصيل حول 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 = "ca-app-pub-3940256099942544/1033173712"
      }
    }
    

    جافا

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