激励视频广告
参考Demo
1. 主要API
1.1 WMRewardAd
- com.windmill.sdk.reward.WMRewardAd
| 方法名 | 方法介绍 |
|---|---|
| WMRewardAd(Activity activity, WMRewardAdRequest request) | 构造方法。参数说明:activity(展示广告的 activity)、request(广告请求对象)。 |
| setAdSourceStatusListener(WMAdSourceStatusListener adSourceStatusListener) | 设置广告源层级加载回调,需要在广告load 之前设置 |
| setRewardedAdListener(WMRewardAdListener rewardAdListener) | 回调监听。广告相关状态会通过 rewardAdListener 通知开发者。 |
| loadAd() | 拉取广告。 |
| isReady() | 广告是否准备好,未准备好广告将无法展示。 |
| setFilter(WMAdFilter filter) | 广告源加载及播放过滤设置,具体使用见高级设置->广告过滤->广告对象级广告源过滤器设置。 |
| setCustomGroup(HashMap<String, String> customGroup) | 广告对象级自定义广告源分组,可设置多个分组,每个分组下可设置多个广告源。 |
| setActivityChannelFilterList(Set<Integer> channelIds) | 广告对象加载时渠道 Activity 透传过滤,设置渠道对应 id 后加载时传给三方渠道加载的参数由 activity 改为 context。 目前不支持传 context 的渠道:小米。 |
| show(Activity activity, HashMap<String, String> options) | 展示广告。参数说明:activity(展示广告的 activity)、options(广告展示时的扩展参数,可选,可参考demo)。 |
| getAdInfo() | 获取当前Ready最高价格的AdInfo信息。 |
| getLoadFailMessages() | 获取当前广告位详细报错信息,包含广告源的详细错误信息。返回 String 类型(可能会为 null)。在 onVideoAdLoadError() 回调之后之后调用。 |
| checkValidAdCaches() | 查询当前广告位的所有缓存信息的AdInfo对象、在广告加载成功后调用。 |
| destroy() | 销毁广告。 |
1.2 WMRewardAdRequest
- com.windmill.sdk.reward.WMRewardAdRequest
| 方法名 | 方法介绍 |
|---|---|
| WMRewardAdRequest(String placementId, String userId, Map<String, Object> options) | 构造方法。参数说明:placementId(广告位Id)、userId(用户Id可选;如使用服务端回调,用户Id必填,不要超过65个字符, 超过限制后会导致数据计算异常)、options(扩展参数,可传任意)。 |
1.3 WMRewardAdListener
- com.windmill.sdk.reward.WMRewardAdListener
| 方法名 | 方法介绍 |
|---|---|
| onVideoAdLoadSuccess(String placementId) | 广告成功加载。参数说明:placementId(广告位Id)。 |
| onVideoAdLoadError(WindMillError error, String placementId) | 广告加载失败。参数说明:error(报错信息,具体可看其内部code和message)、placementId(报错的广告位Id)。 |
| onVideoAdPlayStart(AdInfo adInfo) | 广告成功展示,媒体可在此记录曝光。参数说明:adInfo(广告信息,具体可看其内部成员变量)。 |
| onVideoAdPlayError(WindMillError error, String placementId) | 广告播放出错。参数说明:error(报错信息,具体可看其内部code和message)、placementId(报错的广告位Id)。 |
| onVideoAdPlayEnd(AdInfo adInfo) | 广告播放结束。参数说明:adInfo(广告信息,具体可看其内部成员变量)。 |
| onVideoAdClicked(AdInfo adInfo) | 广告被点击。参数说明:adInfo(广告信息,具体可看其内部成员变量)。 |
| onVideoRewarded(AdInfo adInfo, WMRewardInfo rewardInfo) | 广告获取奖励。参数说明:adInfo(广告信息,具体可看其内部成员变量)、rewardInfo(奖励信息)。 |
| onVideoAdClosed(AdInfo adInfo) | 广告关闭。参数说明:adInfo(广告信息,具体可看其内部成员变量)。 |
2. 接入代码示例
2.1 设置监听回调
java
private WMRewardAd rewardVideoAd;
/**
* PLACEMENT_ID 必填
* USER_ID 可选,若使用服务端回调必填
* OPTIONS 自定义参数 可选
* rewardVideoAd.getRequest().setOptions(option);//可用此方法来更新option参数
*/
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) {
}
});2.2 激励视频广告加载
java
/**
*同一个WMRewardAd不建议在广告playing中重复load
*同一个WMRewardAd在onVideoAdClosed中可以load下一次广告
*/
if (rewardVideoAd != null) {
rewardVideoAd.loadAd();
}2.3 激励视频广告播放
java
/**
* 收到onVideoAdLoadSuccess回调代表广告已ready
* option 自定义参数(可选)
*/
if (rewardVideoAd != null && rewardVideoAd.isReady()) {
//广告播放
HashMap option = new HashMap();
option.put(WMConstants.AD_SCENE_ID, "567");
option.put(WMConstants.AD_SCENE_DESC, "转盘抽奖");
rewardVideoAd.show(this, option);
}2.4 激励回调风控相关
在ToBid激励回调onVideoRewarded方法中获取rewardInfo对象的内部数据。
- com.windmill.sdk.reward.WMRewardInfo
| 方法名 | 方法介绍 |
|---|---|
| isReward() | 是否奖励 |
| getCustomData() | customData数据目前只针对穿山甲渠道 |
| getTrans_id() | ToBid请求的唯一ID。 |
| getThird_trans_id() | 获取第三方平台的请求的唯一ID。目前支持优量汇、百度等渠道 |
| getUser_id() | 获取userID。 |
穿山甲customData数据取值可参考下方代码。
java
/**
* 穿山甲激励回调
*/
@Override
public void onRewardVerify(boolean rewardVerify, int rewardAmount, String rewardName, int errorCode, String errorMsg) {
Map<String, Object> customData = new HashMap<>();
customData.put("rewardVerify", rewardVerify);
customData.put("errorCode", errorCode);
customData.put("errorMsg", errorMsg);
callVideoAdRewardWithData(rewardVerify, customData);
}2.5 激励视频广告预加载注意事项
需要在平台开启预加载功能。
开启预加载功能后,sdk内部会在广告播放中再次去请求广告,成功后会再次回调onVideoAdLoadSuccess。(相当于load一次广告会有两次onVideoAdLoadSuccess。ToBid_3.3.0版本及以后不再回调两次)
开启预加载功能后,要注意全局使用同一个WMRewardAd对象。(new注意判null)
广告播放时可先判断isReady(),如果ready直接播放,否则可再次调用loadAd()。
java
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();
}2.6 激励视频广告自动加载回调
/**
* 后台开启自动加载功能才会收到此回调
* 不实现该回调监听不影响自动加载功能
*/
rewardAd.setAutoLoadListener(new AutoAdLoadListener() {
@Override
public void onAutoAdLoadSuccess(String placementId) {
Log.i("Sigmob", "----RewardUI--onAutoAdLoadSuccess " + placementId);
}
@Override
public void onAutoAdLoadFail(WindMillError error, String placementId) {
Log.i("Sigmob", "---RewardUI--onAutoAdLoadFail " + placementId);
}
});