Se il codice di integrazione di Privacy Controls and Cookie Solution è incluso in un iframe, i metodi di _iub.cs.api
possono essere chiamati tramite postMessage
. Vediamo come farlo con alcuni esempi.
Le API devono ricevere una chiamata postMessage
in formato JSON:
{
__iubCsCall: {
command: <api-function-name>,
parameters: [...],
callId: <a-string-or-integer>
}
}
Dove:
command
(string) è il nome della funzione che si desidera chiamareparameters
(array) è l’elenco dei parametri che si sta inviando alla funzionecallId
(string | int) è l’Id usato per verificare che l’output sia per la stessa chiamata APISupponendo che l’iframe sia su https://example.com
, possiamo fare questa chiamata:
ifr.postMessage(
JSON.stringify({
__iubCsCall: {
command: 'isConsentGiven',
parameters: [],
callId: 1
}
}),
'https://example.com'
);
Questa chiamerà il metodo di Privacy Controls and Cookie Solution isConsentGiven()
senza alcun parametro. L’output verrà restituito via postMessage
sotto forma di stringa JSON.
Affinché l’evento message
catturi questo output avrai bisogno di un “listener”. A seconda dello stato di Privacy Controls and Cookie Solution, il listener sarà:
{
"__iubCsReturn": {
"returnValue": false,
"success": true,
"callId": 1
}
}
Ecco come passare dei parametri alla chiamata postMessage
:
ifr.postMessage(
JSON.stringify({
__iubCsCall: {
command: 'storeConsent',
parameters: [{
consent: false
}],
callId: 2
}
}),
'http://localhost:3012'
);
Questa chiamata al metodo storeConsent()
imposterà consent
a false
e memorizzerà un cookie di preferenza del consenso.
Ricarica la pagina per vedere gli effetti di questa chiamata. Dopo di che potrai verificare che il consenso sia settato a false
esaminando _iub.cs.consent.consent
nella console (l’output dovrebbe infatti essere false
).
Il JSON dell’output di postMessage
sarà qualcosa di simile:
{
"__iubCsReturn": {
"success": true,
"callId": 2
}
}
A seguire l’esempio di una chiamata postMessage
mal formulata (ad esempio un metodo API che non esiste):
ifr.postMessage(
JSON.stringify({
__iubCsCall: {
command: 'Consent',
parameters: [{
consent: false
}],
callId: 1
}
}),
'http://localhost:3012'
);
Poiché le API di Privacy Controls and Cookie Solution non prevedono un metodo Consent
, dovresti ottenere un errore del genere:
{
"__iubCsReturn": {
"returnValue": null,
"success": false,
"callId": 1
}
}