Utilisez un espace de stockage partagé pour déterminer la création qu'un utilisateur voit sur différents sites.
L'API Shared Storage est une proposition de la Privacy Sandbox pour le stockage multisites à usage général, qui prend en charge de nombreux cas d'utilisation possibles. La rotation des créations en est un exemple, et est disponible à des fins de test dans Chrome 104.0.5086.0 et versions ultérieures.
Grâce à la rotation des créations, vous pouvez stocker des données telles que l'ID de la création, le nombre de vues et les interactions des utilisateurs pour déterminer les créations que les utilisateurs voient sur différents sites.
Exécutez un worklet Shared Storage pour sélectionner une URL dans une liste fournie, en fonction des données stockées, puis affichez cette création dans un cadre clôturé. Vous pouvez l'utiliser pour sélectionner de nouvelles annonces ou d'autres contenus.
Essayer la rotation des créations
Pour tester la rotation des créations avec l'espace de stockage partagé, vérifiez que vous utilisez Chrome 104.0.5086.0 ou une version ultérieure. Activez toutes les API de confidentialité des annonces sous chrome://settings/adPrivacy
.
Vous pouvez également activer Shared Storage avec l'indicateur --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames
dans la ligne de commande.
Tester des exemples de code
Un annonceur ou un producteur de contenu peut souhaiter appliquer différentes stratégies à une campagne et faire tourner les contenus ou les créations pour en améliorer l'efficacité. Le stockage partagé peut être utilisé pour exécuter différentes stratégies de rotation, telles que la rotation séquentielle et la rotation répartie uniformément, sur différents sites.
Dans cet exemple :
creative-rotation.js
est intégré à un frame. Ce script définit les annonces les plus importantes ( pondération) et appelle le worklet pour déterminer le contenu à afficher.creative-rotation-worklet.js
est le worklet de stockage partagé qui détermine la distribution pondérée des contenus et des résultats à afficher.
// 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.
Interagir et envoyer des commentaires
Notez que la proposition d'API Shared Storage est en cours de discussion et de développement, et est donc susceptible d'être modifiée.
Nous sommes impatients de connaître votre avis sur l'API Shared Storage.
- Proposition: consultez la proposition détaillée.
- Discussion: rejoignez la discussion en cours pour poser des questions et partager vos insights.
Se tenir informé
- Liste de diffusion: abonnez-vous à notre liste de diffusion pour recevoir les dernières informations et annonces concernant l'API Shared Storage.
Besoin d'aide ?
- Assistance pour les développeurs: échangez avec d'autres développeurs et obtenez des réponses à vos questions dans le dépôt d'assistance pour les développeurs de la Privacy Sandbox.