package com.facebook.ads; import android.app.Activity; import android.content.Context; import com.mopub.mobileads.CustomEventInterstitial; import com.mopub.mobileads.MoPubErrorCode; import java.util.Map; /** * FacebookMopubCustomEventInterstitial is a MoPub interstitial adapter for InterstitialAd. * <p/> * Compatible with mopub-android-sdk version 1.17.3.1 * <p/> * Declare com.facebook.ads.InterstitialAdActivity in AndroidManifest.xml * with android:configChanges="keyboardHidden|orientation" */ public class FacebookMopubCustomEventInterstitial extends CustomEventInterstitial implements InterstitialAdListener { private InterstitialAd mInterstitialAd; private CustomEventInterstitialListener mInterstitialListener; @Override protected void loadInterstitial(Context context, CustomEventInterstitialListener customEventInterstitialListener, Map<String, Object> localExtras, Map<String, String> serverExtras) { mInterstitialListener = customEventInterstitialListener; if (!(context instanceof Activity)) { mInterstitialListener.onInterstitialFailed(MoPubErrorCode.ADAPTER_CONFIGURATION_ERROR); } // Assuming placement_id is configured in serverExtras with key placement_id. String placementId = serverExtras.get("placement_id"); if (placementId == null || placementId.length() == 0) { // Invalid placement_id mInterstitialListener.onInterstitialFailed(MoPubErrorCode.ADAPTER_CONFIGURATION_ERROR); return; } mInterstitialAd = new InterstitialAd(context, placementId); mInterstitialAd.setAdListener(this); mInterstitialAd.loadAd(); } @Override protected void showInterstitial() { mInterstitialAd.show(); } @Override protected void onInvalidate() { if (mInterstitialAd != null) { mInterstitialAd.destroy(); mInterstitialAd = null; } } @Override public void onError(Ad ad, AdError error) { if (error.getErrorCode() == AdError.NO_FILL.getErrorCode()) { mInterstitialListener.onInterstitialFailed(MoPubErrorCode.NETWORK_NO_FILL); } else if (error == AdError.INTERNAL_ERROR) { mInterstitialListener.onInterstitialFailed(MoPubErrorCode.NETWORK_INVALID_STATE); } else { mInterstitialListener.onInterstitialFailed(MoPubErrorCode.UNSPECIFIED); } } @Override public void onAdLoaded(Ad ad) { mInterstitialListener.onInterstitialLoaded(); } @Override public void onAdClicked(Ad ad) { mInterstitialListener.onInterstitialClicked(); } @Override public void onInterstitialDisplayed(Ad ad) { mInterstitialListener.onInterstitialShown(); } @Override public void onInterstitialDismissed(Ad ad) { mInterstitialListener.onInterstitialDismissed(); } }