پیشنیازها
راهاندازی رویدادهای سفارشی را تکمیل کنید.
درخواست آگهی پاداشدار
وقتی مورد خط رویداد سفارشی در زنجیره واسطهگری آبشاری فرا میرسد،
متد loadRewardedAd() در نام کلاسی که
هنگام ایجاد رویداد سفارشی ارائه کردهاید فراخوانده میشود. در این مورد،
این روش در SampleCustomEvent است که سپس روش loadRewardedAd()
را در SampleRewardedCustomEventLoader فرا میخواند.
برای درخواست آگهی پاداشدار، کلاسی بسازید یا اصلاح کنید که Adapter را گسترش دهد تا loadRewardedAd() را پیادهسازی کند. علاوهبراین، کلاس جدیدی برای پیادهسازی
MediationRewardedAd ایجاد کنید.
در مثال رویداد سفارشی ما،
SampleCustomEvent کلاس Adapter را گسترش میدهد و سپس به
SampleRewardedCustomEventLoader واگذار میکند.
جاوا
package com.google.ads.mediation.sample.customevent; import com.google.android.gms.ads.mediation.Adapter; import com.google.android.gms.ads.mediation.MediationRewardedAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdLoadCallback; import com.google.android.gms.ads.mediation.MediationRewardedAd; import com.google.android.gms.ads.mediation.MediationRewardedAdCallback; ... public class SampleCustomEvent extends Adapter { private SampleNativeCustomEventLoader nativeLoader; @Override public void loadRewardedAd( @NonNull MediationRewardedAdConfiguration mediationRewardedAdConfiguration, @NonNull MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> mediationAdLoadCallback) { rewardedLoader = new SampleRewardedCustomEventLoader( mediationRewardedAdConfiguration, mediationAdLoadCallback); rewardedLoader.loadAd(); } }
SampleRewardedCustomEventLoader مسئول انجام تکالیف زیر است:
درحال بار کردن آگهی پاداشدار
درحال پیادهسازی میانای
MediationRewardedAd.درحال دریافت و گزارش کردن برگشتیهای رویداد آگهی به Google Mobile Ads SDK (Legacy).
پارامتر اختیاری تعریفشده در «واسط کاربر Ad Manager» در پیکربندی آگهی
گنجانده شده است. ازطریق
adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD) میتوان به این پارامتر دسترسی پیدا کرد.
این پارامتر معمولاً شناسه واحد آگهی است که کیت توسعه نرمافزار شبکه آگهی
هنگام نمونهسازی شیء آگهی به آن نیاز دارد.
جاوا
package com.google.ads.mediation.sample.customevent; import com.google.android.gms.ads.mediation.Adapter; import com.google.android.gms.ads.mediation.MediationRewardedAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdLoadCallback; import com.google.android.gms.ads.mediation.MediationRewardedAd; import com.google.android.gms.ads.mediation.MediationRewardedAdCallback; ... public class SampleRewardedCustomEventLoader extends SampleRewardedAdListener implements MediationRewardedAd { /** Configuration for requesting the rewarded ad from the third-party network. */ private final MediationRewardedAdConfiguration mediationRewardedAdConfiguration; /** * A {@link MediationAdLoadCallback} that handles any callback when a Sample * rewarded ad finishes loading. */ private final MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> mediationAdLoadCallback; /** Callback for rewarded ad events. */ private MediationRewardedAdCallback rewardedAdCallback; /** Constructor. */ public SampleRewardedCustomEventLoader( @NonNull MediationRewardedAdConfiguration mediationRewardedAdConfiguration, @NonNull MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> mediationAdLoadCallback) { this.mediationRewardedAdConfiguration = mediationRewardedAdConfiguration; this.mediationAdLoadCallback = mediationAdLoadCallback; } /** Loads the rewarded ad from the third-party ad network. */ public void loadAd() { // All custom events have a server parameter named "parameter" that returns // back the parameter entered into the AdMob UI when defining the custom event. Log.i("RewardedCustomEvent", "Begin loading rewarded ad."); String serverParameter = mediationRewardedAdConfiguration .getServerParameters() .getString(MediationConfiguration .CUSTOM_EVENT_SERVER_PARAMETER_FIELD); Log.d("RewardedCustomEvent", "Received server parameter."); SampleAdRequest request = createSampleRequest(mediationRewardedAdConfiguration); sampleRewardedAd = new SampleRewardedAd(serverParameter); sampleRewardedAd.setListener(this); Log.i("RewardedCustomEvent", "Start fetching rewarded ad."); sampleRewardedAd.loadAd(request); } public SampleAdRequest createSampleRequest( MediationAdConfiguration mediationAdConfiguration) { SampleAdRequest request = new SampleAdRequest(); request.setTestMode(mediationAdConfiguration.isTestRequest()); request.setKeywords(mediationAdConfiguration.getMediationExtras().keySet()); return request; } }
بسته به اینکه آگهی باموفقیت واکشی شود یا با خطا مواجه شود،
یا
onSuccess()
یا
onFailure() را فراخوانی میکنید.
onSuccess() با ارسال نمونهای از کلاسی که
MediationRewardedAd را پیادهسازی میکند فراخوانده میشود.
معمولاً این روشها در داخل برگشت تماس از کیت توسعه نرمافزار طرف سوم که آداپتور شما پیادهسازی میکند، پیادهسازی میشوند. برای این مثال، «کیت توسعه نرمافزار نمونه»
دارای SampleAdListener با برگشتیهای مربوطه است:
جاوا
@Override public void onRewardedAdLoaded() { rewardedAdCallback = mediationAdLoadCallback.onSuccess(this); } @Override public void onRewardedAdFailedToLoad(SampleErrorCode errorCode) { mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode)); }
MediationRewardedAd برای نمایش آگهی باید روش showAd() را پیادهسازی کند:
جاوا
@Override public void showAd(Context context) { if (!(context instanceof Activity)) { rewardedAdCallback.onAdFailedToShow( SampleCustomEventError.createCustomEventNoActivityContextError()); return; } Activity activity = (Activity) context; if (!sampleRewardedAd.isAdAvailable()) { rewardedAdCallback.onAdFailedToShow( SampleCustomEventError.createCustomEventAdNotAvailableError()); return; } sampleRewardedAd.showAd(activity); }
رویدادهای واسطهگری را به Google Mobile Ads SDK (Legacy) بازارسال کنید
پساز فراخوانی onSuccess()، شیء MediationRewardedAdCallback
برگرداندهشده میتواند توسط آداپتور برای بازارسال رویدادهای ارائه از کیت توسعه نرمافزار طرف سوم به Google Mobile Ads SDK (Legacy) استفاده شود. کلاس
SampleRewardedCustomEventLoader رابط SampleAdListener
را گسترش میدهد تا برگشتیها را از شبکه آگهی نمونه به «کیت توسعه نرمافزار تبلیغات تلفن همراه Google» بازارسال کند.
مهم است که رویداد سفارشی شما تا حد امکان این برگشتیها را بازارسال کند تا برنامه شما این رویدادهای معادل را از Google Mobile Ads SDK (Legacy) دریافت کند. در اینجا نمونهای از استفاده از «بازخوانها» آورده شده است:
جاوا
@Override public void onAdRewarded(final String rewardType, final int amount) { RewardItem rewardItem = new RewardItem() { @Override public String getType() { return rewardType; } @Override public int getAmount() { return amount; } }; rewardedAdCallback.onUserEarnedReward(rewardItem); } @Override public void onAdClicked() { rewardedAdCallback.reportAdClicked(); } @Override public void onAdFullScreen() { rewardedAdCallback.onAdOpened(); rewardedAdCallback.onVideoStart(); rewardedAdCallback.reportAdImpression(); } @Override public void onAdClosed() { rewardedAdCallback.onAdClosed(); } @Override public void onAdCompleted() { rewardedAdCallback.onVideoComplete(); }
این کار پیادهسازی رویدادهای سفارشی را برای آگهیهای پاداشدار تکمیل میکند. مثال کامل در GitHub دردسترس است. میتوانید از آن با شبکه آگهی که ازقبل پشتیبانی میشود استفاده کنید یا آن را برای نمایش آگهیهای پاداشدار رویداد سفارشی اصلاح کنید.