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

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

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

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

  • SDK لإعلانات Google على الأجهزة الجوّالة 19.7.0 أو إصدار أحدث.
  • اتّبع دليل البدء لاستيراد حزمة SDK لإعلانات Google على الأجهزة الجوّالة وتعديل بيان Android.

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

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

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

ca-app-pub-3940256099942544/1033173712

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

للاطّلاع على مزيد من المعلومات حول آلية عمل الإعلانات الاختبارية لحزمة تطوير البرامج (SDK) للإعلانات على الأجهزة الجوّالة، راجِع الإعلانات الاختبارية.

تحميل إعلان

لتحميل إعلان بيني، اطلب الطريقة InterstitialAd الثابتة load() ومرر إلى InterstitialAdLoadCallback لتلقي الإعلان الذي تم تحميله أو أي أخطاء محتملة. ملاحظة: مثلما يستدعي استدعاءات تحميل التنسيقات الأخرى، InterstitialAdLoadCallback LoadAdError لتقديم تفاصيل خطأ أعلى دقة.

Java

import com.google.android.gms.ads.interstitial.InterstitialAd;
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback;

public class MainActivity extends Activity {

    private InterstitialAd mInterstitialAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      MobileAds.initialize(this, new OnInitializationCompleteListener() {
        @Override
        public void onInitializationComplete(InitializationStatus initializationStatus) {}
      });
      AdRequest adRequest = new AdRequest.Builder().build();

      InterstitialAd.load(this,"ca-app-pub-3940256099942544/1033173712", adRequest,
        new InterstitialAdLoadCallback() {
      @Override
      public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
        // The mInterstitialAd reference will be null until
        // an ad is loaded.
        mInterstitialAd = interstitialAd;
        Log.i(TAG, "onAdLoaded");
      }

      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
        // Handle the error
        Log.d(TAG, loadAdError.toString());
        mInterstitialAd = null;
      }
    });
  }
}

Kotlin

import com.google.android.gms.ads.interstitial.InterstitialAd;
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback;
class MainActivity : AppCompatActivity() {
  private var mInterstitialAd: InterstitialAd? = null
  private final var TAG = "MainActivity"
    override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)

      var adRequest = AdRequest.Builder().build()

      InterstitialAd.load(this,"ca-app-pub-3940256099942544/1033173712", adRequest, object : InterstitialAdLoadCallback() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
          Log.d(TAG, adError?.toString())
          mInterstitialAd = null
        }

        override fun onAdLoaded(interstitialAd: InterstitialAd) {
          Log.d(TAG, 'Ad was loaded.')
          mInterstitialAd = interstitialAd
        }
      })
    }
}

إعداد FullScreenContentCallback

تعالج العلامة FullScreenContentCallback الأحداث ذات الصلة بعرض InterstitialAd. قبل عرض InterstitialAd، احرص على ضبط معاودة الاتصال:

Java

mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback(){
  @Override
  public void onAdClicked() {
    // Called when a click is recorded for an ad.
    Log.d(TAG, "Ad was clicked.");
  }

  @Override
  public void onAdDismissedFullScreenContent() {
    // Called when ad is dismissed.
    // Set the ad reference to null so you don't show the ad a second time.
    Log.d(TAG, "Ad dismissed fullscreen content.");
    mInterstitialAd = null;
  }

  @Override
  public void onAdFailedToShowFullScreenContent(AdError adError) {
    // Called when ad fails to show.
    Log.e(TAG, "Ad failed to show fullscreen content.");
    mInterstitialAd = null;
  }

  @Override
  public void onAdImpression() {
    // Called when an impression is recorded for an ad.
    Log.d(TAG, "Ad recorded an impression.");
  }

  @Override
  public void onAdShowedFullScreenContent() {
    // Called when ad is shown.
    Log.d(TAG, "Ad showed fullscreen content.");
  }
});

Kotlin

mInterstitialAd?.fullScreenContentCallback = object: FullScreenContentCallback() {
  override fun onAdClicked() {
    // Called when a click is recorded for an ad.
    Log.d(TAG, "Ad was clicked.")
  }

  override fun onAdDismissedFullScreenContent() {
    // Called when ad is dismissed.
    Log.d(TAG, "Ad dismissed fullscreen content.")
    mInterstitialAd = null
  }

  override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
    // Called when ad fails to show.
    Log.e(TAG, "Ad failed to show fullscreen content.")
    mInterstitialAd = null
  }

  override fun onAdImpression() {
    // Called when an impression is recorded for an ad.
    Log.d(TAG, "Ad recorded an impression.")
  }

  override fun onAdShowedFullScreenContent() {
    // Called when ad is shown.
    Log.d(TAG, "Ad showed fullscreen content.")
  }
}

عرض الإعلان

يجب أن تظهر الإعلانات البينية أثناء فترات الإيقاف المؤقت الطبيعية في تدفق التطبيقات. ومن بين المستويات في اللعبة مثالاً جيدًا، أو بعد إكمال المستخدم لمهمة. لعرض إعلان بيني، استخدِم طريقة show().

Java

if (mInterstitialAd != null) {
  mInterstitialAd.show(MyActivity.this);
} else {
  Log.d("TAG", "The interstitial ad wasn't ready yet.");
}

Kotlin

if (mInterstitialAd != null) {
  mInterstitialAd?.show(this)
} else {
  Log.d("TAG", "The interstitial ad wasn't ready yet.")
}

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

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

رمز المصدر

أمثلة على GitHub

  • مثال على الإعلانات البينية: Java | Kotlin

قصص النجاح

الخطوات اللاحقة