升级AdMob库后setAdListener未定义,无法使用onAdClosed回调如何解决?
问题原因
AdMob从20.0.0及以上版本开始,移除了InterstitialAd类原有的setAdListener()方法,广告事件回调改用全新的FullScreenContentCallback替代。
适配解决方案
直接替换原有setAdListener代码为以下实现即可,你需要的onAdClosed对应新回调里的onAdDismissedFullScreenContent方法,触发时机完全一致:
mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() { @Override public void onAdLoaded() { // 对应原AdListener的onAdLoaded Toast.makeText(MyActivity.this, "The interstitial is loaded", Toast.LENGTH_SHORT).show(); } @Override public void onAdDismissedFullScreenContent() { // 对应原AdListener的onAdClosed,在此处添加打开新Intent的逻辑即可 mInterstitialAd = null; goToNextLevel(); } // 可按需添加其他回调 @Override public void onAdFailedToShowFullScreenContent(AdError adError) { mInterstitialAd = null; } @Override public void onAdShowedFullScreenContent() { // 广告成功展示时触发 } });
如果升级后广告加载逻辑也出现报错,同步将原有加载逻辑替换为新版本的静态加载方案即可:
AdRequest adRequest = new AdRequest.Builder().build(); InterstitialAd.load(MyActivity.this, "你的插屏广告单元ID", adRequest, new InterstitialAdLoadCallback() { @Override public void onAdLoaded(@NonNull InterstitialAd interstitialAd) { mInterstitialAd = interstitialAd; // 此处可以绑定上面的FullScreenContentCallback } @Override public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) { mInterstitialAd = null; } });
内容的提问来源于stack exchange,提问作者Bilal Rammal
相关产品推荐
相关产品推荐

