Skip to content

Commit b136d04

Browse files
authored
Add new Analytics consent types (#1504)
* Add new Analytics consent types * Formatting * Fix typo
1 parent 46f1f0b commit b136d04

File tree

5 files changed

+53
-3
lines changed

5 files changed

+53
-3
lines changed

analytics/integration_test/src/integration_test.cc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,20 @@ TEST_F(FirebaseAnalyticsTest, TestSetConsent) {
162162
{firebase::analytics::kConsentTypeAnalyticsStorage,
163163
firebase::analytics::kConsentStatusGranted},
164164
{firebase::analytics::kConsentTypeAdStorage,
165+
firebase::analytics::kConsentStatusGranted},
166+
{firebase::analytics::kConsentTypeAdUserData,
167+
firebase::analytics::kConsentStatusGranted},
168+
{firebase::analytics::kConsentTypeAdPersonalization,
165169
firebase::analytics::kConsentStatusGranted}};
166170
std::map<firebase::analytics::ConsentType, firebase::analytics::ConsentStatus>
167171
consent_settings_deny = {
168172
{firebase::analytics::kConsentTypeAnalyticsStorage,
169173
firebase::analytics::kConsentStatusDenied},
170174
{firebase::analytics::kConsentTypeAdStorage,
175+
firebase::analytics::kConsentStatusDenied},
176+
{firebase::analytics::kConsentTypeAdUserData,
177+
firebase::analytics::kConsentStatusDenied},
178+
{firebase::analytics::kConsentTypeAdPersonalization,
171179
firebase::analytics::kConsentStatusDenied}};
172180
std::map<firebase::analytics::ConsentType, firebase::analytics::ConsentStatus>
173181
consent_settings_empty;

analytics/src/analytics_android.cc

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ static const ::firebase::App* g_app = nullptr;
6969
"Lcom/google/firebase/analytics/FirebaseAnalytics$ConsentType;", \
7070
util::kFieldTypeStatic), \
7171
X(AdStorage, "AD_STORAGE", \
72+
"Lcom/google/firebase/analytics/FirebaseAnalytics$ConsentType;", \
73+
util::kFieldTypeStatic), \
74+
X(AdUserData, "AD_USER_DATA", \
75+
"Lcom/google/firebase/analytics/FirebaseAnalytics$ConsentType;", \
76+
util::kFieldTypeStatic), \
77+
X(AdPersonalization, "AD_PERSONALIZATION", \
7278
"Lcom/google/firebase/analytics/FirebaseAnalytics$ConsentType;", \
7379
util::kFieldTypeStatic)
7480

@@ -223,6 +229,30 @@ void SetConsent(const std::map<ConsentType, ConsentStatus>& consent_settings) {
223229
return;
224230
}
225231
break;
232+
case kConsentTypeAdUserData:
233+
consent_type =
234+
env->GetStaticObjectField(analytics_consent_type::GetClass(),
235+
analytics_consent_type::GetFieldId(
236+
analytics_consent_type::kAdUserData));
237+
238+
if (util::LogException(env, kLogLevelError,
239+
"Failed to get ConsentTypeAdUserData")) {
240+
env->DeleteLocalRef(consent_map);
241+
return;
242+
}
243+
break;
244+
case kConsentTypeAdPersonalization:
245+
consent_type = env->GetStaticObjectField(
246+
analytics_consent_type::GetClass(),
247+
analytics_consent_type::GetFieldId(
248+
analytics_consent_type::kAdPersonalization));
249+
250+
if (util::LogException(env, kLogLevelError,
251+
"Failed to get ConsentTypeAdPersonalization")) {
252+
env->DeleteLocalRef(consent_map);
253+
return;
254+
}
255+
break;
226256
default:
227257
LogError("Unknown ConsentType value: %d", it->first);
228258
env->DeleteLocalRef(consent_map);

analytics/src/analytics_ios.mm

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,12 @@ void SetConsent(const std::map<ConsentType, ConsentStatus>& consent_settings) {
164164
case kConsentTypeAnalyticsStorage:
165165
consent_type = FIRConsentTypeAnalyticsStorage;
166166
break;
167+
case kConsentTypeAdUserData:
168+
consent_type = FIRConsentTypeAdUserData;
169+
break;
170+
case kConsentTypeAdPersonalization:
171+
consent_type = FIRConsentTypeAdPersonalization;
172+
break;
167173
default:
168174
LogError("Unknown ConsentType value: %d", it->first);
169175
return;

analytics/src/include/firebase/analytics.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -273,9 +273,14 @@ void SetAnalyticsCollectionEnabled(bool enabled);
273273

274274
/// @brief The type of consent to set.
275275
///
276-
/// Supported consent types are kConsentTypeAdStorage and
277-
/// kConsentTypeAnalyticsStorage. Omitting a type retains its previous status.
278-
enum ConsentType { kConsentTypeAdStorage = 0, kConsentTypeAnalyticsStorage };
276+
/// Supported consent types are mapped to coresponding constants in the Android
277+
/// and iOS SDKs. Omitting a type retains its previous status.
278+
enum ConsentType {
279+
kConsentTypeAdStorage = 0,
280+
kConsentTypeAnalyticsStorage,
281+
kConsentTypeAdUserData,
282+
kConsentTypeAdPersonalization
283+
};
279284

280285
/// @brief The status value of the consent type.
281286
///

release_build_files/readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,7 @@ code.
637637
level 33 and Gradle 6.7.1.
638638
- General (Android): Update to Firebase Android BoM version 32.3.1.
639639
- General (iOS): Update to Firebase Cocoapods version 10.17.0.
640+
- Analytics: Updated the consent management API to include new consent signals.
640641
- GMA (Android) Updated dependency to play-services-ads version 22.4.0.
641642

642643
### 11.6.0

0 commit comments

Comments
 (0)