插屏广告
<h1>插屏广告集成相关<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Flutter/%E5%B9%BF%E5%91%8A%E7%B1%BB%E5%9E%8B/%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A/#%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A%E9%9B%86%E6%88%90%E7%9B%B8%E5%85%B3"></a></h1>
<h2>1. 接口API说明<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Flutter/%E5%B9%BF%E5%91%8A%E7%B1%BB%E5%9E%8B/%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A/#_1-%E6%8E%A5%E5%8F%A3api%E8%AF%B4%E6%98%8E"></a></h2>
<h3>1.1 插屏广告请求类<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Flutter/%E5%B9%BF%E5%91%8A%E7%B1%BB%E5%9E%8B/%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A/#_1-1-%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A%E8%AF%B7%E6%B1%82%E7%B1%BB"></a></h3>
<p><strong>AdRequest</strong></p>
<table>
<thead>
<tr>
<th>参数</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>placementId</td>
<td>广告位</td>
</tr>
<tr>
<td>userId</td>
<td>媒体用户体系ID ,可选 ,默认null</td>
</tr>
<tr>
<td>options</td>
<td>扩展参数,默认null</td>
</tr>
</tbody>
</table>
<h3>1.2 插屏视频对象类<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Flutter/%E5%B9%BF%E5%91%8A%E7%B1%BB%E5%9E%8B/%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A/#_1-2-%E6%8F%92%E5%B1%8F%E8%A7%86%E9%A2%91%E5%AF%B9%E8%B1%A1%E7%B1%BB"></a></h3>
<p><strong>WindmillInterstitialAd</strong></p>
<table>
<thead>
<tr>
<th>方法</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>WindmillInterstitialAd(required AdRequest this.request, required WindmillInterstitialListener<WindmillInterstitialAd> this.listener)</td>
<td>初始化插屏广告对象, request 为广告请求对象,必传, listener 插屏视频接口 必传</td>
</tr>
<tr>
<td>loadAdData()</td>
<td>发起广告加载</td>
</tr>
<tr>
<td>isReady()</td>
<td>判断当前广告是否存在可展示的广告</td>
</tr>
<tr>
<td>showAd()</td>
<td>展示广告</td>
</tr>
<tr>
<td>getAdInfo()</td>
<td>获取广告信息</td>
</tr>
<tr>
<td>getCacheAdInfoList()</td>
<td>查询当前广告位的所有缓存信息的AdInfo对象、在广告加载成功后调用</td>
</tr>
<tr>
<td>destroy()</td>
<td>销毁广告</td>
</tr>
</tbody>
</table>
<h3>1.3 插屏广告回调说明<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Flutter/%E5%B9%BF%E5%91%8A%E7%B1%BB%E5%9E%8B/%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A/#_1-3-%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A%E5%9B%9E%E8%B0%83%E8%AF%B4%E6%98%8E"></a></h3>
<p><strong>WindmillInterstitialListener</strong> 插屏广告回调说明</p>
<table>
<thead>
<tr>
<th>回调方法</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>onAdFailedToLoad (WindmillInterstitialAd ad, WMError error)</td>
<td>广告加载失败</td>
</tr>
<tr>
<td>onAdLoaded (WindmillInterstitialAd ad)</td>
<td>广告加载成功</td>
</tr>
<tr>
<td>onAdOpened (WindmillInterstitialAd ad)</td>
<td>广告开始展示</td>
</tr>
<tr>
<td>onAdShowError (WindmillInterstitialAd ad, WMError error)</td>
<td>广告开始展示失败</td>
</tr>
<tr>
<td>onAdClicked (WindmillInterstitialAd ad)</td>
<td>广告被用户点击</td>
</tr>
<tr>
<td>onAdSkiped (WindmillInterstitialAd ad)</td>
<td>用户跳过广告播放</td>
</tr>
<tr>
<td>onAdVideoPlayFinished (WindmillInterstitialAd ad)</td>
<td>广告视频播放结束</td>
</tr>
<tr>
<td>onAdClosed (WindmillInterstitialAd ad)</td>
<td>广告关闭</td>
</tr>
<tr>
<td>onAdDidCloseOtherController(WindmillInterstitialAd ad, WindmillInteractionType interactionType)</td>
<td>此回调在广告跳转到其他控制器时,该控制器被关闭时调用interactionType:此参数可区分是打开的appstore/网页/视频广告详情页面</td>
</tr>
</tbody>
</table>
<h2>2. 示例代码<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Flutter/%E5%B9%BF%E5%91%8A%E7%B1%BB%E5%9E%8B/%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A/#_2-%E7%A4%BA%E4%BE%8B%E4%BB%A3%E7%A0%81"></a></h2>
<h3>2.1 创建插屏广告广告对象<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Flutter/%E5%B9%BF%E5%91%8A%E7%B1%BB%E5%9E%8B/%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A/#_2-1-%E5%88%9B%E5%BB%BA%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A%E5%B9%BF%E5%91%8A%E5%AF%B9%E8%B1%A1"></a></h3>
<pre><code>AdRequest request = AdRequest(placementId: placementId);
WindmillInterstitialAd intersititialAd = WindmillInterstitialAd( request:request, listener: listener);</code></pre>
<h3>2.1 设置监听回调<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Flutter/%E5%B9%BF%E5%91%8A%E7%B1%BB%E5%9E%8B/%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A/#_2-1-%E8%AE%BE%E7%BD%AE%E7%9B%91%E5%90%AC%E5%9B%9E%E8%B0%83"></a></h3>
<pre><code> class IWindMillInterstitialListener extends WindmillInterstitialListener&lt;WindmillInterstitialAd&gt; {
@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()}');
}
}</code></pre>
<h3>2.2 插屏视频广告加载<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Flutter/%E5%B9%BF%E5%91%8A%E7%B1%BB%E5%9E%8B/%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A/#_2-2-%E6%8F%92%E5%B1%8F%E8%A7%86%E9%A2%91%E5%B9%BF%E5%91%8A%E5%8A%A0%E8%BD%BD"></a></h3>
<pre><code>intersititialAd.loadAdData();</code></pre>
<h3>2.3 插屏广告广告播放<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Flutter/%E5%B9%BF%E5%91%8A%E7%B1%BB%E5%9E%8B/%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A/#_2-3-%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A%E5%B9%BF%E5%91%8A%E6%92%AD%E6%94%BE"></a></h3>
<pre><code>bool isReady = await intersititialAd.isReady();
if(isReady){
intersititialAd.showAd();
}</code></pre>
<h3>2.4 插屏广告预加载注意事项<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Flutter/%E5%B9%BF%E5%91%8A%E7%B1%BB%E5%9E%8B/%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A/#_2-4-%E6%8F%92%E5%B1%8F%E5%B9%BF%E5%91%8A%E9%A2%84%E5%8A%A0%E8%BD%BD%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9"></a></h3>
<ul>
<li>
<p>需要在平台开启预加载功能。</p>
</li>
<li>
<p>开启预加载功能后,sdk内部会在广告播放中再次去请求广告,成功后会再次回调onAdLoaded。(<strong>相当于load一次广告会有两次onAdLoaded</strong>)</p>
</li>
<li>
<p>开启预加载功能后,要注意全局使用同一个WindmillInterstitialAd对象。(<strong>new注意判null</strong>)</p>
</li>
<li>
<p>广告播放时可先判断isReady(),如果ready直接播放,否则可再次调用loadAdData()。</p>
<p>var WindmillInterstitialAd intersititialAd;//全局对象</p>
<p>/**</p>
<ul>
<li>
<p>加载广告
*/
void loadAd() {
if (intersititialAd == null) {
AdRequest request = AdRequest(placementId: placementId);
intersititialAd = WindmillInterstitialAd( request:request, listener: listener);
} </p>
<p>intersititialAd.loadAdData();
}</p>
</li>
</ul>
</li>
</ul>