插屏广告
参考Demo
注意: 如果聚合集成了腾讯广告,则触发展示插屏广告的Activity需要配置:
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"1. 主要API
1.1 WMInterstitialAd
- com.windmill.sdk.interstitial.WMInterstitialAd
| 方法名 | 方法介绍 |
|---|---|
| WMInterstitialAd(Activity activity, WMInterstitialAdRequest request) | 构造方法。参数说明:activity(展示广告的 activity)、request(广告请求对象)。 |
| setAdSourceStatusListener(WMAdSourceStatusListener adSourceStatusListener) | 设置广告源层级加载回调,需要在广告load 之前设置 |
| setInterstitialAdListener(WMInterstitialAdListener interstitialAdListener) | 回调监听。广告相关状态会通过 interstitialAdListener 通知开发者。 |
| loadAd() | 拉取广告。 |
| isReady() | 广告是否准备好,未准备好广告将无法展示。 |
| setFilter(WMAdFilter filter) | 广告源加载及播放过滤设置,具体使用见高级设置->广告过滤->广告对象级广告源过滤器设置。 |
| setCustomGroup(HashMap<String, String> customGroup) | 广告对象级自定义广告源分组,可设置多个分组,每个分组下可设置多个广告源。 |
| setActivityChannelFilterList(Set<Integer> channelIds) | 广告对象加载时渠道 Activity 透传过滤,设置渠道对应 id 后加载时传给三方渠道加载的参数由 activity 改为 context。 目前不支持传 context 的渠道:tapadn,广点通,美数,oppoadn,oppo,vivo,vivoadn,小米。 |
| show(Activity activity, HashMap<String, String> options) | 展示广告。参数说明:activity(展示广告的 activity)、options(广告展示时的扩展参数,可选,可参考demo)。 |
| checkValidAdCaches() | 查询当前广告位的所有缓存信息的AdInfo对象、在广告加载成功后调用。 |
| getLoadFailMessages() | 获取当前广告位详细报错信息,包含广告源的详细错误信息。返回 String 类型(可能会为 null)。在 onInterstitialAdLoadError() 回调之后之后调用。 |
| getAdInfo() | 获取当前Ready最高价格的AdInfo信息。 |
| destroy() | 销毁广告。 |
1.2 WMInterstitialAdRequest
- com.windmill.sdk.interstitial.WMInterstitialAdRequest
| 方法名 | 方法介绍 |
|---|---|
| WMInterstitialAdRequest(String placementId, String userId, Map<String, Object> options) | 构造方法。参数说明:placementId(广告位Id)、userId(用户Id可选,不要超过65个字符, 超过限制后会导致数据计算异常)、options(扩展参数,可传任意)。 |
1.3 WMInterstitialAdListener
- com.windmill.sdk.interstitial.WMInterstitialAdListener
| 方法名 | 方法介绍 |
|---|---|
| onInterstitialAdLoadSuccess(String placementId) | 广告成功加载。参数说明:placementId(广告位Id)。 |
| onInterstitialAdLoadError(WindMillError error, String placementId) | 广告加载失败。参数说明:error(报错信息,具体可看其内部code和message)、placementId(报错的广告位Id)。 |
| onInterstitialAdPlayStart(AdInfo adInfo) | 广告成功展示,媒体可在此记录曝光。参数说明:adInfo(广告信息,具体可看其内部成员变量)。 |
| onInterstitialAdPlayError(WindMillError error, String placementId) | 广告播放出错。参数说明:error(报错信息,具体可看其内部code和message)、placementId(报错的广告位Id)。 |
| onInterstitialAdPlayEnd(AdInfo adInfo) | 广告播放结束。参数说明:adInfo(广告信息,具体可看其内部成员变量)。 |
| onInterstitialAdClicked(AdInfo adInfo) | 广告被点击。参数说明:adInfo(广告信息,具体可看其内部成员变量)。 |
| onInterstitialAdClosed(AdInfo adInfo) | 广告关闭。参数说明:adInfo(广告信息,具体可看其内部成员变量)。 |
2. 接入代码示例
2.1 设置监听回调
java
private WMInterstitialAd interstitialAd;
/**
* PLACEMENT_ID 必填
* USER_ID 可选
* OPTIONS 自定义参数 可选
*/
WMInterstitialAdRequest request = new WMInterstitialAdRequest(PLACEMENT_ID, USER_ID, OPTIONS);
interstitialAd = new WMInterstitialAd(this, request);
interstitialAd.setInterstitialAdListener(new WMInterstitialAdListener() {
@Override
public void onInterstitialAdLoadSuccess(String placementId) {
}
@Override
public void onInterstitialAdPlayStart(AdInfo adInfo) {
}
@Override
public void onInterstitialAdPlayEnd(AdInfo adInfo) {
}
@Override
public void onInterstitialAdClicked(AdInfo adInfo) {
}
@Override
public void onInterstitialAdClosed(AdInfo adInfo) {
}
/**
* 加载广告错误回调
* WindMillError 插屏错误内容
* placementId 广告位
*/
@Override
public void onInterstitialAdLoadError(final WindMillError error, final String placementId) {
}
/**
* 播放错误回调
* WindMillError 插屏错误内容
* placementId 广告位
*/
@Override
public void onInterstitialAdPlayError(final WindMillError error, final String placementId) {
}
});2.2 插屏广告加载
java
/**
*同一个WMInterstitialAd不建议在广告playing中重复load
*同一个WMInterstitialAd在onInterstitialAdClosed中可以load下一次广告
*/
if (interstitialAd != null) {
interstitialAd.loadAd();
}2.3 插屏广告播放
java
/**
* 收到onInterstitialAdLoadSuccess回调代表广告已ready
* option 自定义参数(可选)
*/
if (interstitialAd != null && interstitialAd.isReady()) {
//广告播放
HashMap option = new HashMap();
option.put(WMConstants.AD_SCENE_ID, "567");
option.put(WMConstants.AD_SCENE_DESC, "转盘抽奖");
interstitialAd.show(this, option);
}2.4 插屏广告预加载注意事项
需要在平台开启预加载功能。
开启预加载功能后,sdk内部会在广告播放中再次去请求广告,成功后会再次回调onInterstitialAdLoadSuccess。(相当于load一次广告会有两次onInterstitialAdLoadSuccess)
开启预加载功能后,要注意全局使用同一个WMInterstitialAd对象。(new注意判null)
广告播放时可先判断isReady(),如果ready直接播放,否则可再次调用loadAd()。
java
private WMInterstitialAd mInterstitialAd;//全局对象
/**
* 加载广告
*/
private void loadAd() {
if (mInterstitialAd == null) {
mInterstitialAd = new WMInterstitialAd(this, new WMInterstitialAdRequest(placementId, userID, options));
}
mInterstitialAd.setInterstitialAdListener(new WMInterstitialAdListener() {
@Override
public void onInterstitialAdLoadSuccess(String placementId) {
}
@Override
public void onInterstitialAdPlayStart(AdInfo adInfo) {
}
@Override
public void onInterstitialAdPlayEnd(AdInfo adInfo) {
}
@Override
public void onInterstitialAdClicked(AdInfo adInfo) {
}
@Override
public void onInterstitialAdClosed(AdInfo adInfo) {
}
@Override
public void onInterstitialAdLoadError(WindMillError windMillError, String placementId) {
}
@Override
public void onInterstitialAdPlayError(WindMillError windMillError, String placementId) {
}
});
mInterstitialAd.loadAd();
}2.5 插屏广告自动加载回调
/**
* 后台开启自动加载功能才会收到此回调
* 不实现该回调监听不影响自动加载功能
*/
interstitialAd.setAutoLoadListener(new AutoAdLoadListener() {
@Override
public void onAutoAdLoadSuccess(String placementId) {
Log.i("Sigmob", "----InterstitialUI--onAutoAdLoadSuccess " + placementId);
}
@Override
public void onAutoAdLoadFail(WindMillError error, String placementId) {
Log.i("Sigmob", "---InterstitialUI--onAutoAdLoadFail " + placementId);
}
});