激励视频
<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%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91/#%E6%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91%E5%B9%BF%E5%91%8A"></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%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91/#_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%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91/#_1-1-%E6%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91%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%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91/#_1-2-%E6%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91%E5%AF%B9%E8%B1%A1%E7%B1%BB"></a></h3>
<p><strong>WindmillRewardAd</strong></p>
<table>
<thead>
<tr>
<th>方法</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>WindmillRewardAd(required AdRequest this.request, required WindmillRewardListener<WindmillRewardAd> 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.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%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91/#_1-4-%E6%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91%E5%9B%9E%E8%B0%83%E8%AF%B4%E6%98%8E"></a></h3>
<p><strong>WindmillRewardListener</strong> 激励视频回调说明</p>
<table>
<thead>
<tr>
<th>回调方法</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>onAdFailedToLoad (WindmillRewardAd ad, WMError error)</td>
<td>广告加载失败</td>
</tr>
<tr>
<td>onAdLoaded (WindmillRewardAd ad)</td>
<td>广告加载成功</td>
</tr>
<tr>
<td>onAdOpened (WindmillRewardAd ad)</td>
<td>广告开始展示</td>
</tr>
<tr>
<td>onAdReward (WindmillRewardAd ad, RewardInfo rewardInfo )</td>
<td>广告获得奖励</td>
</tr>
<tr>
<td>onAdShowError (WindmillRewardAd ad, WMError error)</td>
<td>广告开始展示失败</td>
</tr>
<tr>
<td>onAdClicked (WindmillRewardAd ad)</td>
<td>广告被用户点击</td>
</tr>
<tr>
<td>onAdSkiped (WindmillRewardAd ad)</td>
<td>用户跳过广告播放</td>
</tr>
<tr>
<td>onAdVideoPlayFinished (WindmillRewardAd ad)</td>
<td>广告视频播放结束</td>
</tr>
<tr>
<td>onAdClosed (WindmillRewardAd ad)</td>
<td>广告关闭</td>
</tr>
</tbody>
</table>
<p><strong>RewardInfo</strong> 奖励回调信息说明</p>
<table>
<thead>
<tr>
<th>参数</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>isReward</td>
<td>是否获得奖励</td>
</tr>
<tr>
<td>transId</td>
<td>标识本次广告播放行为的唯一id</td>
</tr>
<tr>
<td>userId</td>
<td>媒体用户ID</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%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91/#_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%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91/#_2-1-%E5%88%9B%E5%BB%BA%E6%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91%E5%B9%BF%E5%91%8A%E5%AF%B9%E8%B1%A1"></a></h3>
<p>dart</p>
<pre><code>AdRequest request = AdRequest(placementId: placementId);
WindmillRewardAd rewardVideoAd = WindmillRewardAd( 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%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91/#_2-1-%E8%AE%BE%E7%BD%AE%E7%9B%91%E5%90%AC%E5%9B%9E%E8%B0%83"></a></h3>
<p>dart</p>
<pre><code>class IWindMillRewardListener extends WindmillRewardListener&lt;WindmillRewardAd&gt; {
@override
void onAdClicked(WindmillRewardAd ad) {
print('onAdClicked -- ${ad.request.placementId}');
}
@override
void onAdClosed(WindmillRewardAd ad) {
print('onAdClosed -- ${ad.request.placementId}');
}
@override
void onAdFailedToLoad(WindmillRewardAd ad, WMError error) {
print('onAdFailedToLoad -- ${ad.request.placementId}, error: ${error.toJson()}');
}
@override
void onAdLoaded(WindmillRewardAd ad) {
print('onAdLoaded -- ${ad.request.placementId}');
}
@override
void onAdOpened(WindmillRewardAd ad) {
print('onAdOpened -- ${ad.request.placementId}');
}
@override
void onAdReward(WindmillRewardAd ad, RewardInfo rewardInfo) {
print('onAdReward -- ${ad.request.placementId} -- IsReward -- ${rewardInfo.isReward} --- TransId -- ${rewardInfo.transId} -- UserId -- ${rewardInfo.userId} ');
}
@override
void onAdSkiped(WindmillRewardAd ad) {
print('onAdSkiped -- ${ad.request.placementId}');
}
@override
void onAdVideoPlayFinished(WindmillRewardAd ad) {
print('onAdVideoPlayFinished -- ${ad.request.placementId}');
}
@override
void onAdShowError(WindmillRewardAd ad,WMError error) {
print('onAdShowError -- ${ad.request.placementId}, error: ${error == null ? &quot;null&quot; : error.toJson()}');
}
}</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%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91/#_2-2-%E6%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91%E5%B9%BF%E5%91%8A%E5%8A%A0%E8%BD%BD"></a></h3>
<p>dart</p>
<pre><code>rewardVideoAd.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%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91/#_2-3-%E6%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91%E5%B9%BF%E5%91%8A%E6%92%AD%E6%94%BE"></a></h3>
<p>dart</p>
<pre><code>bool isReady = await rewardVideoAd.isReady();
if(isReady){
rewardVideoAd.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%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91/#_2-4-%E6%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91%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>开启预加载功能后,要注意全局使用同一个WindmillRewardAd对象。(<strong>new注意判null</strong>)</p>
</li>
<li>广告播放时可先判断isReady(),如果ready直接播放,否则可再次调用loadAdData()。</li>
</ul>
<p>dart</p>
<pre><code>var WindmillRewardAd rewardVideoAd;//全局对象
/**
* 加载广告
*/
void loadAd() {
if (rewardVideoAd == null) {
AdRequest request = AdRequest(placementId: placementId);
rewardVideoAd = WindmillRewardAd( request:request, listener: listener);
}
rewardVideoAd.loadAdData();
}</code></pre>