请遵循集成每种广告类型的说明。然后您可以按照以下方法获取广告填充时的价格:
广告加载成功后,您可以在回调接口中获取ATAdInfo
,然后通过ATAdInfo的getEcpm()
获取该广告的Ecpm 。
getEcpm()
返回货币单位与后台账号下的货币单位一致,通常为元(CNY)或美元(USD),具体可以通过adInfo.getCurrency();判断。
示例代码如下:
// Native Ad
ATAdxNative atNative = new ATAdxNative(context, "Your Placement Id", new ATAdxNativeListener() {
@Override
public void onNativeAdLoaded(ATAdInfo adInfo, ATAdxNativeAd atAdxNativeAd) {
String currency = adInfo.getCurrency();
double ecpm = adInfo.getEcpm();
}
});
// Rewarded Video
ATAdxRewardVideoAd rewardVideoAd = new ATAdxRewardVideoAd(context, "Your Placement Id");
rewardVideoAd.setListener(new ATAdxRewardVideoListener() {
@Override
public void onRewardedVideoAdLoaded(ATAdInfo adInfo) {
String currency = adInfo.getCurrency();
double ecpm = adInfo.getEcpm();
}
});
// Interstitial
ATAdxInterstitial interstitial = new ATAdxInterstitial(context, "Your Placement Id");
interstitial.setListener(new ATAdxInterstitialListener() {
@Override
public void onInterstitialAdLoaded(ATAdInfo adInfo) {
String currency = adInfo.getCurrency();
double ecpm = adInfo.getEcpm();
}
});
// App Open Ad
ATAdxSplashAd splashAd = new ATAdxSplashAd(context, "Your Placement Id", new ATAdxSplashListener() {
@Override
public void onAdLoaded(boolean isTimeout, ATAdInfo adInfo) {
String currency = adInfo.getCurrency();
double ecpm = adInfo.getEcpm();
}
});
// Banner Ad
ATAdxBannerView bannerView = new ATAdxBannerView(context);
bannerView.setPlacementId("Your Placement Id");
bannerView.setListener(new ATAdxBannerListener() {
@Override
public void onBannerLoaded(ATAdInfo adInfo) {
String currency = adInfo.getCurrency();
double ecpm = adInfo.getEcpm();
}
});
如果 Taku 比价胜出,您应该在展示广告之前将第二个出价者的最高价格传递给 Taku。这一步将帮助我们优化收益。
注意:SECOND_PRICE传入的价格货币单位必须为美元
//以激励视频为例,其他广告样式传入对应广告样式对象即可
public void sendAdxWin(ATAdxRewardVideoAd rewardVideoAd, double secondPrice, String secondPriceBidderName) {
// 如果获取到二价价格货币种类为人民币,可通过我们的工具方法获取当前汇率,再去转成美元传入
//secondPrice = getRmbToUsdPrice(secondPrice);
if (rewardVideoAd != null) {
Map winExtraMap = new HashMap<>();
winExtraMap.put(IATAdxHandler.SECOND_PRICE, secondPrice);//: double,Currency required USD
//Loss Network Name
winExtraMap.put(IATAdxHandler.BIDDER_NAME, secondPriceBidderName);//: String
rewardVideoAd.notifyWin(winExtraMap);
}
}
// 人民币元转美元
public double getRmbToUsdPrice(double rmbPrice) {
double rate = ATSDKUtils.getUsdChangeToRmbRate();
if (rate > 0) {
return rmbPrice / rate;
}
return rmbPrice;
}
如果 Taku 竞价失败,您应该在展示广告之前将最高价出价者的价格传递给 Taku。这一步将帮助我们优化收益。
注意:winEcpm传入的价格货币单位必须为美元
public void sendAdxLose(ATAdxRewardVideoAd rewardVideoAd, IATAdxHandler.LOSS_REASON lossReason, double winnerEcpm, String bidderName) {
if (rewardVideoAd != null) {
Map lossExtraMap = new HashMap<>();
//Win Network Name
lossExtraMap.put(IATAdxHandler.BIDDER_NAME, bidderName);//: String
// 如果获取到竞胜价格货币种类为人民币,可通过我们的工具方法获取当前汇率,再去转成美元传入
//winnerEcpm = getRmbToUsdPrice(winnerEcpm);
/**
* @param lossReason // loss reason
* @param winnerEcpm // win price,Currency required USD
* @param lossExtraMap // loss extra info
*/
rewardVideoAd.notifyLose(lossReason, winnerEcpm, lossExtraMap);
//如果该缓存在竞败后没有展示机会可以主动释放掉
//例如激励,当不需要再使用该缓存时可以主动调用API释放掉该缓存
//if (rewardVideoAd != null) {
// rewardVideoAd.destroy();
//}
}
}
// 人民币元转美元
public double getRmbToUsdPrice(double rmbPrice) {
double rate = ATSDKUtils.getUsdChangeToRmbRate();
if (rate > 0) {
return rmbPrice / rate;
}
return rmbPrice;
}
//例如激励,当不需要再使用该缓存时可以主动调用API释放掉该缓存
if (rewardVideoAd != null) {
rewardVideoAd.destroy();
}
//例如激励,返回广告缓存过期时间戳,单位ms
if (rewardVideoAd != null) {
long expirationTimestamp = rewardVideoAd.getExpirationTimestamp();
}