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

增量游戏开发中调整AdMob激励广告次数与奖励是否合规

AdMob激励广告政策合规性判定

你的核心玩法逻辑不违反AdMob现行政策,但现有实现有1个明确风险点,调整后即可正常上线:

  • 「实验室升级广告奖励倍率」完全合规:AdMob仅要求用户必须完整观看激励视频才能获得对应奖励,不限制游戏方在自身经济系统内给广告奖励追加加成。你拿到SDK返回的基础rewardAmount后,乘以本地/云端存储的倍率系数发放最终金币,属于游戏自主给用户的额外福利,不属于篡改广告奖励逻辑,只要在升级项描述里明确告知用户升级后的实际奖励数值,不存在虚假宣传就没问题。
  • 「升级提升广告观看上限」完全合规:AdMob没有强制要求开发者开放无限制的激励广告入口,你完全可以根据游戏数值平衡设置广告观看次数上限,只要在次数耗尽后明确给用户提示,不要出现点击广告按钮无响应、静默失败的情况即可。
  • 数据同步到Firestore、本地存储的操作没有任何合规问题,这属于你自身的用户数据管理范畴,AdMob不会干预开发者的正常用户数据存储逻辑。

现有代码的风险点

你当前在广告未就绪时调用onRewardedAdShowed.invoke(-1)的逻辑存在违规风险:AdMob激励广告的核心规则是只有用户完整看完广告、触发rewardItem回调时,才能给用户发放奖励。如果广告未加载完成、用户中途关闭广告,绝对不能发放任何形式的广告相关奖励(包括保底奖励、安慰奖),否则会被判定为无效流量,严重时会被限制广告填充甚至封号。
建议你把广告未就绪、用户未看完广告的回调和发奖回调拆开,不要复用同一个回调函数传特殊值走发奖逻辑,避免误发奖励。

修正后的参考实现

fun showRewardedAds(
    context: Context,
    onRewardEarned: (finalCoin: Int) -> Unit,
    onAdUnavailable: () -> Unit = {}
) {
    mRewardedAd?.let { loadedAd ->
        loadedAd.show(context.getActivity()!!) { rewardItem ->
            val baseReward = rewardItem.amount
            // 从DataStore/Room读取已升级的广告奖励倍率
            val finalReward = (baseReward * savedAdMultiplier).toInt()
            Log.d("Admob", "User watched full ad, earned $finalReward coins (base: $baseReward)")
            onRewardEarned(finalReward)
        }
    } ?: run {
        Log.d("Admob", "Rewarded ad not loaded yet")
        onAdUnavailable()
        // 可选:弹出Toast提示用户"广告暂未准备好,请稍后再试"
    }
}

额外注意事项

  • 所有激励广告必须由用户主动点击触发,不要自动弹出激励广告
  • 所有和广告相关的升级效果必须如实描述,不要出现标注奖励和实际到账奖励不符的虚假宣传情况
  • 不要以任何形式引导用户点击广告,包括文字提示、箭头引导点击广告跳转按钮等行为

内容的提问来源于stack exchange,提问作者Loïc Jackotin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:01:28