Ödüllü reklamlar özel etkinlikleri

Ön koşullar

Özel etkinlik ayarlarını tamamlayın.

Ödüllü reklam isteme

Şelale uyumlulaştırma zincirinde özel etkinlik satır öğesine ulaşıldığında, özel etkinlik oluştururken belirttiğiniz sınıf adında loadRewardedAd() yöntemi çağrılır. Böyle durumlarda bu yöntem SampleCustomEvent içindedir ve bu yöntem de loadRewardedAd() yöntemini SampleRewardedCustomEventLoader içinde değiştirebilirsiniz.

Ödüllü reklam isteğinde bulunmak için loadRewardedAd() uygulamak üzere Adapter'yi genişleten bir sınıf oluşturun veya mevcut bir sınıfta değişiklik yapın. Ayrıca, uygulamak için yeni bir sınıf oluşturun MediationRewardedAd

Özel etkinlik örneğimizde, SampleCustomEvent sınıfını genişleten SampleRewardedCustomEventLoader, 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ükleme

  • MediationRewardedAd arayüzünü uygulama

  • Google Mobile Ads SDK'sına reklam etkinliği geri çağırma isteklerini alma ve raporlama

AdMob kullanıcı arayüzünde tanımlanan isteğe bağlı parametre 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 etkinleştirdiği reklam birimi tanımlayıcısıdır örnek oluştururken gerekir.

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ılı bir şekilde getirilmesine veya bir hatayla karşılaşmasına bağlı olarak ondan birini onSuccess() veya onFailure(). onSuccess(), MediationRewardedAd'u uygulayan sınıfın bir örneği geçirilerek çağrılır.

Genellikle bu yöntemler üçüncü taraf SDK'sı oluşturun. Bu örnekte, Örnek SDK'da alakalı geri çağırmalara sahip bir SampleAdListener vardır:

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'sına yönlendirme

onSuccess() çağrıldıktan sonra döndürülen MediationRewardedAdCallback nesnesi, üçüncü taraf SDK'sındaki sunum etkinliklerini Google Mobile Ads SDK'sına iletmek için bağdaştırıcının kullanabileceği bir nesnedir. İlgili içeriği oluşturmak için kullanılan SampleRewardedCustomEventLoader sınıfı SampleAdListener kapsamına girer örnek reklam ağından Google Mobil Ads SDK'sı.

Uygulamanızın Google Mobile Ads SDK'sından bu eşdeğer etkinlikleri alması için özel etkinliğinizin bu geri çağırmalardan mümkün olduğunca fazlasını iletmesi önemlidir. Aşağıda, geri çağırma işlevinin kullanımına dair bir örnek verilmiştir:

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();
}

Böylece ödüllü reklamlar için özel etkinlik uygulaması tamamlanır. Tam örneğin şurada mevcuttur: GitHub'a gidin. Bu özelliği, halihazırda desteklenen bir reklam ağı ile kullanabilir veya özel etkinlik ödüllü reklamlar göstermek için değiştirebilirsiniz.