Se o Privacy Controls and Cookie Solution estiver embutido em um iframe, todos os métodos _iub.cs.api
podem ser chamados através do postMessage
. Seguem abaixo alguns exemplos de como essas chamadas podem ser feitas.
A API precisa receber uma chamada postMessage
no seguinte formato JSON:
{
__iubCsCall: {
command: <api-function-name>,
parameters: [...],
callId: <a-string-or-integer>
}
}
Onde:
command
(string) é o nome da função API que você quer chamarparameters
(array) é uma lista de parâmetros que você está enviando para a função APIcallId
(string | int) é o Id usado para verificar se a saída retornada é para a mesma chamada de APISupondo que o iframe de destino esteja no https://example.com
, podemos enviar esta chamada API:
ifr.postMessage(
JSON.stringify({
__iubCsCall: {
command: 'isConsentGiven',
parameters: [],
callId: 1
}
}),
'https://example.com'
);
Isso chamará a função isConsentGiven()
da API do Privacy Controls and Cookie Solution, sem parâmetros. A saída será retornada por meio da postMessage
como uma string JSON.
Para que o evento message
capture essa saída, você precisará de um ouvinte. Dependendo do estado atual do Privacy Controls and Cookie Solution, o ouvinte terá a seguinte aparência:
{
"__iubCsReturn": {
"returnValue": false,
"success": true,
"callId": 1
}
}
Veja como você pode passar parâmetros para sua chamada postMessage
:
ifr.postMessage(
JSON.stringify({
__iubCsCall: {
command: 'storeConsent',
parameters: [{
consent: false
}],
callId: 2
}
}),
'http://localhost:3012'
);
Essa chamada para a função storeConsent()
será definida de consent
para false
e armazenará um cookie de consentimento.
Atualize a página para ver os efeitos desta chamada. Em seguida, você poderá verificar se o consentimento está definido como false
, avaliando _iub.cs.consent.consent
no console (deve resultar em false
).
A postMessage
da saída JSON deve ser semelhante a esta:
{
"__iubCsReturn": {
"success": true,
"callId": 2
}
}
A seguir, você verá a saída de uma chamada postMessage
malformada (por exemplo, uma função de API que não existe):
ifr.postMessage(
JSON.stringify({
__iubCsCall: {
command: 'Consent',
parameters: [{
consent: false
}],
callId: 1
}
}),
'http://localhost:3012'
);
Como não existe nenhuma função de API chamada Consent
no Privacy Controls and Cookie Solution, consequentemente, você deverá obter um erro como este:
{
"__iubCsReturn": {
"returnValue": null,
"success": false,
"callId": 1
}
}