Udostępnianie zgody na różnych urządzeniach
ConsentManager obsługuje udostępnianie zgody między urządzeniami. Aby udostępniać informacje o zgodzie na wiele urządzeń, witryna/aplikacja musi spełniać następujące wymagania:
- Witryna/aplikacja musi być w stanie identyfikować użytkownika na różnych urządzeniach. Zwykle odbywa się to poprzez zalogowanie się na stronie internetowej lub w aplikacji: Za każdym razem, gdy użytkownik loguje się na konto, (nowe) urządzenie może udostępniać te same informacje o zgodzie, co wszystkie inne urządzenia tego samego użytkownika.
- Twoja platforma (ta, która przechowuje login użytkownika) musi być w stanie przechowywać informacje o zgodzie użytkownika po stronie serwera. Informacja o zgodzie będzie ciągiem alfanumerycznym o rozmiarze do 8 kb
Konfiguracja ogólna
- Gdy użytkownik najpierw odwiedza witrynę internetową lub aplikację, nie ma informacji o zgodzie i użytkownik zostanie poproszony o zgodę.
- Gdy użytkownik wyrazi zgodę, CMP będzie przechowywać informacje o zgodzie na urządzeniu użytkownika i powiadomi witrynę internetową lub aplikację, że dostępne są nowe informacje o zgodzie.
- Witryna lub aplikacja pobierze/wyeksportuje informacje o zgodzie z CMP i zapisze je we własnej bazie danych wraz z profilem użytkownika.
- Następnym razem, gdy użytkownik odwiedzi witrynę lub aplikację, zaimportuje istniejące informacje o zgodzie do CMP.
Sieć
Aby wyeksportować informacje o zgodzie, polecenie __cmp('exportConsent')
może być zastosowane. Wygeneruje informacje o zgodzie jako zakodowany w base64 ciąg bezpieczny dla sieci.
Aby zaimportować istniejące informacje, polecenie __cmp('importConsent','....')
może być zastosowane. Ustawi wewnętrzne informacje o zgodzie i wyłączy ekran akceptacji.
Alternatywnie możesz również przekazać informacje o zgodzie za pośrednictwem adresu URL za pomocą parametru ?cmpimport=...
or #cmpimport=...
UWAGA: Aby uniknąć wyświetlenia ekranu zgody, polecenie importConsent powinno zostać wywołane bezpośrednio po kodzie CMP. CMP umieści polecenie w kolejce i automatycznie zaimportuje informacje o zgodzie jako pierwszy krok podczas ładowania CMP.
Oto prosty przykładowy kod, który wykona import, sprawdzi zmiany i wyeksportuje dane zgody, jeśli to konieczne:
<script>
window.cmp_waitfortimport = 1000; // tell the CMP to wait for max 1 second for incoming import calls
var userConsentInfo = '... insert consent data from users profile if present, otherwise empty ...';
function storeConsent(eventname, o)
{
var c = __cmp("exportConsent");
if(c !== userConsentInfo)
{
console.log('new consent data: ', c);
userConsentInfo = c;
//send new consent info to server in order to store it there
}
}
if(userConsentInfo != "")
{
__cmp('importConsent',userConsentInfo);
}
else
{
__cmp('cancelwait'); //tell the CMP to no longer wait for import calls
}
__cmp('addEventListener', ['consent', storeConsent, false], null);
</script>
Przykład udostępniania zgody między domenami po kliknięciu
Udostępnianie zgody między domenami staje się coraz bardziej skomplikowane ze względu na wycofywanie plików cookie stron trzecich. Rozwiązaniem tego problemu może być wysłanie danych dotyczących zgody za pośrednictwem adresu URL zamiast udostępniania pliku cookie. Aby zrobić to automatycznie, możesz użyć na swojej stronie następującego skryptu:
<script>
window.cmp_allowedDomains = [];
//window.cmp_allowedDomains.push('*'); // use this line to append consent data to all urls ...
window.cmp_allowedDomains.push('mywebsite.com'); // ... or add your domains here ...
window.cmp_allowedDomains.push('myotherwebsite.com');
window.cmp_allowedDomains.push('mythirdwebsite.com');
window.cmp_appendclick = function (evt)
{
try
{
evt = evt || window.event;
if (evt.target && evt.target.nodeName && evt.target.nodeName.toUpperCase() === 'A' && evt.target.hostname && evt.target.hostname != '' && evt.target.hostname != location.hostname)
{
var found = false;
var hn = evt.target.hostname.toLowerCase();
for (var i = 0; i < window.cmp_allowedDomains.length; i++)
{
var d = window.cmp_allowedDomains[i].toLowerCase();
var a = ('.' + hn).substr(hn.length - d.length, 9999);
if (window.cmp_allowedDomains[i] == '*' || a == '.' + d)
{
found = true;
break;
}
}
if (found)
{
if ('hash' in evt.target && evt.target.hash == '')
{
evt.target.hash = '#' + __cmp('exportConsent');
}
}
}
}
catch (e)
{}
};
window.addEventListener('mousedown', window.cmp_appendclick);
</script>
aplikacji
W przypadku aplikacji procedura jest taka sama jak w przypadku Internetu, różnią się tylko funkcje/nazwy.
Android
Aby wyeksportować informacje o zgodzie, użyj
String consentData = CMPConsentTool.exportCMPData(this);
Aby zaimportować informacje o zgodzie, użyj
CMPConsentTool.importCMPData(this, "...data...");
iOS
Aby zaimportować/eksportować informacje o zgodzie, użyj (https://help.consentmanager.net/books/cmp/page/consentmanager-sdk-for-ios#bkmrk-import%2Fexport-consen)
// Instanstiate CMPConsentTool()
cmpConsentTool = CMPConsentTool.init(...)
// Importing consent data if you like
cmpConsentTool.importCMPData("${your consentString}");
// ... Your code here ...
// Exporting Consent data
let consentString : String = CMPConsentTool.exportCMPData()