Hello,
We're currently using the UMP (User Messaging Platform) SDK for both Android and iOS to collect user consent data in compliance with US privacy regulations. We rely on the IABGPP_HDR_GppString to determine whether the user has given consent or not.
🧩 Previous Behavior (Before August 2025)When initializing the SDK (i.e. clean install, no prior consent set), the returned value for US region was:
This string was identical to the value we observed when explicit consent was granted, which made it difficult to distinguish between "no consent given yet" and "consent given."
We assumed this behavior as the default initialization value.
We have now observed that the default GPP string returned upon initialization (with no consent set) has changed to:
This value seems to represent a "blank" or "unset" consent state, which would more accurately reflect the user's status before any interaction with the consent dialog.
Was this change intentional?
Has Google officially changed the default GppString value when no consent has been set (from BVQqAAAAAg to BAAAAAAAAg)?
What was the reason for this change?
Is this to better align with IAB GPP standards by clearly distinguishing "no consent set" from "consent given"?
Does this apply to both Android and iOS platforms?
We need to verify if the change is consistent across all UMP SDK platforms (iOS and Android).
Is there an official changelog or release note that documents this change?
Any confirmation or clarification from the UMP SDK team would be greatly appreciated. We want to make sure our consent handling and interpretation logic is correct and up-to-date with this new behavior.
Thank you!
Hi,
Thank you for contacting the Mobile Ads SDK Support team.
Based on my investigation, I can see the difference in IABGPP_HDR_GppString when Fresh Launch, Sell Data interaction under Privacy Option and Do not Sell Data interaction both in Android and iOS. For this I will check with the wider team the expected behavior. Additionally could you tell me you business logic behind reading consent values?
![]() |
Mobile Ads SDK Team |
[2025-08-05 11:47:10Z GMT] This message is in relation to case "ref:!00D1U01174p.!500Ht01sy5sd:ref" (ADR-00328571)
Hello,
After calling consentInformation.requestConsentInfoUpdate(), we noticed that the ccpa_HDRGPPString has changed from:
Previous: "DBABL~BVQqAAAAAg" (which we interpreted as Opt-in)
Current: "DBABL~BAAAAAAAAg" (which appears to be a neutral or undefined state)
Previously, since the value clearly indicated Opt-in, we did not prompt users for explicit consent.
However, with the new value, we can no longer determine consent status, and now must explicitly ask users to Opt-in.
Why has the GPP string changed recently?
Was there a change in Google SDK behavior or Consent Mode policy?
It would be much more efficient if the SDK provided a simple Boolean API to determine consent status,
instead of requiring developers to manually parse GPP strings.
For example: isUserOptedIn() returning true / false.
Thank you!
public void InitGoogleUMP() {
LGLog.d("", "lss =================== InitGoogleUMP 1 ================== ");
DeubugPrintUMPInfo();
ConsentDebugSettings debugSettings = new ConsentDebugSettings.Builder(mMainActivity)
.addTestDeviceHashedId("483CFB232949843918EA1F54E29E4AB6") // 로그에서 확인 가능
.setDebugGeography(ConsentDebugSettings.DebugGeography.DEBUG_GEOGRAPHY_REGULATED_US_STATE)
.build();
umpParams =
new ConsentRequestParameters.Builder()
//.setTagForUnderAgeOfConsent(true) // EU만사용, true: 16세미만, false : 성인 //US 일때 미성년자일때만 true사용가능
.setConsentDebugSettings(debugSettings)
.build();
ConsentInformation consentInformation = UserMessagingPlatform.getConsentInformation(mMainActivity);
int consentStatus = consentInformation.getConsentStatus();
LGLog.d("", "lss =================== InitGoogleUMP 2 ================== ");
DeubugPrintUMPInfo();
consentInformation.requestConsentInfoUpdate(
mMainActivity,
umpParams,
() -> {
LGLog.d("", "lss =================== InitGoogleUMP 3 ================== ");
DeubugPrintUMPInfo();
if (consentInformation.isConsentFormAvailable()) {
UserMessagingPlatform.loadConsentForm(
mMainActivity,
consentForm -> {
consentForm.show(mMainActivity, formError -> {
// 동의 창 닫힘 이후 처리
LGLog.d("", "lss =================== Close UMP ConsentForm ==================");
LGLog.d("", "lss =================== InitGoogleUMP 4 ================== ");
DeubugPrintUMPInfo();
Map<String, ?> allPrefs = PreferenceManager.getDefaultSharedPreferences(mMainActivity).getAll();
for (Map.Entry<String, ?> entry : allPrefs.entrySet()) {
LGLog.d("UMP_PREFS", entry.getKey() + " = " + entry.getValue());
}
});
},
formError -> {
// 양식 로드 실패
LGLog.d("", "lss =================== consentForm Load fail ==================" + formError.toString());
});
}
else {
LGLog.d("", "lss =================== consentInformation.isConsentFormAvailable() fail ==================" );
}
},
formError -> {
// 정보 업데이트 실패
LGLog.d("", "lss =================== update fail ==================");
});
}
private void DeubugPrintUMPInfo(){
SharedPreferences sharedPref_pre = PreferenceManager.getDefaultSharedPreferences(mMainActivity);
String purposeConsents = sharedPref_pre.getString("IABTCF_PurposeConsents", "");
String ccpa_GPPSID = sharedPref_pre.getString("IABGPP_GppSID", "");
String ccpa_HDRGPPString = sharedPref_pre.getString("IABGPP_HDR_GppString", "");
String ccpa_IABUSPrivacy_String = sharedPref_pre.getString("IABUSPrivacy_String", "");
LGLog.d("", "lss ccpa_GPPSID = " + ccpa_GPPSID);
LGLog.d("", "lss ccpa_HDRGPPString = " + ccpa_HDRGPPString);
LGLog.d("", "lss ccpa_IABUSPrivacy_String = " + ccpa_IABUSPrivacy_String);
LGLog.d("", "lss IABTCF_PurposeConsents = " + purposeConsents);
}