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.
Formato postMessage
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 API
Exemplos
Supondo 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
}
}
Exemplo com parâmetros
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
}
}
Exemplo de uma chamada postMessage malformada
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
}
}