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

AdMob Error Code 1(广告已展示)错误触发原因及处理方法问询

对应返回错误:

{ "Code": 1, "Message": "The ad has already been shown.", "Domain": "com.google.android.gms.ads", "Cause": "null" }
错误触发原因
  • 该错误属于AdMob全屏广告(插屏、激励视频、插屏激励等类型)的常见逻辑错误,核心触发逻辑是同一个广告实例被重复调用了show()方法:AdMob的全屏广告实例都是一次性使用对象,仅支持一次展示,只要已经调用过show(),无论展示是否成功,后续再调用同一个实例的show()就会触发该回调。
  • 「广告正常展示但仍触发该回调」的场景基本都是代码逻辑存在重复触发show()的执行路径:比如触发广告展示的点击事件没有添加防抖,短时间内多次执行show(),第一次调用成功展示了广告,第二次调用就触发了该错误回调;也有可能是页面生命周期回调(如onResume、onWindowFocusChanged)中错误写入了广告展示逻辑,广告弹出后生命周期回调再次执行,触发了二次show()调用。
  • 少数场景下部分机型的系统输入事件会存在重复上报的问题,也可能导致单次用户操作触发多次show()执行。
修复方案
  • 展示前先校验广告状态:每次调用show()前,必须调用对应广告实例的isLoaded()方法确认广告处于可展示状态,仅当返回true时执行后续展示逻辑。
  • 增加全局展示锁:定义一个布尔类型的标记位isAdShowing,执行show()前判断该标记位,若为true直接拦截展示请求;调用show()时将标记位置为true,在广告的onAdDismissedFullScreenContent、onAdFailedToShowFullScreenContent回调中再将标记位重置为false。
  • 禁止复用已使用过的广告实例:只要广告实例触发过展示相关回调(无论成功或失败),直接调用destroy()销毁该实例,重新走广告加载流程获取新的广告实例供下次展示使用。
  • 给广告展示的触发入口添加防抖逻辑,拦截1s内的重复触发请求,避免用户快速点击导致的重复调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:15:02