Alterner les créations

Utilisez un espace de stockage partagé pour déterminer la création qu'un internaute verra sur les différents sites.

L'API Shared Storage est un service Proposition de bac à sable pour le stockage intersites à usage général, cas d'utilisation possibles. C'est le cas, par exemple, de la rotation des créations, à tester 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, la vue et l'interaction des utilisateurs, pour identifier les créations voir à travers différents sites.

Exécutez un Worklet de stockage partagé pour sélectionner une URL dans une liste fournie, en fonction du les données stockées, puis affiche cette création dans un cadre cloisonné. Il peut être utilisé pour sélectionner de nouvelles annonces ou d'autres contenus.

Essayer la rotation des créations

Pour tester la rotation des créations avec Shared Storage, vérifiez que vous utilisez Chrome 104.0.5086.0 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

Un annonceur ou un producteur de contenu peut vouloir appliquer différentes stratégies campagne, et alternez les contenus ou les créations pour en améliorer l'efficacité. Le stockage partagé permet d'exécuter différentes stratégies de rotation : une rotation séquentielle et une rotation répartie 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 ( 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 du contenu 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 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);

Cas d'utilisation

Ce ne sont là que quelques-uns des cas d'utilisation possibles du stockage partagé. Nous d'ajouter des exemples au fur et à mesure recevoir des commentaires et découvrir de nouveaux cas d'utilisation.

Sélection de contenu

Sélectionner et afficher différents contenus sur différents sites Web dans cadres cloisonnés en fonction des informations collectées dans Shared Storage. La porte de sortie pour ces cas d'utilisation 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 l'interaction des utilisateurs, afin d'identifier les créations sur les différents sites.
  • Tests A/B: Vous pouvez affecter un utilisateur à un groupe de test, puis stocker ce groupe dans le stockage partagé pour qu'il puisse y accéder intersite.
  • Expériences utilisateur personnalisées: Partagez du contenu personnalisé et des incitations à l'action en fonction de l'état d'inscription ou d'autres états des utilisateurs

Générer des rapports récapitulatifs

Collecter des informations avec Shared Storage et générer un rapport récapitulatif agrégé comportant beaucoup de bruit. Pour ces cas d'utilisation, la porte de sortie API Private Aggregation

  • Mesure de la Unique Reach: De nombreux producteurs et annonceurs de contenu souhaitent connaître le nombre de personnes ont vu leur contenu. Utiliser le stockage partagé pour enregistrer la première fois qu'un utilisateur vu votre annonce, vidéo intégrée ou publication, et éviter les doublons pour chaque même utilisateur sur différents sites. Vous pouvez ensuite générer un rapport récapitulatif sur votre audience à l'aide de l'API Private Aggregation.
  • Mesure des données démographiques: Les producteurs de contenu souhaitent souvent connaître les données démographiques de leurs audience cible. Vous pouvez utiliser le stockage partagé pour enregistrer les données démographiques des utilisateurs dans un le contexte dans lequel elles se trouvent (votre site propriétaire, par exemple), et utilisez des données pour générer des rapports les concernant sur de nombreux autres sites, comme le contenu intégré.
  • Mesure de la fréquence K+: Parfois décrit comme « fréquence effective », il y a souvent un nombre minimum vues avant qu'un utilisateur ne reconnaisse ou ne se souvienne de certains contenus (souvent dans le contexte des visionnages de l'annonce). Vous pouvez utiliser Shared Storage pour créer des rapports d'utilisateurs uniques ayant vu un contenu au moins K fois.

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.