package com.facebook.ads;
import android.app.Activity;
import android.content.Context;
import com.mopub.mobileads.CustomEventBanner;
import com.mopub.mobileads.MoPubErrorCode;
import java.util.Map;
/**
* FacebookMopubCustomEventBanner is a MoPub banner adapter for AdView.
* <p/>
* Compatible with mopub-android-sdk version 1.17.3.1
*/
public class FacebookMopubCustomEventBanner extends CustomEventBanner implements AdListener {
private AdView mAdView;
private CustomEventBannerListener mBannerListener;
@Override
protected void loadBanner(Context context, CustomEventBannerListener customEventBannerListener,
Map<String, Object> localExtras, Map<String, String> serverExtras) {
mBannerListener = customEventBannerListener;
if (!(context instanceof Activity)) {
mBannerListener.onBannerFailed(MoPubErrorCode.ADAPTER_CONFIGURATION_ERROR);
return;
}
// 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
mBannerListener.onBannerFailed(MoPubErrorCode.ADAPTER_CONFIGURATION_ERROR);
return;
}
mAdView = new AdView(context, placementId, AdSize.BANNER_320_50);
mAdView.setAdListener(this);
mAdView.loadAd();
}
@Override
protected void onInvalidate() {
if (mAdView != null) {
mAdView.destroy();
mAdView = null;
}
}
@Override
public void onError(Ad ad, AdError error) {
if (error.getErrorCode() == AdError.NO_FILL.getErrorCode()) {
mBannerListener.onBannerFailed(MoPubErrorCode.NETWORK_NO_FILL);
} else if (error == AdError.INTERNAL_ERROR) {
mBannerListener.onBannerFailed(MoPubErrorCode.NETWORK_INVALID_STATE);
} else {
mBannerListener.onBannerFailed(MoPubErrorCode.UNSPECIFIED);
}
}
@Override
public void onAdLoaded(Ad ad) {
mBannerListener.onBannerLoaded(mAdView);
}
@Override
public void onAdClicked(Ad ad) {
mBannerListener.onBannerClicked();
}
}