المتطلبات الأساسية
- SDK لإعلانات Google على الأجهزة الجوّالة 19.7.0 أو إصدار أحدث.
- أكمِل دليل البدء.
الاختبار دائمًا باستخدام الإعلانات التجريبية
عند إنشاء تطبيقاتك واختبارها، احرص على استخدام إعلانات تجريبية بدلاً من إعلانات الإنتاج المباشر. ويمكن أن يؤدي عدم الالتزام بذلك إلى تعليق حسابك.
أسهل طريقة لتحميل الإعلانات الاختبارية هي استخدام رقم تعريف الوحدة الإعلانية الاختبارية المخصّصة للإعلانات بمكافأة التي تعمل بنظام التشغيل 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 } }) } }
[اختياري] التحقّق من استدعاءات التحقق من جهة الخادم (SSV)
يجب أن تستخدم التطبيقات التي تتطلب بيانات إضافية في عمليات استدعاء التحقّق من جهة الخادم ميزة البيانات المخصّصة للإعلانات بمكافأة. يتم تمرير أي قيمة سلسلة يتم ضبطها على كائن إعلان بمكافأة إلى معلَمة طلب البحث custom_data
لاستدعاء SSV. وفي حال عدم ضبط قيمة مخصّصة للبيانات، لن تكون قيمة معلّمة طلب البحث custom_data
متوفّرة في معاودة الاتصال بميزة SSV.
يعرض نموذج الرمز التالي كيفية إعداد بيانات مخصّصة على عنصر إعلان بمكافأة قبل طلب إعلان.
Java
RewardedAd.load(MainActivity.this, "ca-app-pub-3940256099942544/5354046379", new AdRequest.Builder().build(), new RewardedAdLoadCallback() { @Override public void onAdLoaded(RewardedAd ad) { Log.d(TAG, "Ad was loaded."); rewardedAd = ad; ServerSideVerificationOptions options = new ServerSideVerificationOptions .Builder() .setCustomData("SAMPLE_CUSTOM_DATA_STRING") .build(); rewardedAd.setServerSideVerificationOptions(options); } @Override public void onAdFailedToLoad(LoadAdError loadAdError) { Log.d(TAG, loadAdError.toString()); rewardedAd = null; } });
Kotlin
RewardedAd.load(this, "ca-app-pub-3940256099942544/5354046379", AdRequest.Builder().build(), object : RewardedAdLoadCallback() { override fun onAdLoaded(ad: RewardedAd) { Log.d(TAG, "Ad was loaded.") rewardedInterstitialAd = ad val options = ServerSideVerificationOptions.Builder() .setCustomData("SAMPLE_CUSTOM_DATA_STRING") .build() rewardedAd.setServerSideVerificationOptions(options) } override fun onAdFailedToLoad(adError: LoadAdError) { Log.d(TAG, adError?.toString()) rewardedAd = null } })
إذا أردت ضبط سلسلة المكافأة المخصّصة، عليك تنفيذ ذلك قبل عرض الإعلان.
إعداد 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()
سبب عدم جاهزية المحوّل لخدمة طلبات الإعلان.- هل يتم دائمًا استدعاء استدعاء
onUserEarnedReward()
قبل معاودة الاتصالonAdDismissedFullScreenContent()
؟ بالنسبة إلى "إعلانات Google"، تحدث جميع المكالمات البالغ عددها
onUserEarnedReward()
قبلonAdDismissedFullScreenContent()
. بالنسبة إلى الإعلانات التي يتم عرضها من خلال التوسط، يحدد تنفيذ حزمة تطوير البرامج (SDK) لشبكة المواقع الإعلانية التابعة لطرف ثالث ترتيب معاودة الاتصال. بالنسبة إلى حِزم تطوير البرامج (SDK) لشبكة المواقع الإعلانية التي توفّر استدعاءً واحدًا وقريبًا مع معلومات المكافأة، يستدعي محوِّل التوسطonUserEarnedReward()
قبلonAdDismissedFullScreenContent()
.