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

Flutter iOS端使用UMP SDK,如何根据用户同意状态设置非个性化广告?

解决Flutter UMP SDK获取个性化广告同意状态的问题

要确定用户是否同意个性化广告,不能仅依赖ConsentStatus.obtained(它仅表示用户提交了同意表单),而是要通过ConsentInformation实例的专属属性获取具体的同意结果,具体操作如下:


核心步骤与代码示例

  1. 初始化并完成同意流程
    确保你已经完成UMP SDK的初始化,并触发同意表单展示(如果用户需要提交同意):

    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      
      // 初始化ConsentInformation(测试环境可添加debug配置)
      await ConsentInformation.instance.initialize(
        debugSettings: DebugSettings(
          debugGeography: DebugGeography.debugGeographyEea,
          testDeviceIds: ['你的测试设备ID'],
        ),
      );
      
      // 加载并展示同意表单(如果需要)
      await ConsentInformation.instance.loadAndShowConsentFormIfRequired();
      
      runApp(const MyApp());
    }
    
  2. 获取个性化广告同意状态
    在同意流程完成后,通过isPersonalizedAdsEnabled属性直接判断用户是否允许个性化广告:

    // 获取同意信息实例
    final consentInfo = ConsentInformation.instance;
    
    // 确认用户已提交同意表单
    if (consentInfo.status == ConsentStatus.obtained) {
      // 判断是否允许个性化广告
      bool allowPersonalizedAds = consentInfo.isPersonalizedAdsEnabled;
      
      // 根据结果构建AdRequest
      final adRequest = AdRequest(
        nonPersonalizedAds: !allowPersonalizedAds,
      );
      
      // 后续使用adRequest请求广告
      // 例如: BannerAd(adUnitId: '你的广告ID', request: adRequest, ...)
    }
    

关键说明

  • isPersonalizedAdsEnabled是UMP SDK提供的核心属性,直接返回用户是否同意个性化广告的布尔值。
  • 如果用户未同意个性化广告,将nonPersonalizedAds设为true即可请求非个性化广告,符合AdMob的要求。
  • 若用户处于无需提交同意的地区(非EEA),isPersonalizedAdsEnabled会默认返回true,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:40:32