Zdarzenia niestandardowe dotyczące reklam z nagrodą

Wymagania wstępne

Dokończ konfigurowanie zdarzeń niestandardowych.

Prośba o wyświetlenie reklamy z nagrodą

Gdy element zamówienia zdarzenia niestandardowego zostanie osiągnięty w łańcuchu zapośredniczenia kaskadowego, metoda loadRewardedAd() jest wywoływana dla nazwy klasy, podawane podczas tworzenia niestandardowego . W tym przypadku ta metoda znajduje się w SampleCustomEvent, a następnie wywołuje metodę loadRewardedAd()SampleRewardedCustomEventLoader.

Aby poprosić o reklamę z nagrodą, utwórz lub zmodyfikuj klasę rozszerzającą klasę Adapter, aby zaimplementować interfejs loadRewardedAd(). Dodatkowo utwórz nowe zajęcia, aby wdrożyć MediationRewardedAd.

W naszym przykładzie zdarzenia niestandardowego klasa SampleCustomEvent rozszerza klasę Adapter, a potem deleguje do niej wywołanie metody SampleRewardedCustomEventLoader.

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 odpowiada za następujące zadania:

  • Wczytywanie reklamy z nagrodą

  • Zaimplementuj interfejs MediationRewardedAd.

  • Odbieranie i zgłaszanie wywołań zwrotnych zdarzeń reklamy do pakietu SDK do reklam mobilnych Google

Opcjonalny parametr zdefiniowany w interfejsie Ad Managera to uwzględnionych w konfiguracji reklamy. Dostęp do parametru można uzyskać za pomocą adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD). Jest to zwykle identyfikator jednostki reklamowej wykorzystywany przez pakiet SDK sieci reklamowej wymagane przy tworzeniu wystąpienia obiektu reklamy.

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

W zależności od tego, czy udało się pobrać reklamę, czy wystąpił błąd, wywołasz metodę onSuccess() lub onFailure(). Funkcja onSuccess() jest wywoływana przez przekazanie instancji klasy, która implementuje MediationRewardedAd

Te metody są zwykle implementowane wewnątrz wywołań zwrotnych z funkcji pakietu SDK innej firmy wdrożonego przez adapter. W tym przykładzie pakiet SDK Sample ma element SampleAdListener z odpowiednimi wywołaniami zwrotnymi:

Java

@Override
public void onRewardedAdLoaded() {
  rewardedAdCallback = mediationAdLoadCallback.onSuccess(this);
}

@Override
public void onRewardedAdFailedToLoad(SampleErrorCode errorCode) {
    mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode));
}

Aby wyświetlać, MediationRewardedAd wymaga implementacji metody showAd() reklama:

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

Przekierowywanie zdarzeń zapośredniczenia do pakietu SDK do reklam mobilnych Google

Po wywołaniu funkcji onSuccess() zwrócona wartość MediationRewardedAdCallback może być następnie używany przez adapter do przekazywania zdarzeń prezentacji z interfejsu zewnętrznego pakietu SDK do pakietu SDK do reklam mobilnych Google. Klasa SampleRewardedCustomEventLoader rozszerza interfejs SampleAdListener, aby przekazywać wywołania zwrotne z próbnej sieci reklamowej do pakietu SDK do reklam mobilnych Google.

Ważne jest, aby zdarzenie niestandardowe przekazuje jak najwięcej z tych wywołań zwrotnych by aplikacja otrzymywała te same zdarzenia z Google Pakiet SDK do reklam mobilnych. Oto przykład użycia wywołań zwrotnych:

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

Spowoduje to zakończenie implementacji zdarzeń niestandardowych w reklamach z nagrodą. Pełny przykład jest dostępny na GitHubie. Możesz go używać w sieci reklamowej, która jest już obsługiwana, lub zmienić ją na aby wyświetlać niestandardowe reklamy z nagrodą.