Skip to content

Commit 34505a1

Browse files
author
matin-zadeh-dolatabad
committed
feat(analytics, android): add consent mode v2
1 parent 886c39a commit 34505a1

File tree

5 files changed

+33
-0
lines changed

5 files changed

+33
-0
lines changed

packages/firebase_analytics/firebase_analytics/android/src/main/java/io/flutter/plugins/firebase/analytics/Constants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
public class Constants {
1010
public static final String AD_STORAGE_CONSENT_GRANTED = "adStorageConsentGranted";
1111
public static final String ANALYTICS_STORAGE_CONSENT_GRANTED = "analyticsStorageConsentGranted";
12+
public static final String AD_PERSONALIZATION_CONSENT_GRANTED = "adPersonalizationConsentGranted";
13+
public static final String AD_USER_DATA_CONSENT_GRANTED = "adUserDataConsentGranted";
1214
public static final String USER_ID = "userId";
1315
public static final String EVENT_NAME = "eventName";
1416
public static final String PARAMETERS = "parameters";

packages/firebase_analytics/firebase_analytics/android/src/main/java/io/flutter/plugins/firebase/analytics/FlutterFirebaseAnalyticsPlugin.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,10 @@ private Task<Void> setConsent(final Map<String, Object> arguments) {
291291
(Boolean) arguments.get(Constants.AD_STORAGE_CONSENT_GRANTED);
292292
final Boolean analyticsStorageGranted =
293293
(Boolean) arguments.get(Constants.ANALYTICS_STORAGE_CONSENT_GRANTED);
294+
final Boolean adPersonalizationGranted =
295+
(Boolean) arguments.get(Constants.AD_PERSONALIZATION_CONSENT_GRANTED);
296+
final Boolean adUserDataGranted =
297+
(Boolean) arguments.get(Constants.AD_USER_DATA_CONSENT_GRANTED);
294298
HashMap<FirebaseAnalytics.ConsentType, FirebaseAnalytics.ConsentStatus> parameters =
295299
new HashMap<>();
296300

@@ -310,6 +314,22 @@ private Task<Void> setConsent(final Map<String, Object> arguments) {
310314
: FirebaseAnalytics.ConsentStatus.DENIED);
311315
}
312316

317+
if (adPersonalizationGranted != null) {
318+
parameters.put(
319+
FirebaseAnalytics.ConsentType.AD_PERSONALIZATION,
320+
adPersonalizationGranted
321+
? FirebaseAnalytics.ConsentStatus.GRANTED
322+
: FirebaseAnalytics.ConsentStatus.DENIED);
323+
}
324+
325+
if (adUserDataGranted != null) {
326+
parameters.put(
327+
FirebaseAnalytics.ConsentType.AD_USER_DATA,
328+
adUserDataGranted
329+
? FirebaseAnalytics.ConsentStatus.GRANTED
330+
: FirebaseAnalytics.ConsentStatus.DENIED);
331+
}
332+
313333
analytics.setConsent(parameters);
314334
taskCompletionSource.setResult(null);
315335
} catch (Exception e) {

packages/firebase_analytics/firebase_analytics/lib/src/firebase_analytics.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,14 @@ class FirebaseAnalytics extends FirebasePluginPlatform {
129129
Future<void> setConsent({
130130
bool? adStorageConsentGranted,
131131
bool? analyticsStorageConsentGranted,
132+
bool? adPersonalizationGranted,
133+
bool? adUserDataGranted,
132134
}) async {
133135
await _delegate.setConsent(
134136
adStorageConsentGranted: adStorageConsentGranted,
135137
analyticsStorageConsentGranted: analyticsStorageConsentGranted,
138+
adPersonalizationGranted: adPersonalizationGranted,
139+
adUserDataGranted: adUserDataGranted,
136140
);
137141
}
138142

packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/method_channel/method_channel_firebase_analytics.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ class MethodChannelFirebaseAnalytics extends FirebaseAnalyticsPlatform {
7373
Future<void> setConsent({
7474
bool? adStorageConsentGranted,
7575
bool? analyticsStorageConsentGranted,
76+
bool? adPersonalizationGranted,
77+
bool? adUserDataGranted,
7678
}) async {
7779
try {
7880
return channel.invokeMethod<void>(
@@ -82,6 +84,9 @@ class MethodChannelFirebaseAnalytics extends FirebaseAnalyticsPlatform {
8284
'adStorageConsentGranted': adStorageConsentGranted,
8385
if (analyticsStorageConsentGranted != null)
8486
'analyticsStorageConsentGranted': analyticsStorageConsentGranted,
87+
if (adPersonalizationGranted != null)
88+
'adPersonalizationGranted': adPersonalizationGranted,
89+
if (adUserDataGranted != null) 'adUserDataGranted': adUserDataGranted,
8590
},
8691
);
8792
} catch (e, s) {

packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/platform_interface/platform_interface_firebase_analytics.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ abstract class FirebaseAnalyticsPlatform extends PlatformInterface {
170170
Future<void> setConsent({
171171
bool? adStorageConsentGranted,
172172
bool? analyticsStorageConsentGranted,
173+
bool? adPersonalizationGranted,
174+
bool? adUserDataGranted,
173175
}) {
174176
throw UnimplementedError('setConsent() is not implemented');
175177
}

0 commit comments

Comments
 (0)