You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

插屏测试广告未显示?求助排查遗漏的代码与逻辑

嘿,我来帮你排查下插屏广告无法展示的问题~你的代码里有几个关键的逻辑和配置遗漏,导致广告没法正常弹出来:

核心问题与遗漏点
  • 广告加载是异步操作,不能直接在loadAd后立刻调用show()
    你当前的代码里,调用mInterstitialAd.loadAd()之后马上执行show(),但广告加载需要时间(要从服务器请求资源),这时候广告还没准备好,自然无法展示。必须等广告加载完成的回调触发后,再调用展示方法。

  • 缺少广告加载状态的监听
    你需要给InterstitialAd设置AdListener,通过回调来确认广告状态:

    • onAdLoaded():广告加载完成的回调,只有在这里调用show()才有效;
    • onAdFailedToLoad():可以捕获加载失败的错误码,帮你排查问题(比如网络异常、广告单元ID错误等);
    • onAdClosed():广告关闭后可以重新加载下一个广告,方便后续展示。
  • 可能缺少Manifest中的必要配置
    别忘了在AndroidManifest.xml里添加核心配置:

    • 互联网权限(广告需要网络请求):
      <uses-permission android:name="android.permission.INTERNET" />
      
    • AdMob应用ID的元数据(放在<application>标签内):
      <meta-data
          android:name="com.google.android.gms.ads.APPLICATION_ID"
          android:value="你的AdMob应用ID"/>
      
修正后的代码示例
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // 初始化插屏广告
    mInterstitialAd = new InterstitialAd(this); 
    mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712"); // 测试ID是有效的

    // 设置广告状态监听
    mInterstitialAd.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            // 确认广告已加载完成后再展示
            if (mInterstitialAd.isLoaded()) {
                mInterstitialAd.show();
            }
        }

        @Override
        public void onAdFailedToLoad(int errorCode) {
            // 打印错误信息,方便排查问题
            Log.d("AdMobDebug", "插屏广告加载失败,错误码:" + errorCode);
            // 可选:添加重试逻辑(注意不要无限重试)
            // mInterstitialAd.loadAd(new AdRequest.Builder().build());
        }

        @Override
        public void onAdClosed() {
            // 广告关闭后,预加载下一个广告,提升后续展示效率
            mInterstitialAd.loadAd(new AdRequest.Builder().build());
        }
    });

    // 开始加载广告
    mInterstitialAd.loadAd(new AdRequest.Builder().build()); 
}
额外注意事项
  • 你用的测试广告单元ID是Google提供的有效测试ID,没问题;正式上线记得替换成自己的真实广告单元ID;
  • 测试时尽量用真实设备,部分模拟器可能存在广告加载异常的情况;
  • 如果你的Google Mobile Ads SDK是20.0.0以上版本,旧版InterstitialAd已被弃用,推荐使用新版com.google.android.gms.ads.interstitial.InterstitialAd,用法会略有不同(比如用FullScreenContentCallback监听状态)。

内容的提问来源于stack exchange,提问作者Aj Pawar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 15:57:38