Às vezes, descrita como "frequência efetiva", geralmente há um número mínimo de visualizações para que o usuário reconheça ou se lembre de determinado conteúdo (geralmente no contexto de visualizações de anúncios). Use o armazenamento compartilhado para criar relatórios de usuários únicos que viram um conteúdo pelo menos K vezes.
A API Shared Storage é um modelo Proposta de sandbox para uso geral, armazenamento entre sites, compatível com muitas possíveis casos de uso. A API Private Aggregate é uma saída disponível no Armazenamento compartilhado que permite agregar dados entre sites.
Teste a medição de frequência K+
Para testar a medição de frequência K+ com o armazenamento compartilhado e a agregação privada, confirme se você está usando o Chrome M107 ou mais recente. Ative todas as APIs de privacidade de anúncios em chrome://settings/adPrivacy
.
Também é possível ativar o armazenamento compartilhado com a sinalização --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames
na linha de comando.
Teste exemplos de código
Você pode querer medir o número de usuários que acessaram seu conteúdo K ou mais vezes para determinado cliente em sites diferentes. Nesse exemplo, a contagem de impressões é adicionada ao armazenamento compartilhado, onde aumenta em 1 sempre que o conteúdo é carregado. Quando a contagem de impressões atingir três, a API Private Aggregate será chamada. A dimensão do ID do conteúdo é codificada como chave de agregação, e a contagem é usada como o valor agregável. O relatório de resumo fornecerá informações como "Aproximadamente 391 usuários viram o ID da campanha publicitária 123 pelo menos três vezes".
Neste exemplo:
- O
k-frequency-measurement.js
é carregado por um frame e é responsável por carregar o worklet de armazenamento compartilhado. - O
k-frequency-measurement-worklet.js
é o worklet de armazenamento compartilhado que lê a contagem de impressões nesse armazenamento e envia um relatório pela API Private Aggregate.
k-frequency-measurement.js
async function injectContent() {
// Load the Shared Storage worklet
await window.sharedStorage.worklet.addModule('k-freq-measurement-worklet.js');
// Run the K-frequency measurement operation
await window.sharedStorage.run('k-freq-measurement', { data: { kFreq: 3, contentId: 123 });
}
injectContent();
k-frequency-measurement-worklet.js
// Learn more about noise and scaling from the Private Aggregation fundamentals
// documentation on Chrome blog
const SCALE_FACTOR = 65536;
/**
* The bucket key must be a number, and in this case, it is simply the content
* ID itself. For more complex bucket key construction, see other use cases in
* this demo.
*/
function convertContentIdToBucket(contentId) {
return BigInt(contentId);
}
class KFreqMeasurementOperation {
async run(data) {
const { kFreq, contentId } = data;
// Read from Shared Storage
const hasReportedContentKey = 'has-reported-content';
const impressionCountKey = 'impression-count';
const hasReportedContent = (await sharedStorage.get(hasReportedContentKey)) === 'true';
const impressionCount = parseInt((await sharedStorage.get(impressionCountKey)) || 0);
// Do not report if a report has been sent already
if (hasReportedContent) {
return;
}
// Check impression count against frequency limit
if (impressionCount < kFreq) {
await sharedStorage.set(impressionCountKey, impressionCount + 1);
return;
}
// Generate the aggregation key and the aggregatable value
const bucket = convertContentIdToBucket(contentId);
const value = 1 * SCALE_FACTOR;
// Send an aggregatable report via the Private Aggregation API
privateAggregation.contributeToHistogram({ bucket, value });
// Set the report submission status flag
await sharedStorage.set(hasReportedContentKey, 'true');
}
}
// Register the operation
register('k-freq-measurement', KFreqMeasurementOperation); \
互动和分享反馈
共享存储空间提案正在积极讨论,可能会发生变化 。如果您试用此 API 并有反馈意见,我们非常期待收到您的反馈意见。
- GitHub:阅读 提案、覆盖面白皮书、提出问题并参与讨论。
- Shared Storage API 通告:加入我们的邮寄名单,或查看以往的通告
- 开发者支持:提出问题并加入 Privacy Sandbox 开发者支持代码库。