Skip to content

Commit

Permalink
feat(android): consent mode
Browse files Browse the repository at this point in the history
  • Loading branch information
m1ga committed Apr 4, 2024
1 parent e48f608 commit 665d1e7
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 2 deletions.
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ repositories {
}

dependencies {
implementation 'com.google.firebase:firebase-analytics:21.0.0'
implementation 'com.google.firebase:firebase-analytics:21.5.1'
implementation 'com.google.firebase:firebase-installations:17.0.1'
}
2 changes: 1 addition & 1 deletion android/manifest
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# this is your module manifest and used by Titanium
# during compilation, packaging, distribution, etc.
#
version: 5.2.0
version: 5.3.0
apiversion: 4
architectures: arm64-v8a armeabi-v7a x86 x86_64
description: titanium-firebase-analytics
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,12 @@
import android.os.Bundle;

import com.google.firebase.analytics.FirebaseAnalytics;
import com.google.firebase.analytics.FirebaseAnalytics.ConsentStatus;
import com.google.firebase.analytics.FirebaseAnalytics.ConsentType;
import com.google.firebase.installations.FirebaseInstallations;

import java.io.IOException;
import java.util.EnumMap;
import java.util.Map;
import org.appcelerator.kroll.KrollDict;
import org.appcelerator.kroll.KrollFunction;
Expand All @@ -32,6 +35,9 @@ public class TitaniumFirebaseAnalyticsModule extends KrollModule
private static final boolean DBG = TiConfig.LOGD;
private static FirebaseAnalytics mFirebaseAnalytics;

public static final int GRANTED = 0;
public static final int DENIED = 1;

@SuppressLint("MissingPermission") // Android Studio only doesn't know it's included via tiapp.xml, so all good here!
private FirebaseAnalytics analyticsInstance()
{
Expand All @@ -53,6 +59,41 @@ public void resetAnalyticsData()
{
this.analyticsInstance().resetAnalyticsData();
}
@Kroll.method
public void setConsent(KrollDict opts)
{
int analyticsStorage = TiConvert.toInt(opts.get("analyticsStorage"), -1);
int adStorage = TiConvert.toInt(opts.get("adStorage"), -1);
int adUserData = TiConvert.toInt(opts.get("adUserData"), -1);
int adPerson = TiConvert.toInt(opts.get("adPersonalization"), -1);

Map<ConsentType, ConsentStatus> consentMap = new EnumMap<>(ConsentType.class);
if (analyticsStorage == GRANTED) {
consentMap.put(ConsentType.ANALYTICS_STORAGE, ConsentStatus.GRANTED);
} else if (analyticsStorage == DENIED) {
consentMap.put(ConsentType.ANALYTICS_STORAGE, ConsentStatus.DENIED);
}
if (adStorage == GRANTED) {
consentMap.put(ConsentType.AD_STORAGE, ConsentStatus.GRANTED);
} else if (adStorage == DENIED) {
consentMap.put(ConsentType.AD_STORAGE, ConsentStatus.DENIED);
}
if (adUserData == GRANTED) {
consentMap.put(ConsentType.AD_USER_DATA, ConsentStatus.GRANTED);
} else if (adUserData == DENIED) {
consentMap.put(ConsentType.AD_USER_DATA, ConsentStatus.DENIED);
}
if (adPerson == GRANTED) {
consentMap.put(ConsentType.AD_PERSONALIZATION, ConsentStatus.GRANTED);
} else if (adPerson == DENIED) {
consentMap.put(ConsentType.AD_PERSONALIZATION, ConsentStatus.DENIED);
}

if (mFirebaseAnalytics != null) {
mFirebaseAnalytics.setConsent(consentMap);
}

}

@Kroll.method
@Kroll.setProperty
Expand Down

0 comments on commit 665d1e7

Please sign in to comment.