插屏广告集成相关
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();
}