Google Analytics for Firebase offre una modalità di consenso che permette di adattare il comportamento dell’SDK a seconda della scelta degli utenti. Questa guida ti illustrerà passo passo come integrare Google Consent Mode v2 per Firebase Analytics utilizzando l’SDK di iubenda.
Prima di iniziare, assicurati che l’SDK di Firebase sia integrato correttamente nella tua app. Trovi maggiori informazioni qui per Android e qui per iOS. Invece, per integrare l’SDK di iubenda nella tua app, segui questa guida.
Per configurare Consent Mode v2 nella tua app, devi:
I tipi di consenso indicano come vengono archiviati i dati. Nella tabelle seguente sono elencati e descritti quelli principali:
Tipo di consenso | Descrizione |
---|---|
ad_storage | Permette di conservare i dati, come cookie (siti web) o identificatori del dispositivo (app), a fini pubblicitari. |
ad_user_data | Imposta il consenso per l’invio dei dati dell’utente a Google per scopi pubblicitari online. |
ad_personalization | Imposta il consenso per la pubblicità personalizzata. |
analytics_storage | Permette di conservare i dati, come cookie (siti web) o identificatori del dispositivo (app), a fini statistici, ad esempio per valutare la durata della visita. |
functionality_storage | Permette di conservare i dati che contribuiscono al funzionamento del sito web o dell’app, come le impostazioni della lingua. |
personalization_storage | Permette di conservare i dati legati alla personalizzazione, come i video consigliati. |
security_storage | Permette di conservare i dati legati ad attività di sicurezza, quali l’autenticazione, la prevenzione delle frodi e altri meccanismi di protezione utente. |
La documentazione ufficiale per utilizzare Consent Mode con l’SDK di Firebase è disponibile qui.
Vediamo la procedura più da vicino: ⬇️
Per prima cosa, devi impostare lo stato di consenso predefinito per la tua app perché di default non sono impostati valori.
Per farlo, apri il file manifest (AndroidManifest.xml) e aggiungi le coppie di chiave-valore della modalità di consenso.
Le chiavi fornite sono:
Le chiavi sono impostate con un valore che indica lo stato di consenso:
– true
significa che il consenso è stato concesso;
– false
significa che il consenso è stato negato.
Nell’esempio seguente, abbiamo aggiunto tutti i valori predefiniti impostati su false
:
<meta-data android:name="google_analytics_default_allow_analytics_storage" android:value="false" />
<meta-data android:name="google_analytics_default_allow_ad_storage" android:value="false" />
<meta-data android:name="google_analytics_default_allow_ad_user_data" android:value="false" />
<meta-data android:name="google_analytics_default_allow_ad_personalization_signals" android:value="false" />
Poi, devi implementare il metodo di aggiornamento dei valori del consenso.
IubendaCMPChangeListener
” con questo codice:public class MainActivity extends AppCompatActivity implements IubendaCMPChangeListener
onConsentChanged()
” per vedere come cambia il consenso:@Override
public void onConsentChanged() {
}
In questo modo, l’SDK di iubenda attiverà onConsentChanged()
ogni volta che un utente imposta le preferenze di consenso (ad esempio con il metodo IubendaCMP.askConsent()
).
Dopo aver acquisito le impostazioni del consenso, devi inviarle all’SDK di Firebase Analytics.
Per aggiornare i valori del consenso dopo che l’utente ha espresso le sue preferenze, chiama il metodo setConsent
.
Usa questo codice per aggiornare i diversi valori di consenso su granted
:
@Override
public void onConsentChanged() {
Map<FirebaseAnalytics.ConsentType, FirebaseAnalytics.ConsentStatus> consentMap = new EnumMap<>(FirebaseAnalytics.ConsentType.class);
if(IubendaCMP.isPurposeEnabled(4)){
consentMap.put(FirebaseAnalytics.ConsentType.ANALYTICS_STORAGE, FirebaseAnalytics.ConsentStatus.GRANTED);
}
if(IubendaCMP.isPurposeEnabled(5)){
consentMap.put(FirebaseAnalytics.ConsentType.AD_STORAGE, FirebaseAnalytics.ConsentStatus.GRANTED);
consentMap.put(FirebaseAnalytics.ConsentType.AD_USER_DATA, FirebaseAnalytics.ConsentStatus.GRANTED);
consentMap.put(FirebaseAnalytics.ConsentType.AD_PERSONALIZATION, FirebaseAnalytics.ConsentStatus.GRANTED);
}
mFirebaseAnalytics.setConsent(consentMap);
}
Come puoi vedere, il tipo di consenso ANALYTICS_STORAGE è associato allo scopo 4 di Privacy Controls and Cookie Solution (Misurazione), mentre gli altri (AD_STORAGE, AD_USER_DATA e AD_PERSONALIZATION) sono associati allo scopo 5 (Marketing).
Per verificare che le impostazioni del consenso funzionino come previsto, attiva il logging dettagliato sul tuo dispositivo e con il comando logcat di Android Studio trova il messaggio di registro che inizia con Setting consent
.
Per prima cosa, devi impostare lo stato di consenso predefinito per la tua app perché di default non sono impostati valori.
Per farlo, apri il file Info.plist e aggiungi le coppie di chiave-valore della modalità di consenso.
Le chiavi fornite sono:
Le chiavi sono impostate con un valore che indica lo stato di consenso:
– true
significa che il consenso è stato concesso;
– false
significa che il consenso è stato negato.
Nell’esempio seguente, abbiamo aggiunto tutti i valori predefiniti impostati su false
:
<key>GOOGLE_ANALYTICS_DEFAULT_ALLOW_ANALYTICS_STORAGE</key> <false/>
<key>GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_STORAGE</key> <false/>
<key>GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_USER_DATA</key> <false/>
<key>GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS</key> <false/>
Poi, devi implementare il metodo di aggiornamento dei valori del consenso.
NSNotification.Name.ConsentChanged
” con questo codice:NotificationCenter.default.addObserver(self, selector: #selector(consentDidChange), name: NSNotification.Name.ConsentChanged, object: nil)
consentDidChange()
” per vedere come cambia il consenso:@objcfunc consentDidChange() {
}
In questo modo, l’SDK di iubenda attiverà consentDidChange()
ogni volta che un utente imposta le preferenze di consenso (ad esempio con il metodo IubendaCMP.askConsent(from: self)
).
Dopo aver acquisito le impostazioni del consenso, devi inviarle all’SDK di Firebase Analytics.
Per aggiornare i valori del consenso dopo che l’utente ha espresso le sue preferenze, chiama il metodo setConsent
.
Usa questo codice per aggiornare i diversi valori di consenso su granted
:
@objc func consentDidChange() {
var analyticsStorageGranted = false
var adStorageGranted = false
var adUserDataGranted = false
var adPersonalizationGranted = false
if(IubendaCMP.isPurposeEnabled(id: 4)){
analyticsStorageGranted = true
}else{
analyticsStorageGranted = false
}
if(IubendaCMP.isPurposeEnabled(id: 5)){
adStorageGranted = true
adUserDataGranted = true
adPersonalizationGranted = true
}else{
adStorageGranted = false
adUserDataGranted = false
adPersonalizationGranted = false
}
Analytics.setConsent([
.analyticsStorage: analyticsStorageGranted ? .granted : .denied,
.adStorage: adStorageGranted ? .granted : .denied,
.adUserData: adUserDataGranted ? .granted : .denied,
.adPersonalization: adPersonalizationGranted ? .granted : .denied,
])
}
Come puoi vedere, il tipo di consenso analyticsStorage
è associato allo scopo 4 di Privacy Controls and Cookie Solution (Misurazione), mentre gli altri (adStorage
, adUserData
e adPersonalization
) sono associati allo scopo 5 (Marketing).
Per verificare che le impostazioni del consenso funzionino come previsto, attiva il logging dettagliato sul tuo dispositivo e con il comando Xcode trova il messaggio di registro correlato ai parametri. Ad esempio:
ad_storage is granted.
analytics_storage is granted.
ad_user_data is granted.
ad_personalization is granted.
Queste impostazioni sono utili per personalizzare la funzionalità della tua app rispettando le preferenze utente e i requisiti di legge. Per i passaggi dettagliati e i frammenti di codice, fai riferimento alla documentazione ufficiale e verifica che la tua app sia configurata correttamente.