当AdMob激励视频广告显示印象(impression),但没有收益(revenue),可能有以下几种原因:
广告请求过于频繁:如果你在短时间内连续请求广告,而没有足够的时间给广告加载和显示,AdMob可能会记录广告显示印象,但由于广告没有播放完毕或没有生成收益,所以没有收益。解决方法是合理控制广告请求的频率,确保每次广告请求后有足够的时间给广告加载和显示。
广告填充率低:AdMob广告填充率表示广告库存被填充的程度,如果广告填充率低,可能会导致广告显示印象但没有收益。解决方法是优化应用的受众和广告定位,以提高广告填充率。
下面是一个使用AdMob激励视频广告的示例代码:
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.reward.RewardedVideoAd;
import com.google.android.gms.ads.reward.RewardItem;
import com.google.android.gms.ads.reward.RewardedVideoAdListener;
public class MainActivity extends AppCompatActivity implements RewardedVideoAdListener {
private RewardedVideoAd mRewardedVideoAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化激励视频广告
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
mRewardedVideoAd.setRewardedVideoAdListener(this);
// 加载激励视频广告
loadRewardedVideoAd();
}
private void loadRewardedVideoAd() {
mRewardedVideoAd.loadAd("YOUR_AD_UNIT_ID",
new AdRequest.Builder().build());
}
// RewardedVideoAdListener回调方法
@Override
public void onRewardedVideoAdLoaded() {
// 广告加载完成,可以显示广告
mRewardedVideoAd.show();
}
@Override
public void onRewardedVideoAdOpened() {
}
@Override
public void onRewardedVideoStarted() {
}
@Override
public void onRewardedVideoAdClosed() {
}
@Override
public void onRewarded(RewardItem rewardItem) {
}
@Override
public void onRewardedVideoAdLeftApplication() {
}
@Override
public void onRewardedVideoAdFailedToLoad(int i) {
}
@Override
public void onRewardedVideoCompleted() {
}
}
请确保在YOUR_AD_UNIT_ID
处替换为你的AdMob广告单元ID。这段代码负责初始化和加载激励视频广告,并在广告加载完成后显示广告。根据你的应用需求,可以在onRewardedVideoAdLoaded
方法中添加逻辑来展示广告。