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

AdMob Open app ad 打开/恢复应用时频繁展示问题咨询

AdMob开屏广告冷却间隔实现方案

AdMob官方后台没有提供开屏广告展示频率冷却的直接配置项,该逻辑需要在客户端接入层自行实现,以下是经过线上验证的可落地方案:

核心实现思路

自行维护全局的广告展示状态,在每次触发开屏广告(冷启动、前台切回)的判断节点,先做冷却时间校验,符合条件才走广告加载、展示流程,需要维护两个核心值:

  • 持久化存储的上次开屏广告成功展示的时间戳:不能只存在内存中,要存在本地偏好设置里,保证冷启动时也能读取到历史值
  • 自定义的冷却时长阈值:行业常规取值是40-60秒,该区间既不会因为展示太频繁影响用户体验,也符合AdMob流量政策,不会触发无效流量判定

具体落地逻辑

  • 冷启动场景校验:应用启动初始化流程中,先读取本地存储的上次广告展示时间,和当前时间做差值计算,若差值小于设定的冷却阈值,直接跳过本次开屏广告流程,进入应用主界面。
  • 前后台切换场景校验:不要在监听的应用回到前台事件里无脑触发广告请求,先执行同样的时间差校验,只有超过冷却时长才触发广告预加载、展示逻辑。
  • 时间戳更新时机:必须在广告真正成功展示的回调里更新时间戳,不要在广告开始加载、加载完成的节点更新:
    • 安卓端对应onAdShowedFullScreenContent回调
    • iOS端对应adDidPresentFullScreenContent回调
      避免广告加载失败、用户取消等场景下误触发冷却,导致广告展示率过低影响收益。

注意避坑

  • 冷却时长不要设置低于30秒,过高的展示频率很容易被AdMob判定为诱导点击、无效流量,轻则限制广告填充,重则触发账号封禁。
  • 提前预加载的开屏广告如果缓存超过1小时,要主动销毁重新请求,避免过期广告展示导致的点击无效、收益被扣。
  • 不要在用户进行核心操作(比如支付、表单提交到一半切后台再回来)的时候强行弹广告,即使过了冷却时间也要加场景判断,不然容易引发用户投诉。

参考代码片段(安卓Kotlin)

// 冷却时长配置:50秒
const val OPEN_AD_COOLDOWN_DURATION = 50 * 1000L
const val SP_KEY_LAST_OPEN_AD_SHOW_TIME = "sp_last_open_ad_show"

// 广告触发前的校验方法
fun isOpenAdCooledDown(): Boolean {
    val lastShowTime = defaultSharedPref.getLong(SP_KEY_LAST_OPEN_AD_SHOW_TIME, 0L)
    return System.currentTimeMillis() - lastShowTime >= OPEN_AD_COOLDOWN_DURATION
}

// 广告成功展示回调中更新时间
override fun onAdShowedFullScreenContent(p0: Ad) {
    defaultSharedPref.edit()
        .putLong(SP_KEY_LAST_OPEN_AD_SHOW_TIME, System.currentTimeMillis())
        .apply()
}

iOS端实现逻辑完全一致,仅需将对应API替换为iOS AdMob SDK的同名回调即可,整个逻辑不需要依赖AdMob后台的任何配置,客户端可完全自主控制,符合AdMob官方政策要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:09:41