1111import android .os .Bundle ;
1212
1313import com .google .firebase .analytics .FirebaseAnalytics ;
14+ import com .google .firebase .analytics .FirebaseAnalytics .ConsentStatus ;
15+ import com .google .firebase .analytics .FirebaseAnalytics .ConsentType ;
1416import com .google .firebase .installations .FirebaseInstallations ;
1517
1618import java .io .IOException ;
19+ import java .util .EnumMap ;
1720import java .util .Map ;
1821import org .appcelerator .kroll .KrollDict ;
1922import org .appcelerator .kroll .KrollFunction ;
@@ -61,6 +64,26 @@ public void setEnabled(Boolean enabled)
6164 this .analyticsInstance ().setAnalyticsCollectionEnabled (enabled );
6265 }
6366
67+ private ConsentStatus toConsentStatus (boolean granted ) {
68+ return granted ? ConsentStatus .GRANTED : ConsentStatus .DENIED ;
69+ }
70+
71+ @ Kroll .method
72+ public void setConsent (KrollDict opts ) {
73+ boolean analyticsStorage = TiConvert .toBoolean (opts , "analyticsStorage" , false );
74+ boolean adStorage = TiConvert .toBoolean (opts , "adStorage" , false );
75+ boolean adUserData = TiConvert .toBoolean (opts , "adUserData" , false );
76+ boolean adPersonalization = TiConvert .toBoolean (opts , "adPersonalization" , false );
77+
78+ Map <ConsentType , ConsentStatus > consentMap = new EnumMap <>(ConsentType .class );
79+ consentMap .put (ConsentType .ANALYTICS_STORAGE , toConsentStatus (analyticsStorage ));
80+ consentMap .put (ConsentType .AD_STORAGE , toConsentStatus (adStorage ));
81+ consentMap .put (ConsentType .AD_USER_DATA , toConsentStatus (adUserData ));
82+ consentMap .put (ConsentType .AD_PERSONALIZATION , toConsentStatus (adPersonalization ));
83+
84+ this .analyticsInstance ().setConsent (consentMap );
85+ }
86+
6487 @ Kroll .method
6588 @ Kroll .setProperty
6689 public void setUserPropertyString (KrollDict parameters )
@@ -171,4 +194,4 @@ private Bundle mapToBundle(Map<String, Object> map)
171194
172195 return bundle ;
173196 }
174- }
197+ }
0 commit comments