Ön koşullar
Özel etkinlik kurulumunu tamamlayın.
Ödüllü reklam isteğinde bulunma
Şelale uyumlulaştırma zincirinde özel etkinlik satır öğesine ulaşıldığında, özel etkinlik oluştururken sağladığınız sınıf adında loadRewardedAd() yöntemi çağrılır. Bu durumda, söz konusu yöntem SampleCustomEvent içinde yer alır ve loadRewardedAd() yöntemini SampleRewardedCustomEventLoader içinde çağırır.
Ödüllü reklam isteğinde bulunmak için Adapter sınıfını genişleten bir sınıf oluşturun veya mevcut bir sınıfı değiştirerek loadRewardedAd() sınıfını uygulayın. Ayrıca, MediationRewardedAd uygulayacak yeni bir sınıf oluşturun.
Özel etkinlik örneğimizde, SampleCustomEvent, Adapter sınıfını genişletir ve ardından SampleRewardedCustomEventLoader sınıfına yetki verir.
Java
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 aşağıdaki görevlerden sorumludur:
Ödüllü reklam yükleniyor
MediationRewardedAdarayüzünü uygulamaGoogle Mobile Ads SDK (Legacy)'ya reklam etkinliği geri aramaları alma ve bunları bildirme.
AdMob kullanıcı arayüzünde tanımlanan isteğe bağlı parametre, reklam yapılandırmasına dahil edilir. Parametreye adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD) üzerinden erişilebilir.
Bu parametre genellikle bir reklam ağı SDK'sının reklam nesnesi örneklendirirken gerektirdiği bir reklam birimi tanımlayıcısıdır.
Java
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; } }
Reklamın başarıyla getirilip getirilmediğine veya bir hatayla karşılaşıp karşılaşmadığına bağlı olarak
onSuccess()
veya
onFailure() yöntemini çağırırsınız.
onSuccess(), MediationRewardedAd uygulayan sınıfın bir örneği iletilerek çağrılır.
Genellikle bu yöntemler, bağdaştırıcınızın uyguladığı üçüncü taraf SDK'sından gelen geri çağırmalarda uygulanır. Bu örnekte, Sample SDK'sında alakalı geri çağırmaların bulunduğu bir SampleAdListener var:
Java
@Override public void onRewardedAdLoaded() { rewardedAdCallback = mediationAdLoadCallback.onSuccess(this); } @Override public void onRewardedAdFailedToLoad(SampleErrorCode errorCode) { mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode)); }
MediationRewardedAd, reklamı göstermek için bir showAd() yönteminin uygulanmasını gerektirir:
Java
@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); }
Uyumlulaştırma etkinliklerini Google Mobile Ads SDK (Legacy) hedefine yönlendirme
onSuccess() çağrıldıktan sonra döndürülen MediationRewardedAdCallback
nesnesi, sunum etkinliklerini üçüncü taraf SDK'sından Google Mobile Ads SDK (Legacy)'ye yönlendirmek için bağdaştırıcı tarafından kullanılabilir. SampleRewardedCustomEventLoader sınıfı, örnek reklam ağından gelen geri çağırmaları Google Mobile Ads SDK'sına iletmek için SampleAdListener arayüzünü genişletir.
Uygulamanızın Google Mobile Ads SDK (Legacy) tarafından bu eşdeğer etkinlikleri alabilmesi için özel etkinliğinizin mümkün olduğunca çok geri çağırma iletmesi önemlidir. Geri çağırmaların kullanımına ilişkin bir örneği aşağıda bulabilirsiniz:
Java
@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(); }
Bu işlem, ödüllü reklamlar için özel etkinlik uygulamasını tamamlar. Örneklerin tamamını GitHub'da bulabilirsiniz. Bu özelliği, halihazırda desteklenen bir reklam ağıyla kullanabilir veya özel etkinlik ödüllü reklamları gösterecek şekilde değiştirebilirsiniz.