Usa un almacenamiento compartido para determinar qué creatividad ve un usuario en todos los sitios.
La API de Shared Storage es una propuesta de Privacy Sandbox para el almacenamiento general y entre sitios, que admite muchos casos de uso posibles. Un ejemplo de esto es la rotación de creatividades, que está disponible para probar en Chrome 104.0.5086.0 y versiones posteriores.
Con la rotación de creatividades, puedes almacenar datos, como el ID de creatividad, los recuentos de vistas y la interacción del usuario, para determinar qué creatividades ven los usuarios en diferentes sitios.
Ejecuta una tarea de trabajo de almacenamiento compartido para seleccionar una URL de una lista proporcionada, según los datos almacenados, y, luego, renderiza esa creatividad en un marco cercado. Se puede usar para seleccionar anuncios nuevos o cualquier otro contenido.
Prueba la rotación de creatividades
Para experimentar con la rotación de creatividades con el almacenamiento compartido, confirma que estás usando Chrome 104.0.5086.0 o una versión posterior. Habilita todas las APIs de privacidad en los anuncios en chrome://settings/adPrivacy
.
También puedes habilitar el almacenamiento compartido con la marca --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames
en la línea de comandos.
Experimenta con muestras de código
Es posible que un anunciante o un productor de contenido desee aplicar diferentes estrategias a una campaña y rotar el contenido o las creatividades para aumentar la eficacia. El almacenamiento compartido se puede usar para ejecutar diferentes estrategias de rotación, como la rotación secuencial y la rotación distribuida de forma uniforme, en diferentes sitios.
En este ejemplo:
creative-rotation.js
está incorporado en un marco. Esta secuencia de comandos establece qué anuncios son los más importantes ( peso) y llama a la worklet para determinar qué contenido se debe mostrar.creative-rotation-worklet.js
es la worklet de almacenamiento compartido que determina la distribución ponderada del contenido y los resultados que se deben mostrar.
// Ad config with the URL of the content, a probability weight for rotation, and the clickthrough rate.
const DEMO_CONTENT_CONFIG = [
{
url: 'https://your-server.example/contents/content-1.html',
weight: 0.7,
},
{
url: 'https://your-server.example/contents/content-2.html',
weight: 0.2,
},
{
url: 'https://your-server.example/contents/content-3.html',
weight: 0.1,
},
];
// Set the mode to sequential and set the starting index to 0.
async function seedStorage() {
await window.sharedStorage.set('content-rotation-mode', 'sequential', {
ignoreIfPresent: true,
});
await window.sharedStorage.set('content-rotation-index', 0, {
ignoreIfPresent: true,
});
}
async function injectAd() {
// Load the worklet module
await window.sharedStorage.worklet.addModule('creative-rotation-worklet.js');
// Initially set the storage to sequential mode for the demo
seedStorage();
// Run the URL selection operation to determine the next content rendered.
const urls = DEMO_CONTENT_CONFIG.map(({ url }) => ({ url }));
const fencedFrameConfig = await window.sharedStorage.selectURL('content-rotation', urls, {
data: DEMO_CONTENT_CONFIG,
resolveToConfig: true
});
// Render the opaque URL into a fenced frame
document.getElementById('content-slot').config = fencedFrameConfig;
}
injectAd();
class SelectURLOperation {
async run(urls, data) {
// Read the rotation mode from Shared Storage
const rotationMode = await sharedStorage.get('content-rotation-mode');
// Generate a random number to be used for rotation
const randomNumber = Math.random();
let index;
switch (rotationMode) {
/**
* Sequential rotation
* - Rotates the contents in order
* - Example: A -> B -> C -> A ...
*/
case 'sequential':
const currentIndex = await sharedStorage.get('creative-rotation-index');
index = parseInt(currentIndex, 10);
const nextIndex = (index + 1) % urls.length;
await sharedStorage.set('content-rotation-index', nextIndex);
break;
/**
* Weighted rotation
* - Rotates the contentswith weighted probability
* - Example: A=70% / B=20% / C=10%
*/
case 'weighted-distribution':
// Sum the weights cumulatively, and find the first URL where the
// sum exceeds the random number. The array is sorted in
// descending order first.
let weightSum = 0;
const { url } = data
.sort((a, b) => b.weight - a.weight)
.find(({ weight }) => {
weightSum += weight;
return weightSum > randomNumber;
});
index = urls.indexOf(url);
break;
default:
index = 0;
}
return index;
}
}
register('content-rotation', SelectURLOperation);
Use cases
These are only some of the possible use cases for Shared Storage. We'll continue to add examples as we receive feedback and discover new use cases.
Content selection
Select and display different content on different websites in fenced frames based on information collected in Shared Storage. The output gate for these use cases is URL selection.
- Creative rotation: Store data, such as creative ID, view counts, and user interaction, to determine which creative users' see across different sites.
- A/B testing: You can assign a user to an experiment group, then store that group in Shared Storage to be accessed cross-site.
- Custom user experiences: Share custom content and calls-to-action based on a user's registration status or other user states
Generate summary reports
Collect information with Shared Storage and generate a noisy, aggregated summary report. The output gate for these use cases is the Private Aggregation API.
- Unique reach measurement: Many content producers and advertisers want to know how many unique people saw their content. Use Shared Storage to record the first time a user saw your ad, embedded video, or publication, and prevent duplicative counting of that same user on different sites. You can then use the Private Aggregation API to output a summary report for your reach.
- Demographics measurement: Content producers often want to understand the demographics of their audience. You can use Shared Storage to record user demographic data in a context where you have it, such as your first-party site, and use aggregated reporting to report on it across many other sites, such as embedded content.
- K+ frequency measurement: Sometimes described as "effective frequency," there is often a minimum number views before a user will recognize or recall certain content (often in the context of advertisement views). You can use Shared Storage to build reports of unique users that have seen a piece of content at least K number of times.
Interactúa y comparte comentarios
Ten en cuenta que la propuesta de la API de Shared Storage está en discusión y desarrollo activo y, por lo tanto, está sujeta a cambios.
Nos encantaría conocer tu opinión sobre la API de Shared Storage.
- Propuesta: Revisa la propuesta detallada.
- Debate: Únete al debate en curso para hacer preguntas y compartir tus estadísticas.
Mantente al tanto
- Lista de distribución: Suscríbete a nuestra lista de distribución para recibir las actualizaciones y los anuncios más recientes relacionados con la API de Shared Storage.
¿Necesitas ayuda?
- Asistencia para desarrolladores: Conéctate con otros desarrolladores y obtén respuestas a tus preguntas en el repositorio de asistencia para desarrolladores de Privacy Sandbox.