المتطلّبات الأساسية
- 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()
سبب عدم جاهزية المحوّل لخدمة طلبات الإعلان.