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

如何基于User Messaging Platform SDK判断个性化/非个性化广告展示权限?

基于Google User Messaging Platform (UMP) SDK判断广告展示类型的逻辑

UMP SDK的设计逻辑和旧版Consent SDK不同,不再通过单一枚举值直接区分个性化/非个性化广告,而是需要结合ConsentInformation的多个状态参数和用户的具体同意选项来判断,以下是具体逻辑:

核心判断流程

  1. 无需同意(NOT_REQUIRED)
    用户所在地区不属于需要广告同意的合规区域(如非EEA/英国地区),可直接加载个性化广告,无需额外判断。

  2. 未获取同意(REQUIRED/UNKNOWN)

    • 若状态为REQUIRED:必须先展示consent弹窗,获取用户明确同意后再处理广告加载逻辑。
    • 若状态为UNKNOWN:先调用requestConsentInfoUpdate()获取最新的合规状态,再根据返回结果执行后续流程。
  3. 已获取同意(OBTAINED)
    此时需要进一步判断用户的具体同意选择:

    • 先通过getConsentDecisionStatus()确认用户是否给出了有效同意(CONSENT_GIVEN);
    • 若用户同意,再检查是否允许个性化广告:对于EEA/英国地区用户,可通过ConsentDetails中的ad_personalization字段判断;非合规区域用户默认允许个性化。
    • 若用户拒绝所有同意请求,只能加载非个性化广告。

代码示例(Java)

ConsentInformation consentInfo = ConsentInformation.getInstance(context);

switch (consentInfo.getConsentStatus()) {
    case ConsentStatus.NOT_REQUIRED:
        loadPersonalizedAds();
        break;
    case ConsentStatus.REQUIRED:
        // 展示consent表单,获取用户同意
        showConsentForm();
        break;
    case ConsentStatus.OBTAINED:
        if (consentInfo.getConsentDecisionStatus() == ConsentDecisionStatus.CONSENT_GIVEN) {
            boolean allowPersonalized = true;
            // 针对EEA/英国地区用户,检查个性化广告权限
            if (consentInfo.isRequestLocationInEeaOrUnknown()) {
                Map<String, Object> consentDetails = consentInfo.getConsentDetails();
                allowPersonalized = Boolean.TRUE.equals(consentDetails.get("ad_personalization"));
            }
            if (allowPersonalized) {
                loadPersonalizedAds();
            } else {
                loadNonPersonalizedAds();
            }
        } else {
            // 用户拒绝同意,加载非个性化广告
            loadNonPersonalizedAds();
        }
        break;
    case ConsentStatus.UNKNOWN:
        // 请求更新合规状态
        ConsentRequestParameters params = new ConsentRequestParameters.Builder().build();
        consentInfo.requestConsentInfoUpdate(
            context,
            params,
            new ConsentInfoUpdateListener() {
                @Override
                public void onConsentInfoUpdated(ConsentStatus consentStatus) {
                    // 状态更新后重新执行判断逻辑
                }

                @Override
                public void onFailedToUpdateConsentInfo(String errorDescription) {
                    // 处理更新失败逻辑,默认加载非个性化广告
                    loadNonPersonalizedAds();
                }
            }
        );
        break;
}

// 个性化广告加载逻辑
private void loadPersonalizedAds() {
    AdRequest adRequest = new AdRequest.Builder().build();
    // 加载广告...
}

// 非个性化广告加载逻辑
private void loadNonPersonalizedAds() {
    AdRequest adRequest = new AdRequest.Builder()
        .addNetworkExtrasBundle(AdMobAdapter.class, new Bundle())
        .build();
    // 加载广告...
}

关键说明

  • UMP SDK的合规判断会自动识别用户所在地区,无需手动判断;
  • 当用户开启"有限广告跟踪"(LAT)时,即使允许个性化,也应加载非个性化广告;
  • 若用户撤回同意,需重新触发consent流程,更新状态后再调整广告类型。

内容的提问来源于stack exchange,提问作者Cheok Yan Cheng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:17:45