Les producteurs de contenu souhaitent souvent comprendre les données démographiques de leur audience. Vous pouvez utiliser le stockage partagé pour enregistrer des données démographiques sur les utilisateurs dans un contexte où vous les avez (votre site propriétaire, par exemple). Vous pouvez ensuite utiliser des rapports agrégés pour inclure ces données dans des rapports provenant d'autres sites (votre contenu intégré, par exemple).
L'API Shared Storage est un service Proposition de bac à sable pour le stockage intersites à usage général, cas d'utilisation possibles. L'API Private Aggregation est une sortie disponible dans Shared Storage qui vous permet d'agréger des données intersites.
Essayez la mesure démographique des utilisateurs
Pour tester la mesure des données démographiques des utilisateurs avec le stockage partagé et l'agrégation privée, vérifiez que vous utilisez Chrome Canary et Dev M107 ou une version ultérieure. Activez toutes les API Ad Privacy sous chrome://settings/adPrivacy
.
Vous pouvez également activer le stockage partagé à l'aide de l'option --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames
dans la ligne de commande.
Tester des exemples de code
Vous pouvez mesurer certaines données démographiques des utilisateurs qui ont consulté votre contenu sur différents sites (par exemple, leur tranche d'âge ou leur situation géographique). Dans cet exemple, l'ID de contenu, l'ID de la tranche d'âge et l'ID de la zone géographique sont encodés dans la clé d'agrégation (bucket), et le nombre est utilisé comme valeur agrégable. Le rapport récapitulatif généré fournira des informations telles que "Environ 391 utilisateurs ayant vu l'ID de contenu 123 ont entre 18 et 39 ans et viennent d'Europe".
Dans cet exemple :
demographic-measurement.js
est chargé via un frame et est responsable du chargement du Worklet de stockage partagé.demographic-measurement-worklet.js
est le Worklet de stockage partagé qui lit les données démographiques dans le stockage partagé et envoie un rapport via l'API Private Aggregation.
(s'exécute à un moment donné avant que la mesure ne soit effectuée pour définir les données démographiques dans le stockage partagé)
function getDemogrationsData() {
// Collect age group and continent data
return {
ageGroup,
continent
}
}
async function storeDemographics() {
const { ageGroup, continent } = getDemographicsData();
await window.sharedStorage.set('age-group', ageGroup);
await window.sharedStorage.set('continent', continent);
}
storeDemographics();
async function measureDemographics() {
// Load the Shared Storage worklet
await window.sharedStorage.worklet.addModule('demographics-measurement-worklet.js');
// Run the demographics measurement operation
await window.sharedStorage.run('demographics-measurement', { data: { contentId: '123' } });
}
measureDemographics();
demographic-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 ad campaign
* ID itself. For more complex bucket key construction, see other use cases in
* this demo.
*/
const AGGREGATION_KEY_MAP = {
ageGroupId: {
'18-39': '1',
'40-64': '2',
'65+': '3',
},
continentId: {
africa: '1',
antarctica: '2',
asia: '3',
australia: '4',
europe: '5',
'north-america': '6',
'south-america': '7',
},
};
/**
* The aggregation key will be in the format of:
* contentId | ageGroupId | continentId
*
* For example, a user from Australia between the age of 40-64, who has
* seen the Content ID 321 will be represented by the key:
* 321 | 2 | 4 or 32124
*/
function generateAggregationKey(contentId, ageGroup, continent) {
const ageGroupId = AGGREGATION_KEY_MAP.ageGroupId[ageGroup];
const continentId = AGGREGATION_KEY_MAP.continentId[continent];
const aggregationKey = BigInt(`${contentId}${ageGroupId}${continentId}`);
return aggregationKey;
}
class DemographicsMeasurementOperation {
async run(data) {
const { contentId } = data;
// Read from Shared Storage
const key = 'has-reported-content';
const hasReportedContent = (await sharedStorage.get(key)) === 'true';
const ageGroup = await sharedStorage.get('age-group');
const continent = await sharedStorage.get('continent');
// Do not report if a report has been sent already
if (hasReportedContent) {
return;
}
// Generate the aggregation key and the aggregatable value
const bucket = generateAggregationKey(contentId, ageGroup, continent);
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(key, true);
}
}
// Register the operation
register('demographics-measurement', DemographicsMeasurementOperation); \
Interagir et partager des commentaires
La proposition de stockage partagé est en cours de discussion et est susceptible d'être modifiée. à l'avenir. Si vous essayez cette API et que vous avez des commentaires, n'hésitez pas à nous en faire part.
- GitHub: consultez les proposition, livre blanc sur la portée, poser des questions et participer aux discussions.
- Annonces concernant l'API Shared Storage: rejoignez ou consultez les annonces précédentes sur notre liste de diffusion
- Assistance aux développeurs: posez des questions et participez à des discussions sur le Dépôt de l'assistance pour les développeurs Privacy Sandbox.