Wymagania wstępne
Skonfiguruj zdarzenia niestandardowe.
Wysyłanie żądania reklamy pełnoekranowej
Gdy w łańcuchu zapośredniczenia kaskadowego zostanie osiągnięta pozycja zdarzenia niestandardowego,
w klasie o nazwie podanej podczas
tworzenia zdarzenia niestandardowegozostanie wywołana metoda loadInterstitialAd(). W tym przypadku metoda ta znajduje się w klasie SampleCustomEvent, która następnie wywołuje metodę loadInterstitialAd() w klasie SampleInterstitialCustomEventLoader.
Aby wysłać żądanie reklamy pełnoekranowej, utwórz lub zmodyfikuj klasę, która rozszerza klasę Adapter, aby zaimplementować metodę loadInterstitialAd(). Dodatkowo utwórz nową klasę, aby zaimplementować MediationInterstitialAd.
W naszym przykładzie zdarzenia niestandardowego,
SampleCustomEvent rozszerza klasę Adapter, a następnie przekazuje zadanie do
SampleInterstitialCustomEventLoader.
Java
package com.google.ads.mediation.sample.customevent; import com.google.android.gms.ads.mediation.Adapter; import com.google.android.gms.ads.mediation.MediationAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdLoadCallback; import com.google.android.gms.ads.mediation.MediationInterstitialAd; import com.google.android.gms.ads.mediation.MediationInterstitialAdCallback; ... public class SampleCustomEvent extends Adapter { private SampleInterstitialCustomEventLoader interstitialLoader; @Override public void loadInterstitialAd( @NonNull MediationInterstitialAdConfiguration adConfiguration, @NonNull MediationAdLoadCallback<MediationInterstitialAd, MediationInterstitialAdCallback> callback) { interstitialLoader = new SampleInterstitialCustomEventLoader(adConfiguration, callback); interstitialLoader.loadAd(); } }
Klasa SampleInterstitialCustomEventLoader odpowiada za te zadania:
wczytywanie reklamy pełnoekranowej i wywoływanie metody
MediationAdLoadCallbackpo zakończeniu wczytywania;implementowanie interfejsu
MediationInterstitialAd;otrzymywanie i zgłaszanie wywołań zwrotnych zdarzeń reklamowych do Google Mobile Ads SDK.
Opcjonalny parametr zdefiniowany w interfejsie AdMob jest uwzględniany w konfiguracji reklamy. Dostęp do parametru można uzyskać za pomocą kodu adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD).
Ten parametr jest zwykle identyfikatorem jednostki reklamowej, którego pakiet SDK sieci reklamowej wymaga podczas tworzenia instancji 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.MediationInterstitialAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdLoadCallback; import com.google.android.gms.ads.mediation.MediationInterstitialAd; import com.google.android.gms.ads.mediation.MediationInterstitialAdCallback; ... public class SampleInterstitialCustomEventLoader extends SampleAdListener implements MediationInterstitialAd { /** A sample third-party SDK interstitial ad. */ private SampleInterstitial sampleInterstitialAd; /** Configuration for requesting the interstitial ad from the third-party network. */ private final MediationInterstitialAdConfiguration mediationInterstitialAdConfiguration; /** Callback for interstitial ad events. */ private MediationInterstitialAdCallback interstitialAdCallback; /** Callback that fires on loading success or failure. */ private final MediationAdLoadCallback<MediationInterstitialAd, MediationInterstitialAdCallback> mediationAdLoadCallback; /** Constructor. */ public SampleInterstitialCustomEventLoader( @NonNull MediationInterstitialAdConfiguration mediationInterstitialAdConfiguration, @NonNull MediationAdLoadCallback<MediationInterstitialAd, MediationInterstitialAdCallback> mediationAdLoadCallback) { this.mediationInterstitialAdConfiguration = mediationInterstitialAdConfiguration; this.mediationAdLoadCallback = mediationAdLoadCallback; } /** Loads the interstitial 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 UI when defining the custom event. Log.i("InterstitialCustomEvent", "Begin loading interstitial ad."); String serverParameter = mediationInterstitialAdConfiguration.getServerParameters().getString( MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD); Log.d("InterstitialCustomEvent", "Received server parameter."); sampleInterstitialAd = new SampleInterstitial(mediationInterstitialAdConfiguration.getContext()); sampleInterstitialAd.setAdUnit(serverParameter); // Implement a SampleAdListener and forward callbacks to mediation. sampleInterstitialAd.setAdListener(this); // Make an ad request. Log.i("InterstitialCustomEvent", "start fetching interstitial ad."); sampleInterstitialAd.fetchAd( SampleCustomEvent.createSampleRequest(mediationInterstitialAdConfiguration)); } 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 reklama zostanie pobrana, czy wystąpi błąd, wywołasz metodę
albo
onSuccess()
albo
onFailure().
Metoda onSuccess() jest wywoływana przez przekazanie instancji klasy, która implementuje MediationInterstitialAd.
Zwykle te metody są implementowane w wywołaniach zwrotnych z pakietu SDK firmy zewnętrznej, który implementuje Twój adapter. W tym przykładzie pakiet SDK ma klasę SampleAdListener z odpowiednimi wywołaniami zwrotnymi:
Java
@Override public void onAdFetchSucceeded() { interstitialAdCallback = mediationAdLoadCallback.onSuccess(this); } @Override public void onAdFetchFailed(SampleErrorCode errorCode) { mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode)); }
Klasa MediationInterstitialAd wymaga zaimplementowania metody showAd() do wyświetlania reklamy:
Java
@Override public void showAd(@NonNull Context context) { sampleInterstitialAd.show(); }
Przekazywanie zdarzeń zapośredniczenia do Google Mobile Ads SDK
Gdy zostanie wywołana metoda onSuccess(), adapter może użyć zwróconego obiektu MediationInterstitialAdCallback
, aby przekazywać zdarzenia prezentacji z
pakietu SDK firmy zewnętrznej do Google Mobile Ads SDK. Klasa SampleInterstitialCustomEventLoader rozszerza interfejs SampleAdListener, aby przekazywać wywołania zwrotne z przykładowej sieci reklamowej do pakietu SDK do reklam mobilnych Google.
Ważne jest, aby zdarzenie niestandardowe przekazywało jak najwięcej tych wywołań zwrotnych, aby aplikacja otrzymywała te same zdarzenia z pakietu SDK do reklam mobilnych Google. Oto przykład użycia wywołań zwrotnych:
Java
@Override public void onAdFullScreen() { interstitialAdCallback.reportAdImpression(); interstitialAdCallback.onAdOpened(); } @Override public void onAdClosed() { interstitialAdCallback.onAdClosed(); }
W ten sposób kończy się implementacja zdarzeń niestandardowych w przypadku reklam pełnoekranowych. Pełny przykład znajdziesz na GitHub. Możesz go używać z siecią reklamową, która jest już obsługiwana, lub zmodyfikować go, aby wyświetlać reklamy pełnoekranowe ze zdarzeniami niestandardowymi.