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

AdMob GDPR EEA合规:未获用户同意时的广告展示与处理方式

关于react-native-google-mobile-ads的GDPR合规与广告展示问题

我在应用中使用react-native-google-mobile-ads展示插屏广告(Interstitials)和激励广告(Rewarded Ads),目前正尝试正确处理EEA地区的GDPR合规同意事宜。以下是我的相关代码:

插屏广告创建代码

const interstitial = InterstitialAd.createForAdRequest(adUnitId, {
  ...ADS_REQUEST_OPTIONS,
  requestNonPersonalizedAdsOnly: !userChoices.selectPersonalisedAds,
});

1. config.js

export const TEST_DEVICE_ID = "EMULATOR";

export const INFO_REQUEST_CONFIGURATION = {
  tagForUnderAgeOfConsent: true,
  testDeviceIdentifiers: [TEST_DEVICE_ID],
  // Always ensure debug information is removed for production apps!
  ...__DEV__ && { debugGeography: AdsConsentDebugGeography.EEA },
};

export const ADS_REQUEST_CONFIGURATION = {
  maxAdContentRating: MaxAdContentRating.T,
  tagForChildDirectedTreatment: false,
  tagForUnderAgeOfConsent: true,
  testDeviceIdentifiers: [TEST_DEVICE_ID],
};

export const ADS_REQUEST_OPTIONS = {
  requestNonPersonalizedAdsOnly: false,
  keywords: [
    ...
  ],
};

2. AdMobContext.jsx

...

export function AdMobProvider({ children }) {
  const requestEEAConsent = async () => {
    const consentInfo = await AdsConsent.requestInfoUpdate(INFO_REQUEST_CONFIGURATION);

    if (
      consentInfo.isConsentFormAvailable &&
      consentInfo.status === AdsConsentStatus.REQUIRED
    ) {
      const { status } = await AdsConsent.showForm();

      consentInfo.status = status;
    }

    console.log({ consentInfo });

    return consentInfo;
  };

  const initializeAdmob = async () => {
    // Request the respective consent to users in the EEA
    await requestEEAConsent();

    // Configure the ads requests
    await mobileAds().setRequestConfiguration(ADS_REQUEST_CONFIGURATION);

    // Initialize the AdMob service
    await mobileAds().initialize();
  };

   useEffect(() => {
    initializeAdmob();
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, []);
  
   ...
}

技术问题

  • 对于未授予同意的用户,AdMob是否会展示广告?
  • 我们需要手动处理该情况还是由AdMob自动管理?

问题解答

  1. 未授予同意的用户,AdMob是否会展示广告?
    会展示,但仅提供非个性化广告。当用户未同意个性化广告时,AdMob不会利用用户个人数据投放针对性广告,但仍能提供基于上下文或通用的非个性化广告内容。

  2. 需要手动处理还是由AdMob自动管理?
    需要结合手动配置与AdMob自动逻辑:

  • AdMob会根据你传递的requestNonPersonalizedAdsOnly参数自动调整广告类型,但你必须确保该参数取值与用户的同意状态一致(比如你代码中requestNonPersonalizedAdsOnly: !userChoices.selectPersonalisedAds的写法是正确的)。
  • 你已实现的EEA用户同意请求、展示同意表单流程是必要的手动步骤,需自行维护用户选择状态,并在广告请求时正确传递对应参数。
  • 此外,tagForUnderAgeOfConsent等受众相关配置参数也需要手动设置,确保与应用实际受众匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:10:31