抽象方法 | 参数说明 | 返回值 | 作用 | 是否必须实现 |
---|---|---|---|---|
isAdReady | - | boolean | 用于判断自定义广告平台的插屏广告是否已经是准备完成的状态 | 是 |
show | Activity activity:Activity的上下文 | void | 实现展示自定义广告平台插屏的逻辑 | 是 |
使用CustomInterstitialAdapter的CustomInterstitialEventListene成员变量实现广告事件的回调
回调方法 | 参数说明 | 说明 |
---|---|---|
onInterstitialAdVideoStart | - | 广告视频播放开始时执行回调给开发者 |
onInterstitialAdVideoEnd | - | 广告视频播放结束时执行回调给开发者 |
onInterstitialAdVideoError | String errorCode: 错误码信息 String errorMsg: 详细错误信息 | 广告视频播放失败时执行回调给开发者 |
onInterstitialAdClose | - | 广告页面关闭时执行回调给开发者 |
onInterstitialAdClicked | - | 广告被点击时执行回调给开发者 |
onInterstitialAdShow | - | 广告页面打开时执行回调给开发者 |
注意:使用成员变量CustomInterstitialEventListene时候需要做判空处理,因为聚合SDK内部有可能会回收该Listener对象
public class FacebookInterstitialAdapter extends CustomInterstitialAdapter {
InterstitialAd mInterstitialAd;
String mUnitid;
String mPayload;
/***
* load ad
*/
private void startLoad(final Context context) {
final InterstitialAdListener interstitialAdListener = new InterstitialAdListener() {
@Override
public void onError(Ad ad, AdError adError) {
if (mLoadListener != null) {
mLoadListener.onAdLoadError(adError.getErrorCode() + "", "" + adError.getErrorMessage());
}
}
@Override
public void onAdLoaded(Ad ad) {
if (mLoadListener != null) {
mLoadListener.onAdCacheLoaded();
}
}
@Override
public void onAdClicked(Ad ad) {
if (mImpressListener != null) {
mImpressListener.onInterstitialAdClicked();
}
}
@Override
public void onLoggingImpression(Ad ad) {
}
@Override
public void onInterstitialDisplayed(Ad ad) {
if (mImpressListener != null) {
mImpressListener.onInterstitialAdShow();
}
}
@Override
public void onInterstitialDismissed(Ad ad) {
if (mImpressListener != null) {
mImpressListener.onInterstitialAdClose();
}
}
};
mInterstitialAd = new InterstitialAd(context.getApplicationContext(), mUnitid);
// Load a new interstitial.
final InterstitialAd.InterstitialAdLoadConfigBuilder adConfig = mInterstitialAd.buildLoadAdConfig()
.withAdListener(interstitialAdListener);
if (!TextUtils.isEmpty(mPayload)) {
adConfig.withBid(mPayload);
}
mInterstitialAd.loadAd(adConfig.build());
}
@Override
public void destory() {
try {
if (mInterstitialAd != null) {
mInterstitialAd.setAdListener(null);
mInterstitialAd.destroy();
mInterstitialAd = null;
}
} catch (Exception e) {
}
}
@Override
public void loadCustomNetworkAd(Context context, Map<String, Object> serverExtras, Map<String, Object> localExtras) {
if (serverExtras.containsKey("unit_id")) {
mUnitid = (String) serverExtras.get("unit_id");
} else {
if (mLoadListener != null) {
mLoadListener.onAdLoadError("", "facebook sdkkey is empty.");
}
return;
}
if (serverExtras.containsKey("payload")) {
mPayload = serverExtras.get("payload").toString();
}
FacebookInitManager.getInstance().initSDK(context.getApplicationContext(), serverExtras);
startLoad(context);
}
@Override
public boolean isAdReady() {
if (mInterstitialAd == null || !mInterstitialAd.isAdLoaded()) {
return false;
}
if (mInterstitialAd.isAdInvalidated()) {
return false;
}
return true;
}
@Override
public boolean setUserDataConsent(Context context, boolean isConsent, boolean isEUTraffic) {
return false;
}
@Override
public void show(Activity activity) {
if (mInterstitialAd != null) {
mInterstitialAd.show();
}
}
@Override
public String getNetworkSDKVersion() {
return FacebookInitManager.getInstance().getNetworkVersion();
}
@Override
public String getNetworkName() {
return FacebookInitManager.getInstance().getNetworkName();
}
@Override
public String getNetworkPlacementId() {
return mUnitid;
}
}