增量游戏开发中调整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
相关产品推荐
相关产品推荐

