Wyświetlaj reklamy naprzemiennie

Użyj współdzielonego magazynu, aby określić, jaką kreację użytkownik widzi w różnych witrynach.

Interfejs Shared Storage API to propozycja Piaskownicy prywatności dotycząca ogólnego przeznaczenia, przechowywania między witrynami, która obsługuje wiele możliwych zastosowań. Jednym z takich przykładów jest rotacja kreacji, którą można testować w Chrome 104.0.5086.0 i nowszych wersjach.

Dzięki rotacji kreacji możesz przechowywać dane, takie jak identyfikator kreacji, liczbę wyświetleń i interakcje użytkowników, aby określać, które kreacje widzą użytkownicy w różnych witrynach.

Uruchom element Shared Storage, aby wybrać adres URL z podanej listy na podstawie przechowywanych danych, a potem wyrenderuj kreację w ramce wydzielonej. Możesz go użyć do wybrania nowych reklam lub innych treści.

Wypróbuj rotację kreacji

Aby eksperymentować z rotacją kreacji za pomocą współdzielonej pamięci, sprawdź, czy używasz Chrome w wersji 104.0.5086.0 lub nowszej. Włącz wszystkie interfejsy API dotyczące ochrony prywatności w reklamach (chrome://settings/adPrivacy).

Możesz też włączyć współdzielone miejsce na dane, używając parametru --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames w wierszu poleceń.

Eksperymentowanie z przykładowymi fragmentami kodu

Reklamodawca lub twórca treści może stosować różne strategie w kampanii i rotować treści lub kreacje, aby zwiększyć skuteczność. Współdzielone miejsce na dane może być używane do stosowania różnych strategii rotacji, np. rotacji sekwencyjnej i równomiernej, na różnych stronach.

W tym przykładzie:

  • creative-rotation.js jest umieszczony w ramce. Ten skrypt określa, które reklamy są najważniejsze ( waga), i wywołuje element worklet, aby określić, które treści powinny się wyświetlać.
  • creative-rotation-worklet.js to worklet Shared Storage, który określa rozkład wagowy treści i zwracanych wyników.

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

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);

Przypadki użycia

To tylko niektóre z możliwych zastosowań wspólnego miejsca na dane. Będziemy dodawać kolejne przykłady, gdy będziemy otrzymywać opinie i odkrywać nowe przypadki użycia.

Wybór treści

Wybieranie i wyświetlanie różnych treści na różnych stronach w ramkach wydzielonych na podstawie informacji zebranych w Shared Storage. W tych przypadkach bramą wyjściową jest wybór adresu URL.

  • Rotacja kreacji: przechowuj dane, takie jak identyfikator kreacji, liczba wyświetleń i interakcje użytkowników, aby określić, które kreacje widzą użytkownicy w różnych witrynach.
  • Testy A/B: możesz przypisać użytkownika do grupy eksperymentalnej, a potem zapisać tę grupę w usługach Shared Storage, aby umożliwić dostęp do niej w różnych witrynach.
  • Niestandardowe wrażenia użytkowników: udostępniaj niestandardowe treści i wezwania do działania na podstawie stanu rejestracji użytkownika lub innych stanów użytkownika.

generować raporty podsumowujące;

Gromadzenie informacji za pomocą usługi Shared Storage i generowanie raportu podsumowującego z dużą ilością szumu. Bramą wyjściową w tych przypadkach jest Private Aggregation API.

  • Pomiar zasięgu wśród unikalnych użytkowników: wielu twórców treści i reklamodawców chce wiedzieć, ilu unikalnych użytkowników obejrzało ich treści. Używaj pamięci współdzielonej, aby rejestrować, kiedy użytkownik zobaczył po raz pierwszy Twoją reklamę, osadzoną publikację lub film. Zapobiegnie to zliczaniu tego samego użytkownika w różnych witrynach. Następnie możesz użyć interfejsu Private Aggregation API, aby wygenerować raport podsumowujący zasięg.
  • Dane demograficzne: twórcy często chcą poznać dane demograficzne swoich odbiorców. Za pomocą pamięci współdzielonej możesz rejestrować dane demograficzne użytkowników w kontekście, w którym je masz, np. w witrynie własnej, a potem używać zbiorczego raportowania, aby tworzyć raporty na ich temat w wielu innych witrynach, np. w ramach treści umieszczonych w ramkach.
  • Pomiar częstotliwości K+: czasami określany jako „skuteczna częstotliwość”, często wymaga minimum liczby wyświetleń, zanim użytkownik rozpozna lub przypomni sobie określone treści (często w kontekście wyświetleń reklam). Korzystając z miejsca na dane współdzielonego, możesz tworzyć raporty dotyczące unikalnych użytkowników, którzy widzieli dany element treści co najmniej K razy.

Angażowanie użytkowników i przesyłanie opinii

Pamiętaj, że propozycja interfejsu Shared Storage API jest obecnie przedmiotem dyskusji i jest w fazie rozwoju, dlatego może ulec zmianie.

Chętnie poznamy Twoją opinię na temat interfejsu Shared Storage API.

Trzymaj rękę na pulsie

  • Lista mailingowa: zasubskrybuj naszą listę mailingową, aby otrzymywać najnowsze informacje i ogłoszenia dotyczące interfejsu Storage API.

Potrzebujesz pomocy?