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

Flutter应用内购移除Admob插屏与激励广告技术问询

解决方案:内购后禁用Admob插屏与激励广告

我来帮你搞定这个问题——核心思路就是在加载和展示广告前,先检查用户是否已经购买了移除广告的内购套餐。我们需要先把内购状态持久化存到本地,然后在广告相关的代码里加判断逻辑,只要用户已购买,就跳过广告的加载和展示流程。

1. 先持久化存储内购状态

当用户完成移除广告的内购后,把这个购买状态保存到本地(这里用常用的SharedPreferences举例):

import 'package:shared_preferences/shared_preferences.dart';

// 保存用户是否已购买无广告套餐的状态
Future<void> setAdRemovedStatus(bool isPurchased) async {
  final prefs = await SharedPreferences.getInstance();
  await prefs.setBool('has_removed_ads', isPurchased);
}

// 获取用户是否已购买无广告套餐
Future<bool> getAdRemovedStatus() async {
  final prefs = await SharedPreferences.getInstance();
  // 默认返回false,即未购买
  return prefs.getBool('has_removed_ads') ?? false;
}

2. 修改插屏广告代码

在加载和显示插屏广告前,先判断用户的购买状态,已购买就不执行广告逻辑:

// 先获取内购状态
bool hasRemovedAds = await getAdRemovedStatus();
if (!hasRemovedAds) {
  InterstitialAd myInterstitial = InterstitialAd( 
    adUnitId: Platform.isIOS ? ios_ads : android_ads, 
    listener: (MobileAdEvent event) { 
      print("InterstitialAd event is $event"); 
    }, 
  );
  myInterstitial 
    ..load() 
    ..show( 
      anchorType: AnchorType.bottom, 
      anchorOffset: 0.0, 
    );
}

3. 修改激励广告代码

同样给激励广告加上判断逻辑,已购买则跳过:

bool hasRemovedAds = await getAdRemovedStatus();
if (!hasRemovedAds) {
  RewardedVideoAd.instance.listener = (RewardedVideoAdEvent event, {String rewardType, int rewardAmount}) { 
    if (event == RewardedVideoAdEvent.rewarded) { 
      // 这里保留你原有的奖励触发逻辑
    } 
  };
  RewardedVideoAd.instance.load(
    adUnitId: Platform.isIOS ? ios_ads : android_ads, 
    targetingInfo: targetingInfo
  ).then((v){ 
    print("log "+v.toString()); 
    if(v){ 
      RewardedVideoAd.instance.show(); 
    } 
  });
}

额外提醒

  • 记得在用户完成内购(并且验证通过后,如果有服务器验证的话),立即调用setAdRemovedStatus(true)更新状态,这样下次打开APP时广告也会自动禁用。
  • 如果你的内购需要服务器端验证,一定要在验证通过后再标记购买状态,防止被本地破解绕过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:27:44