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 on
Ready:
<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
true
oufalse
– Refere-se ao consentimento geral - ccpa – necessário se a CCPA estiver activada – aceita
true
oufalse
– 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
true
oufalse
– esta opção define o mesmo valor para todos os efeitos
- all – aceita
uspr: { all: true // or false }
- [purposeId] – aceita
true
oufalse
– 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
perPurposeConsent
estiver ativado – aceita um objeto com as seguintes opções – refere-se ao consentimento para fins e só será aplicado seperPurposeConsent
estiver ativado na Solução de Cookies- all – aceita
true
oufalse
– esta opção define o mesmo valor para todos os efeitos
- all – aceita
purposes: { all: true // or false }
- [purposeId] – aceita
true
oufalse
– 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
true
oufalse
– 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
true
oufalse
– 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