Si el servicio Privacy Controls and Cookie Solution está integrado dentro de un iframe, se puede llamar a todos los métodos _iub.cs.api
a través de postMessage
. A continuación, se muestran algunos ejemplos de cómo se pueden realizar estas llamadas.
La API necesita recibir una llamada postMessage
en formato JSON:
{
__iubCsCall: {
command: <api-function-name>,
parameters: [...],
callId: <a-string-or-integer>
}
}
Donde:
command
(string) es el nombre de la función API que quieres llamarparameters
(array) es una lista de los parámetros que estás enviando a la función APIcallId
(string | int)es el ID utilizado para verificar que el output es para la misma llamada APISuponiendo que el iframe de destino está en https://example.com
, podemos hacer esta llamada:
ifr.postMessage(
JSON.stringify({
__iubCsCall: {
command: 'isConsentGiven',
parameters: [],
callId: 1
}
}),
'https://example.com'
);
Esto llamará a la función API isConsentGiven()
de Privacy Controls and Cookie Solution sin ningún parámetro. El output se devolverá a través de postMessage
en forma de una cadena JSON.
Para que el evento message
capture este output, necesitará un “listener”. Dependiendo del estado actual de Privacy Controls and Cookie Solution, el listener se verá así:
{
"__iubCsReturn": {
"returnValue": false,
"success": true,
"callId": 1
}
}
A continuación, te indicamos cómo pasar parámetros a tu llamada postMessage
:
ifr.postMessage(
JSON.stringify({
__iubCsCall: {
command: 'storeConsent',
parameters: [{
consent: false
}],
callId: 2
}
}),
'http://localhost:3012'
);
Esta llamada a la función storeConsent()
establecerá consent
como false
y almacenará una cookie de consentimiento.
Actualiza la página para ver los efectos de esta llamada. A continuación, puedes verificar que el consentimiento esté establecido como false
evaluando _iub.cs.consent.consent
en la consola (debería aparecer false
).
El output JSON postMessage
debería ser así:
{
"__iubCsReturn": {
"success": true,
"callId": 2
}
}
Aquí hay un output de una llamada postMessage
mal formulada (por ejemplo, una función de API que no existe):
ifr.postMessage(
JSON.stringify({
__iubCsCall: {
command: 'Consent',
parameters: [{
consent: false
}],
callId: 1
}
}),
'http://localhost:3012'
);
Como no hay una función API llamada Consent
en Privacy Controls and Cookie Solution, deberías obtener un error como este:
{
"__iubCsReturn": {
"returnValue": null,
"success": false,
"callId": 1
}
}