Wyświetlaj reklamy naprzemiennie

Korzystanie z pamięci współdzielonej pozwala określić, jaką kreację widzi użytkownik w różnych witrynach.

Shared Storage API to interfejs Privacy, Propozycja piaskownicy do zwykłych obciążeń, pamięci w wielu witrynach, która obsługuje wiele możliwych zastosowań. Jednym z przykładów jest rotacja kreacji, do testowania w Chrome 104.0.5086.0 i nowszych.

Dzięki rotacji kreacji możesz przechowywać takie dane jak identyfikator kreacji, i interakcję użytkownika, by określić, zobacz w obrębie w różnych witrynach.

Uruchom Worklet Shared Storage, aby wybrać adres URL z podanej listy na podstawie a następnie wyrenderować kreację w zabezpieczonej ramce. Tej opcji można użyć aby wybrać nowe reklamy lub inne treści.

Wypróbuj rotację kreacji

Aby poeksperymentować z rotacją kreacji za pomocą pamięci współdzielonej, upewnij się, że używasz Chrome w wersji 104.0.5086.0 lub nowszej. Włącz wszystkie interfejsy Ad Privacy API w sekcji chrome://settings/adPrivacy.

Możesz też włączyć pamięć współdzieloną, używając flagi --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames w wierszu poleceń.

Eksperyment z przykładowym kodem

Reklamodawca lub producent treści może stosować różne strategie wobec i rotacji treści lub kreacji w celu zwiększenia skuteczności. pamięci współdzielonej można używać do uruchamiania różnych strategii rotacji, takich jak rotacji sekwencyjnej i rozłożonej równomiernie w różnych witrynach.

W tym przykładzie:

  • Element creative-rotation.js jest osadzony w ramce. Skrypt ten określa, które reklamy są najważniejsze ( waga), i wywołania do Workletu w celu określenia treści do wyświetlenia.
  • creative-rotation-worklet.js to Worklet pamięci współdzielonej określający ważony rozkład treści i zwrotów, które powinny być wyświetlane.

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

Przypadki użycia

To tylko niektóre z możliwych zastosowań pamięci współdzielonej. Na dodajemy przykłady. otrzymuj opinie i odkrywać nowe przypadki użycia.

Wybór treści

Wybieraj i wyświetlaj różne treści w różnych witrynach w chronione ramki na podstawie informacji zbierane w pamięci współdzielonej. Bramką wyjściową w tych przypadkach użycia jest wybór adresu URL.

  • Rotacja kreacji: Przechowuj dane, takie jak identyfikator kreacji, liczba wyświetleń i interakcje użytkowników, aby określać, którzy użytkownicy które można zobaczyć na różnych stronach.
  • Testy A/B: Możesz przypisać użytkownika do grupy eksperymentalnej, a następnie zapisać tę grupę w pamięci współdzielonej, aby można było z niej korzystać w innych witrynach.
  • Funkcje dostosowane do potrzeb użytkowników: udostępniać treści niestandardowe i wezwania do działania na podstawie stanu rejestracji lub innych stanów użytkownika;

Generowanie raportów podsumowujących

Zbieranie informacji za pomocą pamięci współdzielonej oraz generowanie zaszumionego, zbiorczego raportu podsumowującego. Bramką wyjściową dla tych przypadków użycia jest Private Aggregation API.

  • Pomiar zasięgu wśród unikalnych użytkowników: Wielu producentów treści i reklamodawców chce się dowiedzieć, ile unikalnych osób zobaczyło ich treści. Rejestrowanie pierwszego użytkownika za pomocą pamięci współdzielonej zobaczyli Twoją reklamę, umieszczony film lub publikację, zliczanie tego samego użytkownika w różnych witrynach. Następnie za pomocą interfejsu Private Aggregation API możesz wygenerować raport podsumowujący swój zasięg.
  • Pomiar danych demograficznych: Producenci treści często chcą poznać dane demograficzne swoich z całego świata. Za pomocą pamięci współdzielonej możesz rejestrować dane demograficzne użytkowników w (np. z własnej witryny) i używaj zagregowanych danych w raportach na jej temat w wielu innych witrynach, np. zawierających treści umieszczone na stronach zewnętrznych.
  • Pomiar częstotliwości K+: Czasami określa się ją jako „efektywną częstotliwość”. często istnieje minimalna liczba, wyświetlenia, zanim użytkownik rozpozna lub zapamięta określone treści (często na kontekst wyświetleń reklamy). Możliwość korzystania z pamięci współdzielonej do tworzenia raportów unikalnych użytkowników, którzy widzieli treści co najmniej K razy.

Angażuj odbiorców i dziel się opiniami

Propozycja wspólnego miejsca na dane jest w trakcie dyskusji i może ulec zmianie w przyszłości. Jeśli wypróbujesz ten interfejs API i chcesz przekazać nam swoją opinię, chętnie poznamy jego opinię.