Требования
Настройте специальные события.
Как запросить межстраничное объявление
Когда в цепочке каскадной медиации будет достигнута позиция специального события, для названия класса, указанного при создании специального события, будет вызван метод loadInterstitialAd(). В этом случае метод находится в SampleCustomEvent, который затем вызывает метод loadInterstitialAd() в SampleInterstitialCustomEventLoader.
Чтобы запросить межстраничное объявление, создайте или измените класс, который расширяет Adapter, чтобы реализовать loadInterstitialAd(). Кроме того, создайте новый класс для реализации MediationInterstitialAd.
В нашем примере специального события класс SampleCustomEvent расширяет класс Adapter, а затем делегирует 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 отвечает за следующие задачи:
Загрузка межстраничного объявления и вызов метода
MediationAdLoadCallbackпосле завершения загрузки.Реализуйте интерфейс
MediationInterstitialAd.Получение и передача в GMA Next-Gen SDK обратных вызовов событий, связанных с рекламой.
Необязательный параметр, заданный в интерфейсе AdMob, включен в конфигурацию объявления. Доступ к параметру можно получить через adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD).
Обычно этот параметр представляет собой идентификатор рекламного блока, который требуется SDK рекламной сети при создании объекта объявления.
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; } }
В зависимости от того, удалось ли получить объявление или возникла ошибка, вызовите onSuccess() или onFailure().
onSuccess() вызывается путем передачи экземпляра класса, реализующего MediationInterstitialAd.
Как правило, эти методы реализуются в обратных вызовах из стороннего SDK, который реализует ваш адаптер. В этом примере в Sample SDK есть SampleAdListener с нужными функциями обратного вызова:
Java
@Override public void onAdFetchSucceeded() { interstitialAdCallback = mediationAdLoadCallback.onSuccess(this); } @Override public void onAdFetchFailed(SampleErrorCode errorCode) { mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode)); }
Для показа объявлений в MediationInterstitialAd необходимо реализовать метод showAd():
Java
@Override public void showAd(@NonNull Context context) { sampleInterstitialAd.show(); }
Как пересылать события медиации в GMA Next-Gen SDK
После вызова onSuccess() возвращенный объект MediationInterstitialAdCallback
может использоваться адаптером для пересылки событий показа из стороннего SDK в GMA Next-Gen SDK. Класс SampleInterstitialCustomEventLoader расширяет интерфейс SampleAdListener, чтобы пересылать обратные вызовы из образца рекламной сети в Google Mobile Ads SDK.
Важно, чтобы ваше специальное событие пересылало как можно больше этих обратных вызовов, чтобы ваше приложение получало эквивалентные события от Google Mobile Ads SDK. Пример использования функций обратного вызова:
Java
@Override public void onAdFullScreen() { interstitialAdCallback.reportAdImpression(); interstitialAdCallback.onAdOpened(); } @Override public void onAdClosed() { interstitialAdCallback.onAdClosed(); }
На этом реализация специальных событий для межстраничных объявлений завершена. Полный пример доступен на сайте GitHub. Его можно использовать с уже поддерживаемой рекламной сетью или изменить, чтобы показывать межстраничные объявления специальных событий.