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自动管理?
问题解答
未授予同意的用户,AdMob是否会展示广告?
会展示,但仅提供非个性化广告。当用户未同意个性化广告时,AdMob不会利用用户个人数据投放针对性广告,但仍能提供基于上下文或通用的非个性化广告内容。需要手动处理还是由AdMob自动管理?
需要结合手动配置与AdMob自动逻辑:
- AdMob会根据你传递的
requestNonPersonalizedAdsOnly参数自动调整广告类型,但你必须确保该参数取值与用户的同意状态一致(比如你代码中requestNonPersonalizedAdsOnly: !userChoices.selectPersonalisedAds的写法是正确的)。 - 你已实现的EEA用户同意请求、展示同意表单流程是必要的手动步骤,需自行维护用户选择状态,并在广告请求时正确传递对应参数。
- 此外,
tagForUnderAgeOfConsent等受众相关配置参数也需要手动设置,确保与应用实际受众匹配。
内容的提问来源于stack exchange,提问作者Raul
相关产品推荐
相关产品推荐

