Skip to content

插屏广告集成相关

1. 接口API说明

1.1 插屏广告请求类

AdRequest

参数说明
placementId广告位
userId媒体用户体系ID ,可选 ,默认null
options扩展参数,默认null

1.2 插屏视频对象类

WindmillInterstitialAd

方法说明
WindmillInterstitialAd(required AdRequest this.request,
required WindmillInterstitialListener<WindmillInterstitialAd> this.listener)
初始化插屏广告对象,
request 为广告请求对象,必传,
listener 插屏视频接口 必传
loadAdData()发起广告加载
isReady()判断当前广告是否存在可展示的广告
showAd()展示广告
getAdInfo()获取广告信息
getCacheAdInfoList()查询当前广告位的所有缓存信息的AdInfo对象、在广告加载成功后调用
destroy()销毁广告

1.3 插屏广告回调说明

WindmillInterstitialListener 插屏广告回调说明

回调方法说明
onAdFailedToLoad (WindmillInterstitialAd ad, WMError error)广告加载失败
onAdLoaded (WindmillInterstitialAd ad)广告加载成功
onAdOpened (WindmillInterstitialAd ad)广告开始展示
onAdShowError (WindmillInterstitialAd ad, WMError error)广告开始展示失败
onAdClicked (WindmillInterstitialAd ad)广告被用户点击
onAdSkiped (WindmillInterstitialAd ad)用户跳过广告播放
onAdVideoPlayFinished (WindmillInterstitialAd ad)广告视频播放结束
onAdClosed (WindmillInterstitialAd ad)广告关闭
onAdDidCloseOtherController(WindmillInterstitialAd ad, WindmillInteractionType interactionType)此回调在广告跳转到其他控制器时,该控制器被关闭时调用interactionType:此参数可区分是打开的appstore/网页/视频广告详情页面
onAdAutoLoadSuccess(WindmillInterstitialAd ad)广告播放中加载成功回调
onAdAutoLoadFailed(WindmillInterstitialAd ad, WMError error)广告播放中加载失败回调
onAdSourceStartLoading(WindmillInterstitialAd ad, AdInfo? adInfo)广告源开始加载回调
onAdSourceSuccess(WindmillInterstitialAd ad, AdInfo? adInfo)广告源广告填充回调
onAdSourceFailed(WindmillInterstitialAd ad, AdInfo? adInfo, WMError error)广告源加载失败回调
onBidAdSourceStart(WindmillInterstitialAd ad, AdInfo? adInfo)竞价广告源开始竞价回调
onBidAdSourceSuccess(WindmillInterstitialAd ad, AdInfo? adInfo)竞价广告源竞价成功回调
onBidAdSourceFailed(WindmillInterstitialAd ad, AdInfo? adInfo, WMError error)竞价广告源竞价失败回调

2. 示例代码

2.1 创建插屏广告广告对象

dart
AdRequest request = AdRequest(placementId: placementId);
WindmillInterstitialAd intersititialAd = WindmillInterstitialAd( request:request, listener: listener);

2.1 设置监听回调

