الإعلانات بمكافأة

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

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

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

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

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

ca-app-pub-3940256099942544/5224354917

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

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

تحميل عنصر إعلان بمكافأة

يتم تحميل الإعلانات بمكافأة عن طريق استدعاء طريقة load() الثابتة في الصف RewardedAd وتمرير RewardedAdLoadCallback. ويتم ذلك عادةً باستخدام طريقة onCreate() في Activity. وتجدر الإشارة إلى أنّ RewardedAdLoadCallback تستفيد من LoadAdError لتقديم تفاصيل أعلى دقة عن الأخطاء، كما هو الحال مع استدعاءات التنسيق الأخرى.

Java

import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {
  private RewardedAd mRewardedAd;
  private final String TAG = "MainActivity";

  @Override
  protected void onCreate(Bundle savedInstanceState) {

    AdRequest adRequest = new AdRequest.Builder().build();

    RewardedAd.load(this, "ca-app-pub-3940256099942544/5224354917",
      adRequest, new RewardedAdLoadCallback() {
        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
          // Handle the error.
          Log.d(TAG, loadAdError.toString());
          mRewardedAd = null;
        }

        @Override
        public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
          mRewardedAd = rewardedAd;
          Log.d(TAG, "Ad was loaded.");
        }
    });
  }
}

Kotlin

class MainActivity : AppCompatActivity() {

  private var mRewardedAd: RewardedAd? = null
  private final var TAG = "MainActivity"

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

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

    RewardedAd.load(this,"ca-app-pub-3940256099942544/5224354917", adRequest, object : RewardedAdLoadCallback() {
      override fun onAdFailedToLoad(adError: LoadAdError) {
        Log.d(TAG, adError?.toString())
        mRewardedAd = null
      }

      override fun onAdLoaded(rewardedAd: RewardedAd) {
        Log.d(TAG, "Ad was loaded.")
        mRewardedAd = rewardedAd
       }
    })
  }
}

إعداد FullScreenContentCallback

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

Java

mRewardedAd.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.");
    mRewardedAd = null;
  }

  @Override
  public void onAdFailedToShowFullScreenContent(AdError adError) {
    // Called when ad fails to show.
    Log.e(TAG, "Ad failed to show fullscreen content.");
    mRewardedAd = 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

mRewardedAd?.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.
    // Set the ad reference to null so you don't show the ad a second time.
    Log.d(TAG, "Ad dismissed fullscreen content.")
    mRewardedAd = null
  }

  override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
    // Called when ad fails to show.
    Log.e(TAG, "Ad failed to show fullscreen content.")
    mRewardedAd = 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.")
  }
}

عرض الإعلان

عند عرض إعلان بمكافأة، ستستخدم عنصرًا OnUserEarnedRewardListener لالتعامل مع أحداث المكافآت.

Java

if (mRewardedAd != null) {
  Activity activityContext = MainActivity.this;
  mRewardedAd.show(activityContext, new OnUserEarnedRewardListener() {
    @Override
    public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
      // Handle the reward.
      Log.d(TAG, "The user earned the reward.");
      int rewardAmount = rewardItem.getAmount();
      String rewardType = rewardItem.getType();
    }
  });
} else {
  Log.d(TAG, "The rewarded ad wasn't ready yet.");
}

Kotlin

if (mRewardedAd != null) {
  mRewardedAd?.show(this, OnUserEarnedRewardListener() {
    fun onUserEarnedReward(rewardItem: RewardItem) {
      var rewardAmount = rewardItem.amount
      var rewardType = rewardItem.type
      Log.d(TAG, "User earned the reward.")
    }
  })
} else {
  Log.d(TAG, "The rewarded ad wasn't ready yet.")
}

الأسئلة الشائعة

هل انتهت المهلة لمكالمة الإعداد؟
بعد 10 ثوانٍ، يستدعي حزمة SDK لإعلانات Google على الأجهزة الجوّالة OnInitializationCompleteListener حتى إذا لم تكمل شبكة التوسط عملية الإعداد.
ماذا لو لم تكن بعض شبكات التوسط جاهزة عندما أتلقّى معاودة الاتصال؟

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

يمكنك مواصلة استطلاع حالة الإعداد لجميع المحوّلات من خلال جلسة التطبيق من خلال الاتصال بالرقم MobileAds.getInitializationStatus().

كيف يمكنني معرفة سبب عدم جاهزية شبكة توسط معيّنة؟

يصف AdapterStatus.getDescription() سبب عدم جاهزية المحوّل لخدمة طلبات الإعلان.

أمثلة على GitHub

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