Se estiver a mudar de outra solução de gestão de cookies para a nossa, poderá querer migrar os consentimentos que já recolheu. Isto é útil para garantir que os utilizadores que já deram o seu consentimento ao abrigo da solução anterior não sejam apresentados novamente com o banner de cookies e o respetivo pedido de consentimento.
Existem duas formas de o fazer, consoante a plataforma “antiga” forneça um cookie(método síncrono) ou exija uma chamada à sua API(método assíncrono).
Método síncrono
Antes de incorporar o Privacy Controls and Cookie Solution, terá de definir uma função síncrona (por exemplo, isConsentGivenByOtherPlatform) para obter o consentimento da outra plataforma:
<script type="text/javascript">
function readLocalCookie(cookieName) {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var e=cookies[i].split('=');
if (e[0] === cookieName) {
return e[1];
}
}
return null;
}
function isConsentGivenByOtherPlatform() {
var otherPlatformCookieName = 'cookie_from_other_platform'; // use the actual cookie name saved by the other platform
var prevConsent = readLocalCookie(otherPlatformCookieName);
if (prevConsent) {
return true;
} else {
return false;
}
}
</script>
Importante
Não copie e cole o código mostrado acima – é apenas um exemplo de código que fornecemos para o ajudar a compreender a abordagem.
Em seguida, adicione o snippet Privacy Controls and Cookie Solution, invocando a chamada de retorno onReady:
<script type="text/javascript">
var _iub = _iub || [];
_iub.csConfiguration = {
"lang": "en",
"siteId": XXXXXX, // use your siteId
"cookiePolicyId": YYYYYY, // use your cookiePolicyId
"banner": {
"acceptButtonDisplay": true,
"customizeButtonDisplay": true,
"position": "float-top-center"
},
"callback": {
"onReady": function() {
if (typeof window.isConsentGivenByOtherPlatform === 'function' && isConsentGivenByOtherPlatform()) {
_iub.cs.api.setPreferences({
consent: true,
ccpa: true,
uspr: {
'all': true,
'sd8': true,
'sd9': true,
},
purposes: {
'1': true,
'2': true,
'3': true,
'4': true,
'5': true,
},
tcfv2: {
'all': true,
},
gac: {
'all': true,
},
}, true);
}
}
}
};
</script>
<script type="text/javascript" src="//cdn.iubenda.com/cs/iubenda_cs.js" charset="UTF-8" async></script>
A chamada de retorno onReady verifica se o consentimento já foi dado noutra plataforma e, em caso afirmativo, armazena-o chamando o método _iub.cs.api.setPreferences().
Consentimento por categoria
_iub.cs.api.storeConsent() permite personalizar os objectivos também no argumento que pode ser {consent: true}, {consent: false} ou {purposes: {1: true, 2: false, …}}.
Método assíncrono
Antes de incorporar o código do Privacy Controls and Cookie Solution, terá de definir uma função que:
- aceita uma chamada de retorno;
- detecta o consentimento;
- guarda o consentimento numa variável global; e
- invoca a chamada de retorno posteriormente.
Aqui tem um exemplo:
<script type="text/javascript">
// fetch consent asynchronously from 3rd party
function getConsentByOtherPlatform(cb) {
$.getJSON('http://otherplatform.com/api/get-consent', function(result) {
if (result.given) {
window.consentByOtherPlatform = true;
} else {
window.consentByOtherPlatform = false;
}
cb();
});
}
function isConsentGivenByOtherPlatform() {
return !!window.consentByOtherPlatform;
}
</script>
Importante
Não copie e cole o código mostrado acima – é apenas um exemplo de código que fornecemos para o ajudar a compreender a abordagem.
Em seguida, adicione o snippet Privacy Controls and Cookie Solution, invocando a chamada de retorno onReady:
<script type="text/javascript">
var _iub = _iub || [];
_iub.csConfiguration = {
"lang": "en",
"siteId": XXXXXX, // use your siteId
"cookiePolicyId": YYYYYY, // use your cookiePolicyId
"banner": {
"acceptButtonDisplay": true,
"customizeButtonDisplay": true,
"position": "float-top-center"
},
"callback": {
"onReady": function() {
if (typeof window.isConsentGivenByOtherPlatform === 'function' && isConsentGivenByOtherPlatform()) {
_iub.cs.api.setPreferences({
consent: true,
ccpa: true,
uspr: {
'all': true,
'sd8': true,
'sd9': true,
},
purposes: {
'1': true,
'2': true,
'3': true,
'4': true,
'5': true,
},
tcfv2: {
'all': true,
},
gac: {
'all': true,
},
}, true);
}
}
}
}
};
</script>
<script type="text/javascript">
// ask for 3rd party consent before including the CS
getConsentByOtherPlatform(function() {
var s = document.createElement('script');
s.src = '//cdn.iubenda.com/cs/iubenda_cs.js';
document.head.appendChild(s);
});
</script>
A chamada de retorno onReady verifica se o consentimento já foi dado noutra plataforma e, em caso afirmativo, armazena-o chamando o método _iub.cs.api.setPreferences().
Consentimento por categoria
_iub.cs.api.storeConsent() permite personalizar os objectivos também no argumento que pode ser {consent: true}, {consent: false} ou {purposes: {1: true, 2: false, …}}.
_iub.cs.api.setPreferences(consentObj, hideBanner)
O método _iub.cs.api.setPreferences, que espera dois argumentos: consentObj (obrigatório) e hideBanner (opcional)
consentObj
Trata-se de um objeto com itens de preferências a seguir:
- consentimento – necessário – aceita
trueoufalse– Refere-se ao consentimento geral - ccpa – necessário se a CCPA estiver activada – aceita
trueoufalse– refere-se à privacidade dos EUA e só será aplicada se a CCPA estiver activada na Solução de Cookies - uspr – obrigatório se a USPR estiver activada – aceita um objeto com as seguintes opções – refere-se ao consentimento da USPR e só será aplicado se a USPR estiver activada na Solução de Cookies
- all – aceita
trueoufalse– esta opção define o mesmo valor para todos os efeitos
- all – aceita
uspr: {
all: true // or false
}
- [purposeId] – aceita
trueoufalse– esta opção define o valor para fins de ID específicos
uspr: {
's': true, // or false
'sh': false, // or true
'adv': false // or true
}
- purposes – obrigatório se
perPurposeConsentestiver ativado – aceita um objeto com as seguintes opções – refere-se ao consentimento para fins e só será aplicado seperPurposeConsentestiver ativado na Solução de Cookies- all – aceita
trueoufalse– esta opção define o mesmo valor para todos os efeitos
- all – aceita
purposes: {
all: true // or false
}
- [purposeId] – aceita
trueoufalse– esta opção define o valor para fins de ID específicos
purposes: {
'1': true, // or false
'2': false, // or true
'4': false // or true
}
- tcfv2 – obrigatório se o TCF estiver ativado – aceita um objeto com as seguintes opções – refere-se ao consentimento do TCF e só será aplicado se o TCF estiver ativado na Solução de Cookies
- todos – aceita
trueoufalse– esta opção define o mesmo valor para todos os efeitos do TCF
- todos – aceita
tcfv2: {
all: true // or false
}
- [string] – aceita uma cadeia TCF
tcfv2: 'CP9rVEAP9rVEAB7FGCENAyEgAAAAAAAAAAAAAAAUHgJAA4AM-AjwBKoDfAHbAO5AgoBIgCSgEowJaATHAmSBNICfYFBAKDgAAAAA'
- gac – obrigatório se o Consentimento Adicional do Google estiver ativado – aceita um objeto com as seguintes opções – refere-se ao consentimento do GAC e só será aplicado se o GAC estiver ativado na Solução de Cookies
- all – aceita
trueoufalse– esta opção define o mesmo valor para todos os fornecedores de GAC
- all – aceita
gac: {
all: true // or false
}
- [string] – aceita uma string GAC
gac: '1~1584.2292.2392'
hideBanner
É um booleano para ocultar ou não ocultar o banner após o armazenamento de preferências, neste caso, deve ser sempre true
_iub.cs.api.setPreferences({ ... }, true); // hide the banner after the preference storage
_iub.cs.api.setPreferences({ ... }, false); // keep the banner after the preference storage