Alterner les créations

Utilisez un espace de stockage partagé pour déterminer les créations qu'un utilisateur voit sur les différents sites.

L'API Shared Storage est une proposition de la Privacy Sandbox destinée au stockage intersites à usage général, qui prend en charge de nombreux cas d'utilisation possibles. La rotation des créations, par exemple, peut être testée dans Chrome 104.0.5086.0 et versions ultérieures.

La rotation des créations vous permet de stocker des données, telles que l'ID de la création, le nombre de vues et les interactions des utilisateurs, afin de déterminer quelles créations sont diffusées auprès des utilisateurs sur différents sites.

Exécutez un worklet de stockage partagé pour sélectionner une URL dans une liste fournie, en fonction des données stockées, puis affichez cette création dans un frame cloisonné. Cela permet de sélectionner de nouvelles annonces ou d'autres contenus.

Essayer la rotation des créations

Pour tester la rotation des créations avec le stockage partagé, vérifiez que vous utilisez Chrome 104.0.5086.0 ou une version ultérieure. Activez ensuite l'indicateur Test des API Privacy Sandbox Ads dans chrome://flags/#privacy-sandbox-ads-apis.

Activer le test des API Privacy Sandbox Ads pour utiliser ces API

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

Un annonceur ou un producteur de contenu peut vouloir appliquer différentes stratégies à une campagne et alterner le contenu ou les créations pour plus d'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 distribuée uniformément, sur différents sites.

Dans cet exemple :

  • creative-rotation.js est intégré dans un frame. Ce script définit les annonces les plus importantes ( épaisseur) 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 retours à afficher.

creative-rotation.js.

// 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('content-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();

creative-rotation-worklet.js.

class SelectURLOperation {
  async run(urls, data) {
    // Read the rotation mode from Shared Storage
    const rotationMode = await this.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 this.sharedStorage.get('creative-rotation-index');
        index = parseInt(currentIndex, 10);
        const nextIndex = (index + 1) % urls.length;

        await this.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);

Cas d'utilisation

Ce ne sont là que quelques cas d'utilisation possibles du stockage partagé. Nous continuerons d'ajouter des exemples à mesure que nous recevons des commentaires et découvrons de nouveaux cas d'utilisation.

Sélection de contenu

Sélectionnez et affichez différents contenus sur différents sites Web dans des frames cloisonnés en fonction des informations collectées dans le stockage partagé. Dans ces cas d'utilisation, la porte de sortie est la sélection d'URL.

  • Rotation des créations : stockez des données telles que l'ID de la création, le nombre de vues et les interactions des utilisateurs afin de déterminer quelles créations les utilisateurs voient sur différents sites.
  • Tests A/B : vous pouvez affecter un utilisateur à un groupe de test, puis stocker ce groupe dans un espace de stockage partagé pour qu'il soit accessible sur plusieurs sites.
  • Expériences utilisateur personnalisées : partagez du contenu personnalisé et des incitations à l'action en fonction de l'état d'inscription de l'utilisateur ou d'autres états de l'utilisateur

Générer des rapports de synthèse

Collecter des informations avec le stockage partagé et générer un rapport récapitulatif agrégé bruyant La porte de sortie pour ces cas d'utilisation est l'API Private Aggregation.

  • Mesure de la couverture unique : de nombreux créateurs de contenus et annonceurs souhaitent savoir combien de personnes uniques ont vu leur contenu. Utilisez le stockage partagé pour enregistrer la première fois qu'un utilisateur a vu votre annonce, vidéo intégrée ou publication. Vous éviterez ainsi que le même utilisateur soit comptabilisé deux fois sur différents sites. Vous pouvez ensuite utiliser l'API Private Agrégation pour générer un rapport récapitulatif pour votre couverture.
  • Mesure des données démographiques : les producteurs de contenu souhaitent souvent comprendre les données démographiques de leur audience. Vous pouvez utiliser le stockage partagé pour enregistrer les données démographiques des utilisateurs dans le contexte dont vous disposez, par exemple votre site propriétaire, et utiliser des rapports agrégés pour générer des rapports les concernant sur de nombreux autres sites, comme le contenu intégré.
  • Mesure de la fréquence des k+ : parfois décrite comme "fréquence effective", un nombre de vues minimal est souvent requis avant qu'un utilisateur reconnaisse ou se souvienne certains contenus (souvent dans le contexte des vues d'une publicité). Vous pouvez utiliser le stockage partagé pour créer des rapports sur les utilisateurs uniques ayant vu un contenu au moins K fois.

Interagir et partager des commentaires

La proposition de stockage partagé fait l'objet d'une discussion active 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.