"الإعلانات البينية مقابل مكافأة" هي شكل إعلاني يتيح لك تقديم مكافآت مقابل الإعلانات التي تظهر تلقائيًا أثناء عمليات الانتقال الطبيعية في التطبيق. على عكس "الإعلانات مقابل مكافأة"، لا يُطلب من المستخدمين الموافقة على عرض "الإعلانات البينية مقابل مكافأة". لمزيد من المعلومات، يُرجى الاطّلاع على إرشادات "الإعلانات البينية مقابل مكافأة".
يشرح هذا الدليل كيفية دمج "الإعلانات البينية مقابل مكافأة" في تطبيق Android.
قبل البدء
قبل المتابعة، عليك تنفيذ ما يلي:
- إعداد GMA Next-Gen SDK
- استخدِم معرّف الوحدة الإعلانية الاختبارية للإعلانات البينية مقابل مكافأة
ca-app-pub-3940256099942544/5354046379.- عند إنشاء تطبيقك واختباره، تأكَّد من استخدام الإعلانات الاختبارية بدلاً من الإعلانات المباشرة والنهائية. إذا لم تستخدم معرّف الوحدة الإعلانية الاختبارية، يمكن أن تعلّق Google حسابك.
- قبل نشر تطبيقك، استبدِل هذا المعرّف بمعرّف الوحدة الإعلانية.
- لمعرفة تفاصيل عن الإعلانات الاختبارية في GMA Next-Gen SDK، يُرجى الاطّلاع على مقالة تفعيل الإعلانات الاختبارية.
تحميل إعلان
يحمّل المثال التالي إعلانًا واحدًا:
Kotlin
// Load ads after you initialize MobileAds. RewardedInterstitialAd.load( AdRequest.Builder(adUnitId).build(), object : AdLoadCallback<RewardedInterstitialAd> { override fun onAdLoaded(ad: RewardedInterstitialAd) { // Rewarded interstitial ad loaded. rewardedInterstitialAd = ad } override fun onAdFailedToLoad(adError: LoadAdError) { // Rewarded interstitial ad failed to load. Log.e(TAG, "Rewarded interstitial ad failed to load: ${adError.message}") rewardedInterstitialAd = null } }, )
جافا
// Load ads after you initialize MobileAds. RewardedInterstitialAd.load( new AdRequest.Builder(adUnitId).build(), new AdLoadCallback<RewardedInterstitialAd>() { @Override public void onAdLoaded(@NonNull RewardedInterstitialAd ad) { // Rewarded interstitial ad loaded. rewardedInterstitialAd = ad; } @Override public void onAdFailedToLoad(@NonNull LoadAdError adError) { // Rewarded interstitial ad failed to load. Log.e(TAG, "Rewarded interstitial ad failed to load: " + adError.getMessage()); rewardedInterstitialAd = null; } });
عند الاختبار، استخدِم معرّف الوحدة الإعلانية الاختبارية:
ca-app-pub-3940256099942544/5354046379.
عرض الإعلان
لعرض "إعلان بيني مقابل مكافأة"، استخدِم طريقةshow. للتعامل مع أحداث المكافآت، استخدِم عنصر
OnUserEarnedRewardListener.
يعرض المثال التالي الإعلان:
Kotlin
private fun showAd(rewardedInterstitialAd: RewardedInterstitialAd, activity: Activity) { // Show the ad. rewardedInterstitialAd.show( activity, object : OnUserEarnedRewardListener { override fun onUserEarnedReward(rewardItem: RewardItem) { // User earned the reward. val rewardAmount = rewardItem.amount val rewardType = rewardItem.type } }, ) }
جافا
private void showAd(RewardedInterstitialAd rewardedInterstitialAd, Activity activity) { // Show the ad. rewardedInterstitialAd.show( activity, new OnUserEarnedRewardListener() { @Override public void onUserEarnedReward(@NonNull RewardItem rewardItem) { // User earned the reward. int rewardAmount = rewardItem.getAmount(); String rewardType = rewardItem.getType(); } }); }
الاستماع إلى أحداث الإعلانات
قبل عرض الإعلان، استمِع إلى أحداث مراحل نشاط الإعلان. يسجّل المثال التالي عمليات الاستدعاء لأحداث الإعلانات:
Kotlin
private fun listenToAdEvents() { // Listen for ad events. val ad = rewardedInterstitialAd if (ad == null) { Log.e(TAG, "Rewarded interstitial ad is not ready yet.") return } ad.adEventCallback = object : RewardedInterstitialAdEventCallback { override fun onAdShowedFullScreenContent() { // Rewarded interstitial ad did show. } override fun onAdDismissedFullScreenContent() { // Rewarded interstitial ad did dismiss. rewardedInterstitialAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // Rewarded interstitial ad failed to show. Log.e(TAG, "Rewarded interstitial ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // Rewarded interstitial ad did record an impression. } override fun onAdClicked() { // Rewarded interstitial ad did record a click. } } }
جافا
private void listenToAdEvents() { // Listen for ad events. if (rewardedInterstitialAd == null) { Log.e(TAG, "Rewarded interstitial ad is not ready yet."); return; } rewardedInterstitialAd.setAdEventCallback( new RewardedInterstitialAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // Rewarded interstitial ad did show. } @Override public void onAdDismissedFullScreenContent() { // Rewarded interstitial ad did dismiss. rewardedInterstitialAd = null; } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { // Rewarded interstitial ad failed to show. Log.e( TAG, "Rewarded interstitial ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // Rewarded interstitial ad did record an impression. } @Override public void onAdClicked() { // Rewarded interstitial ad did record a click. } }); }
اختياري: التحقّق من صحة عمليات معاودة الاتصال في ميزة "التحقّق من جهة الخادم" (SSV)
لتمرير سياق المستخدم والتطبيق في عمليات معاودة الاتصال من خلال عملية التحقّق من جهة الخادم، اضبط خيارات التحقّق في عنصر الإعلان قبل عرض الإعلان. بما أنّ عمليات معاودة الاتصال للتحقّق من صحة العرض على الخادم تصل إلى خادمك من Google بدون حالة الجلسة، عليك إرفاق السلاسل الاختيارية التالية. تعيد Google توجيه هذه السلاسل بدون تغيير كمَعلمات طلب بحث موقَّعة في طلب معاودة الاتصال للتحقّق من جهة الخادم:
- معلمة طلب البحث
user_id: تحدّد المستخدم الذي ستتم مكافأته، مثل رقم تعريف حساب داخلي. - معلمة طلب البحث
custom_data: تحمل بيانات التطبيق، مثل موضع المكافأة أو مستوى اللعبة أو رقم خاص يتم إنشاؤه من الخادم.
إذا لم تضبط قيمة، ستحذف Google مَعلمة طلب البحث هذه من طلب معاودة الاتصال للتحقّق من صحة الخادم.
يضبط المثال التالي بيانات مخصّصة على عنصر إعلان قبل عرض الإعلان:
Kotlin
جافا
استبدِل SAMPLE_CUSTOM_DATA_STRING ببياناتك
المخصّصة.
ملاحظة أساسية: يتم ترميز custom_data مَعلمة طلب البحث
بالنسبة المئوية. قبل تحليل القيمة، عليك فك ترميز عنوان URL للسلسلة على الخادم والتحقّق من توقيع معاودة الاتصال قبل الوثوق بمعلمات طلب البحث user_id أو custom_data.