Delega della Persistenza del Consenso
Questa funzionalità permette all'editore di prendere in carico la gestione della persistenza delle stringhe di consenso. Quando delegateConsentPersist è abilitato (configurazione presente nel configuratore), la CMP non salverà direttamente i cookie o i dati nel localStorage, ma fornirà all'editore tutte le informazioni necessarie per farlo.
Come Abilitare la Funzionalità
È possibile abilitare questa opzione tramite il configuratore della CMP oppure sovrascrivendo la configurazione a livello di pagina.
Per abilitarla solo per una pagina specifica, è sufficiente inserire il seguente codice nell'elemento <head> della pagina, prima di qualsiasi altro script:
<script>
window.__pub_tech_override_cmp_config = {
delegateConsentPersist: true
};
</script>Come Salvare le Stringhe di Consenso
Una volta abilitata la funzionalità, è necessario "ascoltare" l'evento di consenso per ricevere le stringhe da persistere. Questo può essere fatto utilizzando la coda di eventi __pubtech_queue_on_consent.
Ecco un esempio di come implementare la logica di salvataggio:
window.__pubtech_queue_on_consent = window.__pubtech_queue_on_consent || [];
function executeOnConsent(cmpType, { consentBundle, consentBaseApi, integrations }) {
// L'oggetto 'integrations' contiene i metadati necessari.
console.log("L'oggetto da usare è ", integrations);
// 'integrations.metadata.consentStrings' contiene l'elenco dei consensi
// che la CMP si aspetta di trovare al ricaricamento della pagina.
if (integrations.metadata.consentStrings) {
console.log("Stringhe di consenso da persistere:", integrations.metadata.consentStrings);
integrations.metadata.consentStrings.forEach(consentString => {
if (consentString.type === 'cookie') {
// Esempio di come salvare un cookie
// NOTA: È consigliabile usare una funzione robusta per la gestione dei cookie,
// che gestisca correttamente attributi come 'expires', 'path', 'domain'.
document.cookie = `${consentString.key}=${consentString.value}; max-age=31536000; path=/`;
console.log(`Cookie "${consentString.key}" salvato.`);
} else if (consentString.type === 'localStorage') {
localStorage.setItem(consentString.key, consentString.value);
console.log(`Valore "${consentString.key}" salvato in localStorage.`);
}
});
}
// Questo flag indica se il consenso è stato generato da un'interazione diretta dell'utente (es. click).
console.log("Il consenso è stato generato da un click dell'utente? ", integrations.metadata.consentUpdate ? "Sì" : "No");
}
__pubtech_queue_on_consent.push(executeOnConsent);Dettagli delle Stringhe di Consenso
L'array integrations.metadata.consentStrings conterrà oggetti con la seguente struttura:
- key: Il nome della chiave da utilizzare per la persistenza (es. il nome del cookie).
- type: Il tipo di storage da utilizzare (cookie o localStorage).
- value: La stringa di consenso da salvare.
È fondamentale che l'editore garantisca la corretta persistenza di queste stringhe affinché la CMP possa funzionare correttamente nelle visite successive dell'utente.