Wymagania wstępne
Dokończ konfigurację zdarzeń niestandardowych.
Wysyłanie żądania reklamy pełnoekranowej
Gdy w łańcuchu zapośredniczenia kaskadowego zostanie osiągnięty element zamówienia związany ze zdarzeniem niestandardowym, w przypadku nazwy klasy podanej podczas tworzenia zdarzenia niestandardowego wywoływana jest metoda loadInterstitialAd(). W tym przypadku metoda znajduje się w SampleCustomEvent, która następnie wywołuje metodę loadInterstitialAd() w SampleInterstitialCustomEventLoader.
Aby wysłać żądanie wyświetlenia reklamy pełnoekranowej, utwórz lub zmodyfikuj klasę, która rozszerza Adapter, aby zaimplementować loadInterstitialAd(). Dodatkowo utwórz nową klasę, aby zaimplementować MediationInterstitialAd.
W naszym przykładzie zdarzenia niestandardowego klasa SampleCustomEvent rozszerza klasę Adapter, a następnie przekazuje wywołanie do klasy 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(); } }
SampleInterstitialCustomEventLoader odpowiada za te zadania:
Wczytywanie reklamy pełnoekranowej i wywoływanie metody
MediationAdLoadCallbackpo zakończeniu wczytywania.Implementacja interfejsu
MediationInterstitialAd.Otrzymywanie i zgłaszanie wywołań zwrotnych zdarzeń reklamowych do GMA Next-Gen SDK.
Parametr opcjonalny zdefiniowany w interfejsie AdMob jest uwzględniony w konfiguracji reklamy. Dostęp do parametru można uzyskać za pomocą funkcji 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 funkcję onSuccess() lub onFailure().
onSuccess() jest wywoływana przez przekazanie instancji klasy, która implementuje interfejs MediationInterstitialAd.
Zazwyczaj te metody są wdrażane w wywołaniach zwrotnych z pakietu SDK firmy zewnętrznej, który implementuje Twój adapter. W tym przykładzie pakiet SDK Sample zawiera element 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)); }
MediationInterstitialAd wymaga wdrożenia metody showAd(), aby wyświetlać reklamę:
Java
@Override public void showAd(@NonNull Context context) { sampleInterstitialAd.show(); }
Przekazywanie zdarzeń zapośredniczenia do GMA Next-Gen SDK
Po wywołaniu funkcji onSuccess() zwrócony obiekt MediationInterstitialAdCallback
może być używany przez adapter do przekazywania zdarzeń związanych z wyświetlaniem z pakietu SDK firmy zewnętrznej do GMA Next-Gen SDK. Klasa
SampleInterstitialCustomEventLoader rozszerza interfejs SampleAdListener
w celu przekazywania wywołań zwrotnych 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, dzięki czemu aplikacja będzie otrzymywać równoważne 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 zakończysz implementację zdarzeń niestandardowych w przypadku reklam pełnoekranowych. Pełny przykład jest dostępny na GitHub. Możesz go używać z obsługiwaną już siecią reklamową lub zmodyfikować go tak, aby wyświetlać reklamy pełnoekranowe zdarzeń niestandardowych.