Flutter iOS端使用UMP SDK,如何根据用户同意状态设置非个性化广告?
解决Flutter UMP SDK获取个性化广告同意状态的问题
要确定用户是否同意个性化广告,不能仅依赖ConsentStatus.obtained(它仅表示用户提交了同意表单),而是要通过ConsentInformation实例的专属属性获取具体的同意结果,具体操作如下:
核心步骤与代码示例
初始化并完成同意流程
确保你已经完成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()); }获取个性化广告同意状态
在同意流程完成后,通过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
相关产品推荐
相关产品推荐

