激励视频
<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/Android/%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/Android/%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-%E4%B8%BB%E8%A6%81api"></a></h2>
<h3>1.1 WMRewardAd<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/Android/%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-wmrewardad"></a></h3>
<ul>
<li>com.windmill.sdk.reward.WMRewardAd</li>
</ul>
<table>
<thead>
<tr>
<th>方法名</th>
<th>方法介绍</th>
</tr>
</thead>
<tbody>
<tr>
<td>WMRewardAd(Activity activity, WMRewardAdRequest request)</td>
<td>构造方法。参数说明:activity(展示广告的 activity)、request(广告请求对象)。</td>
</tr>
<tr>
<td>setRewardedAdListener(WMRewardAdListener rewardAdListener)</td>
<td>回调监听。广告相关状态会通过 rewardAdListener 通知开发者。</td>
</tr>
<tr>
<td>loadAd()</td>
<td>拉取广告。</td>
</tr>
<tr>
<td>isReady()</td>
<td>广告是否准备好,未准备好广告将无法展示。</td>
</tr>
<tr>
<td>show(Activity activity, HashMap<String, String> options)</td>
<td>展示广告。参数说明:activity(展示广告的 activity)、options(广告展示时的扩展参数,可选,可参考demo)。</td>
</tr>
<tr>
<td>checkValidAdCaches()</td>
<td>查询当前广告位的所有缓存信息的<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/Android/%E9%AB%98%E7%BA%A7%E8%AE%BE%E7%BD%AE/%E5%B9%BF%E5%91%8A%E5%AF%B9%E8%B1%A1/">AdInfo</a>对象、在广告加载成功后调用。</td>
</tr>
<tr>
<td>destroy()</td>
<td>销毁广告。</td>
</tr>
</tbody>
</table>
<h3>1.2 WMRewardAdRequest<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/Android/%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-wmrewardadrequest"></a></h3>
<ul>
<li>com.windmill.sdk.reward.WMRewardAdRequest</li>
</ul>
<table>
<thead>
<tr>
<th>方法名</th>
<th>方法介绍</th>
</tr>
</thead>
<tbody>
<tr>
<td>WMRewardAdRequest(String placementId, String userId, Map<String, Object> options)</td>
<td>构造方法。参数说明:placementId(广告位Id)、userId(用户Id可选)、options(扩展参数,可传任意)。</td>
</tr>
</tbody>
</table>
<h3>1.3 WMRewardAdListener<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/Android/%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-3-wmrewardadlistener"></a></h3>
<ul>
<li>com.windmill.sdk.reward.WMRewardAdListener</li>
</ul>
<table>
<thead>
<tr>
<th>方法名</th>
<th>方法介绍</th>
</tr>
</thead>
<tbody>
<tr>
<td>onVideoAdLoadSuccess(String placementId)</td>
<td>广告成功加载。参数说明:placementId(广告位Id)。</td>
</tr>
<tr>
<td>onVideoAdLoadError(WindMillError error, String placementId)</td>
<td>广告加载失败。参数说明:error(报错信息,具体可看其内部code和message)、placementId(报错的广告位Id)。</td>
</tr>
<tr>
<td>onVideoAdPlayStart(AdInfo adInfo)</td>
<td>广告成功展示,媒体可在此记录曝光。参数说明:adInfo(广告信息,具体可看其内部成员变量)。</td>
</tr>
<tr>
<td>onVideoAdPlayError(WindMillError error, String placementId)</td>
<td>广告播放出错。参数说明:error(报错信息,具体可看其内部code和message)、placementId(报错的广告位Id)。</td>
</tr>
<tr>
<td>onVideoAdPlayEnd(AdInfo adInfo)</td>
<td>广告播放结束。参数说明:adInfo(广告信息,具体可看其内部成员变量)。</td>
</tr>
<tr>
<td>onVideoAdClicked(AdInfo adInfo)</td>
<td>广告被点击。参数说明:adInfo(广告信息,具体可看其内部成员变量)。</td>
</tr>
<tr>
<td>onVideoRewarded(AdInfo adInfo, WMRewardInfo rewardInfo)</td>
<td>广告获取奖励。参数说明:adInfo(广告信息,具体可看其内部成员变量)、rewardInfo(奖励信息)。</td>
</tr>
<tr>
<td>onVideoAdClosed(AdInfo adInfo)</td>
<td>广告关闭。参数说明:adInfo(广告信息,具体可看其内部成员变量)。</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/Android/%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-%E6%8E%A5%E5%85%A5%E4%BB%A3%E7%A0%81%E7%A4%BA%E4%BE%8B"></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/Android/%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>java</p>
<pre><code>private WMRewardAd rewardVideoAd;
/**
* PLACEMENT_ID 必填
* USER_ID 可选
* OPTIONS 自定义参数 可选
*/
WMRewardAdRequest request = new WMRewardAdRequest(PLACEMENT_ID, USER_ID, OPTIONS);
rewardVideoAd = new WMRewardAd(this, request);
rewardVideoAd.setRewardedAdListener(new WMRewardAdListener() {
@Override
public void onVideoAdLoadSuccess(String placementId) {
}
@Override
public void onVideoAdPlayEnd(AdInfo adInfo)) {
}
@Override
public void onVideoAdPlayStart(AdInfo adInfo) {
}
@Override
public void onVideoAdClicked(AdInfo adInfo) {
}
/**
* WMRewardInfo 激励内容
* placementId 广告位
*/
@Override
public void onVideoRewarded(AdInfo adInfo, WMRewardInfo rewardInfo) {
}
@Override
public void onVideoAdClosed(AdInfo adInfo) {
}
/**
* 加载广告错误回调
* WindMillError 激励视频错误内容
* placementId 广告位
*/
@Override
public void onVideoAdLoadError(final WindMillError error, final String placementId) {
}
/**
* 播放错误回调
* WindMillError 激励视频错误内容
* placementId 广告位
*/
@Override
public void onVideoAdPlayError(final WindMillError error, final String placementId) {
}
});</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/Android/%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>java</p>
<pre><code>/**
*同一个WMRewardAd不建议在广告playing中重复load
*同一个WMRewardAd在onVideoAdClosed中可以load下一次广告
*/
if (rewardVideoAd != null) {
rewardVideoAd.loadAd();
}</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/Android/%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>java</p>
<pre><code>/**
* 收到onVideoAdLoadSuccess回调代表广告已ready
* option 自定义参数(可选)
*/
if (rewardVideoAd != null &amp;&amp; rewardVideoAd.isReady()) {
//广告播放
HashMap option = new HashMap();
option.put(WMConstants.AD_SCENE_ID, &quot;567&quot;);
option.put(WMConstants.AD_SCENE_DESC, &quot;转盘抽奖&quot;);
rewardVideoAd.show(this, option);
}</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/Android/%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%E5%9B%9E%E8%B0%83%E9%A3%8E%E6%8E%A7%E7%9B%B8%E5%85%B3"></a></h3>
<p>> 在激励回调onVideoRewarded方法中获取rewardInfo对象的内部数据。</p>
<ul>
<li>com.windmill.sdk.reward.WMRewardInfo</li>
</ul>
<table>
<thead>
<tr>
<th>方法名</th>
<th>方法介绍</th>
</tr>
</thead>
<tbody>
<tr>
<td>isReward()</td>
<td>是否奖励</td>
</tr>
<tr>
<td>getCustomData()</td>
<td>customData数据目前只针对穿山甲渠道</td>
</tr>
<tr>
<td>getTrans_id()</td>
<td>请求的唯一ID。</td>
</tr>
<tr>
<td>getThird_trans_id()</td>
<td>获取第三方平台的请求的唯一ID。目前支持优量汇、百度等渠道</td>
</tr>
<tr>
<td>getUser_id()</td>
<td>获取userID。</td>
</tr>
</tbody>
</table>
<p>> 穿山甲customData数据取值可参考下方代码。</p>
<p>java</p>
<pre><code>/**
* 穿山甲激励回调
*/
@Override
public void onRewardVerify(boolean rewardVerify, int rewardAmount, String rewardName, int errorCode, String errorMsg) {
Map&lt;String, Object&gt; customData = new HashMap&lt;&gt;();
customData.put(&quot;rewardVerify&quot;, rewardVerify);
customData.put(&quot;errorCode&quot;, errorCode);
customData.put(&quot;errorMsg&quot;, errorMsg);
callVideoAdRewardWithData(rewardVerify, customData);
}</code></pre>
<h3>2.5 激励视频广告预加载注意事项<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/Android/%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-5-%E6%BF%80%E5%8A%B1%E8%A7%86%E9%A2%91%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内部会在广告播放中再次去请求广告,成功后会再次回调onVideoAdLoadSuccess。(<strong>相当于load一次广告会有两次onVideoAdLoadSuccess。3.3.0版本及以后不再回调两次</strong>)</p>
</li>
<li>
<p>开启预加载功能后,要注意全局使用同一个WMRewardAd对象。(<strong>new注意判null</strong>)</p>
</li>
<li>广告播放时可先判断isReady(),如果ready直接播放,否则可再次调用loadAd()。</li>
</ul>
<p>java</p>
<pre><code>private WMRewardAd mRewardAd;//全局对象
/**
* 加载广告
*/
private void loadAd() {
if (mRewardAd == null) {
mRewardAd = new WMRewardAd(this, new WMRewardAdRequest(placementId, userID, options));
}
mRewardAd.setRewardedAdListener(new WMRewardAdListener() {
@Override
public void onVideoAdLoadSuccess(final String placementId) {
}
@Override
public void onVideoAdPlayEnd(AdInfo adInfo) {
}
@Override
public void onVideoAdPlayStart(AdInfo adInfo) {
}
@Override
public void onVideoAdClicked(AdInfo adInfo) {
}
@Override
public void onVideoAdClosed(AdInfo adInfo) {
}
@Override
public void onVideoRewarded(AdInfo adInfo, final WMRewardInfo rewardInfo) {
}
@Override
public void onVideoAdLoadError(final WindMillError error, final String placementId) {
}
@Override
public void onVideoAdPlayError(final WindMillError error, final String placementId) {
}
});
mRewardAd.loadAd();
}</code></pre>