dart
 class IWindMillInterstitialListener extends WindmillInterstitialListener<WindmillInterstitialAd> {

  @override
  void onAdClicked(WindmillInterstitialAd ad) {
      print('onAdClicked -- ${ad.request.placementId}');
  }

  @override
  void onAdClosed(WindmillInterstitialAd ad) {
    print('onAdClosed -- ${ad.request.placementId}');

  }

  @override
  void onAdFailedToLoad(WindmillInterstitialAd ad, WMError error) {
    print('onAdFailedToLoad -- ${ad.request.placementId}, error: ${error.toJson()}');

  }

  @override
  void onAdLoaded(WindmillInterstitialAd ad) {
    print('onAdLoaded -- ${ad.request.placementId}');
  }

  @override
  void onAdOpened(WindmillInterstitialAd ad) {
    print('onAdOpened -- ${ad.request.placementId}');
  }

  @override
  void onAdSkiped(WindmillInterstitialAd ad) {
    print('onAdSkiped -- ${ad.request.placementId}');
  }

  @override
  void onAdVideoPlayFinished(WindmillInterstitialAd ad) {
    print('onAdVideoPlayFinished -- ${ad.request.placementId}');

  }

  @override
  void onAdShowError(WindmillInterstitialAd ad, WMError error) {
    print('onAdShowError -- ${ad.request.placementId},error: ${error.toJson()}');
  }

  @override
  void onAdDidCloseOtherController(WindmillInterstitialAd ad, WindmillInteractionType interactionType) {
    print('onAdDidCloseOtherController -- ${ad.request.placementId},interactionType: ${interactionType.toString()}');
  }
 @override
  void onAdAutoLoadSuccess(WindmillInterstitialAd ad) {
    // TODO: implement onAdAutoLoadSuccess
    print('onAdAutoLoadSuccess');
    c.callbacks.add('onAdAutoLoadSuccess -- ${ad.request.placementId}');
  }
  @override
  void onAdAutoLoadFailed(WindmillInterstitialAd ad, WMError error) {
    // TODO: implement onAdAutoLoadFailed
    print('onAdAutoLoadFailed');
    c.callbacks.add(
        'onAdAutoLoadFailed -- ${ad.request.placementId},error: ${error.toJson()}');
  }
  @override
  void onAdSourceFailed(WindmillInterstitialAd ad, AdInfo? adInfo, WMError error) {
    // TODO: implement onAdSourceFailed
    print('onAdSourceFailed,adInfo:${adInfo?.toJson()}');
     c.callbacks.add(
        'onAdSourceFailed -- ${ad.request.placementId},adInfo:${adInfo?.toJson()},error: ${error.toJson()}');
  }
  
  @override
  void onAdSourceStartLoading(WindmillInterstitialAd ad, AdInfo? adInfo) {
    // TODO: implement onAdSourceStartLoading
    print('onAdSourceStartLoading,adInfo:${adInfo?.toJson()}');
    c.callbacks.add('onAdSourceStartLoading -- ${ad.request.placementId},adInfo:${adInfo?.toJson()}');
  }
  
  @override
  void onAdSourceSuccess(WindmillInterstitialAd ad, AdInfo? adInfo) {
    // TODO: implement onAdSourceSuccess
    print('onAdSourceSuccess,adInfo:${adInfo?.toJson()}');
    c.callbacks.add('onAdSourceSuccess -- ${ad.request.placementId},adInfo:${adInfo?.toJson()}');
  }
  
  @override
  void onBidAdSourceFailed(WindmillInterstitialAd ad, AdInfo? adInfo, WMError error) {
    // TODO: implement onBidAdSourceFailed
    print('onBidAdSourceFailed,adInfo:${adInfo?.toJson()}');
    c.callbacks.add('onBidAdSourceFailed -- ${ad.request.placementId},adInfo:${adInfo?.toJson()},error: ${error.toJson()}');
  }
  
  @override
  void onBidAdSourceStart(WindmillInterstitialAd ad, AdInfo? adInfo) {
    // TODO: implement onBidAdSourceStart
    print('onBidAdSourceStart,adInfo:${adInfo?.toJson()}');
    c.callbacks.add('onBidAdSourceStart -- ${ad.request.placementId},adInfo:${adInfo?.toJson()}');
  }
  
  @override
  void onBidAdSourceSuccess(WindmillInterstitialAd ad, AdInfo? adInfo) {
    // TODO: implement onBidAdSourceSuccess
    print('onBidAdSourceSuccess,adInfo:${adInfo?.toJson()}');
    c.callbacks.add('onBidAdSourceSuccess -- ${ad.request.placementId},adInfo:${adInfo?.toJson()}');
  }
}

2.2 插屏视频广告加载

dart
intersititialAd.loadAdData();

2.3 插屏广告广告播放

dart
bool isReady = await intersititialAd.isReady();
if(isReady){
  intersititialAd.showAd();
}

2.4 插屏广告预加载注意事项

  • 需要在平台开启预加载功能。

  • 开启预加载功能后,sdk内部会在广告播放中再次去请求广告,成功后会再次回调onAdLoaded。(相当于load一次广告会有两次onAdLoaded

  • 开启预加载功能后,要注意全局使用同一个WindmillInterstitialAd对象。(new注意判null

  • 广告播放时可先判断isReady(),如果ready直接播放,否则可再次调用loadAdData()。

dart
var WindmillInterstitialAd intersititialAd;//全局对象

/**
  * 加载广告
  */
void loadAd() {
    if (intersititialAd == null) {
        AdRequest request = AdRequest(placementId: placementId);
          intersititialAd = WindmillInterstitialAd( request:request, listener: listener);
    } 

    intersititialAd.loadAdData();
}