Entwicklerleitfaden für die FLEDGE API

An wen richtet sich dieser Artikel?

Dieser Beitrag ist eine technische Referenz zur aktuellen Version der experimentellen Protected Audience API.

Was ist Protected Audience?

Die Protected Audience API ist ein Privacy Sandbox-Vorschlag für Remarketing und benutzerdefinierte Zielgruppen, der so konzipiert ist, dass Dritte das Browserverhalten von Nutzern nicht über Websites hinweg verfolgen können. Die API ermöglicht On-Device-Auktionen durch den Browser, um relevante Anzeigen für Websites auszuwählen, die der Nutzer zuvor besucht hat.

Protected Audience ist der erste Test, der in Chromium innerhalb der TURTLEDOVE-Angebotsfamilie implementiert wird.

Das folgende Diagramm bietet einen Überblick über den FLEDGE-Lebenszyklus:

Abbildung mit einem Überblick über die einzelnen Phasen des FLEDGE-Lebenszyklus
FLEDGE-Lebenszyklus

Wie kann ich Protected Audience testen?

Protected Audience-Demo

Eine Schritt-für-Schritt-Anleitung für die grundlegende Bereitstellung von Protected Audience auf Websites von Werbetreibenden und Publishern finden Sie unter protected-audience-demo.web.app.

Im Demovideo wird erklärt, wie der Democode funktioniert, und gezeigt, wie Sie die Chrome-Entwicklertools für das Debuggen von Protected Audience verwenden.

An einem Protected Audience-Ursprungstest teilnehmen

In Chrome Beta 101.0.4951.26 und höher ist auf dem Computer ein Ursprungstest für die Privacy Sandbox-Relevanz- und Measurement APIs für die Protected Audience API, die Topics API und die Attribution Reporting API verfügbar.

Wenn Sie daran teilnehmen möchten, registrieren Sie sich für ein Ursprungstest-Token.

Nachdem Sie sich für den Test registriert haben, können Sie die Protected Audience JavaScript API auf Seiten ausprobieren, die ein gültiges Testtoken enthalten. Sie können beispielsweise den Browser bitten, einer oder mehreren Interessengruppen beizutreten und dann eine Anzeigenauktion durchzuführen, um eine Anzeige auszuwählen und zu präsentieren.

Die Protected Audience-Demo ist ein einfaches Beispiel für eine End-to-End-Implementierung von Protected Audience.

Geben Sie für jede Seite, auf der Sie Protected Audience API-Code ausführen möchten, ein Testtoken an:

  • Als Meta-Tag im <head>-Tag:

    <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">

  • Als HTTP-Header:

    Origin-Trial: TOKEN_GOES_HERE

  • Wenn Sie ein Token programmatisch bereitstellen:

    const otMeta = document.createElement('meta');
    otMeta.httpEquiv = 'origin-trial';
    otMeta.content = 'TOKEN_GOES_HERE';
    document.head.append(otMeta);
    

Für einen Iframe, in dem Protected Audience-Code ausgeführt wird, z. B. ein navigator.joinAdInterestGroup()-Aufruf durch den Inhaber einer Interessengruppe, muss ein Token angegeben werden, das mit dem Ursprung übereinstimmt.

Vorgeschlagene Details zum ersten Test für den Ursprung geschützter Zielgruppen enthalten weitere Informationen zu den Zielen des ersten Tests und erklären, welche Funktionen unterstützt werden.

Diese API testen

Sie können Protected Audience für einen einzelnen Nutzer in Chrome Beta 101.0.4951.26 und höher auf dem Computer testen:

  • Aktivieren Sie alle APIs für den Datenschutz bei Anzeigen unter chrome://settings/adPrivacy
  • Durch Festlegen von Flags über die Befehlszeile.

Anzeigen in iFrames oder abgegrenzten Frames rendern

Anzeigen können je nach festgelegten Flags in einem <iframe> oder einem <fencedframe> gerendert werden.

So verwenden Sie <fencedframe> zum Rendern von Anzeigen:

--enable-features=InterestGroupStorage,AdInterestGroupAPI,Fledge,FencedFrames

So verwenden Sie <iframe> zum Rendern von Anzeigen:

--enable-features=InterestGroupStorage,AdInterestGroupAPI,Fledge,AllowURNsInIframes --disable-features=FencedFrames

Fügen Sie das BiddingAndScoringDebugReportingAPI-Flag hinzu, um die vorübergehenden Methoden zur Berichterstellung zu Verlusten/Gewinnen bei der Fehlerbehebung zu aktivieren.

Chromium mit Flags ausführen: Hier erfahren Sie, wie Sie Flags festlegen, wenn Sie Chrome und andere Chromium-basierte Browser über die Befehlszeile ausführen. Eine vollständige Liste der Protected Audience-Flags finden Sie in der Chromium-Codesuche.

Welche Funktionen werden in der neuesten Version von Chrome unterstützt?

Protected Audience wird in Chromium über Funktions-Flags als erster Test verfügbar gemacht, um die folgenden Funktionen des Protected Audience-Vorschlags zu testen:

  • Interessengruppen: vom Browser gespeichert, mit zugehörigen Metadaten zur Konfiguration von Gebotsstrategien und Rendering von Anzeigen.
  • On-Device-Gebote von Käufern (DSP oder Werbetreibender): basierend auf gespeicherten Interessengruppen und Signalen vom Verkäufer.
  • On-Device-Anzeigenauswahl durch den Verkäufer (SSP oder Publisher): Basierend auf Auktionsgeboten und Metadaten von Käufern.
  • Anzeigenrendering in einer vorübergehend gelockerten Version von Fenced Frames: Netzwerkzugriff und Logging für das Anzeigenrendering sind zulässig.

In der API-Erläuterung finden Sie weitere Informationen zur Funktionsunterstützung und zu Einschränkungen.

Berechtigungen für Interessengruppen

In der aktuellen Implementierung von Protected Audience ist standardmäßig festgelegt, dass joinAdInterestGroup() von überall auf einer Seite aufgerufen werden darf, auch von domänenübergreifenden iFrames. Sobald Websiteinhaber Zeit hatten, ihre Berechtigungsrichtlinien für domainübergreifende iFrames anzupassen, werden Aufrufe von domainübergreifenden iFrames wie in der Erläuterung beschrieben nicht mehr zulässig sein.

Dienst für Schlüssel/Wert-Paare

Im Rahmen einer Anzeigenauktion für geschützte Zielgruppen kann der Browser auf einen Schlüssel/Wert-Dienst zugreifen, der einfache Schlüssel/Wert-Paare zurückgibt, um einem Anzeigenkäufer Informationen wie das verbleibende Kampagnenbudget zur Verfügung zu stellen. Gemäß dem Vorschlag für geschützte Zielgruppen muss dieser Server „keine Protokollierung auf Ereignisebene ausführen und keine anderen Nebenwirkungen aufgrund dieser Anfragen haben“.

Der Code für den Dienst „Protected Audience Key/Value“ ist jetzt in einem GitHub-Repository für die Privacy Sandbox verfügbar. Dieser Dienst kann von Chrome- und Android-Entwicklern verwendet werden. Aktuelle Informationen zum Status finden Sie im Blogpost zur Ankündigung. Weitere Informationen zum Protected Audience-Schlüssel/Wert-Dienst finden Sie in der API-Erläuterung und in der Erläuterung des Vertrauensmodells.

Für die ersten Tests wird das Modell „Nutzung eigener Server“ verwendet. Langfristig müssen Anbieter von Anzeigentechnologien die Open-Source-Schlüssel/Wert-Dienste von Protected Audience verwenden, die in vertrauenswürdigen Ausführungsumgebungen ausgeführt werden, um Echtzeitdaten abzurufen.

Damit das System ausreichend Zeit für Tests hat, gehen wir davon aus, dass die Open-Source-Schlüssel/Wert-Dienste oder TEEs erst nach der Einstellung von Drittanbieter-Cookies erforderlich sein werden. Wir werden Entwickler rechtzeitig darüber informieren, dass sie mit den Tests und der Einführung beginnen können, bevor diese Umstellung erfolgt.

Funktionsunterstützung erkennen

Prüfen Sie vor der Verwendung der API, ob sie vom Browser unterstützt und im Dokument verfügbar ist:

'joinAdInterestGroup' in navigator &&
  document.featurePolicy.allowsFeature('join-ad-interest-group') &&
  document.featurePolicy.allowsFeature('run-ad-auction') ?
  console.log('navigator.joinAdInterestGroup() is supported on this page') :
  console.log('navigator.joinAdInterestGroup() is not supported on this page');

Wie kann ich Protected Audience deaktivieren?

Sie können den Zugriff auf die Protected Audience API entweder als Websiteinhaber oder als einzelner Nutzer blockieren.

Wie können Websites den Zugriff steuern?

Für Protected Audience müssen Websites in Zukunft eine Berechtigungsrichtlinie festlegen, damit die Protected Audience-Funktionen verfügbar sind. So wird verhindert, dass beliebige Dritte die API ohne Wissen der Website verwenden können. Um die Tests während des ersten Ursprungstests zu vereinfachen, wird diese Anforderung standardmäßig aufgehoben. Betreiber von Websites, die die Funktion „Geschützte Zielgruppe“ während des Testzeitraums explizit deaktivieren möchten, können den Zugriff mithilfe der entsprechenden Berechtigungsrichtlinie blockieren.

Es gibt zwei Richtlinien für Protected Audience-Berechtigungen, die unabhängig voneinander festgelegt werden können:

  • join-ad-interest-group Aktiviert/deaktiviert die Funktion zum Hinzufügen eines Browsers zu Interessengruppen.
  • run-ad-auction aktiviert bzw. deaktiviert die Funktion zum Ausführen einer On-Device-Auktion

Der Zugriff auf APIs für geschützte Zielgruppen kann in Kontexten von selbst erhobenen Daten vollständig deaktiviert werden. Dazu geben Sie in einem HTTP-Antwortheader die folgende Berechtigungsrichtlinie an:

Permissions-Policy: join-ad-interest-group=(), run-ad-auction=()

Sie können die Verwendung der APIs in einem iframe deaktivieren, indem Sie dem iframe-Element das folgende allow-Attribut hinzufügen:

<iframe src="https://example.com" allow="join-ad-interest-group 'none'; run-ad-auction 'none'"></iframe>

Weitere Informationen finden Sie im Abschnitt Vorgeschlagene Richtlinie zu Berechtigungen für den ersten Ursprungstest der Protected Audience API.

Deaktivierung durch den Nutzer

Nutzer können den Zugriff auf die Protected Audience API und andere Privacy Sandbox-Funktionen mithilfe der folgenden Mechanismen blockieren:

  • Deaktivieren Sie die Privacy Sandbox-Testfunktionen in den Chrome-Einstellungen: Einstellungen > Sicherheit und Datenschutz > Privacy Sandbox. Sie können sie auch unter chrome://settings/adPrivacy aufrufen.
  • Deaktivieren Sie Drittanbieter-Cookies in den Chrome-Einstellungen: Einstellungen > Sicherheit und Datenschutz.
  • Legen Sie unter chrome://settings/cookies für Cookies und andere Websitedaten entweder „Drittanbieter-Cookies blockieren“ oder „Alle Cookies blockieren“ fest.
  • Verwenden Sie den Inkognitomodus.

In der Erläuterung zur Protected Audience API finden Sie weitere Informationen zu den Designelementen der API und dazu, wie die API datenschutzfreundliche Ziele erreichen soll.

Protected Audience-Worklets beheben

Ab Chrome Canary 98.0.4718.0 können Protected Audience-Worklets in den Chrome-Entwicklertools debuggt werden.

Im ersten Schritt legen Sie im Bereich Quellen im Bereich Ereignis-Listener-Breakpoints über eine neue Kategorie Breakpoints fest.

Screenshot der Entwicklertools in Chrome Canary, auf dem der Bereich „Event-Listener-Haltepunkte“ im Bereich „Quellen“ hervorgehoben ist.
   Unter „Anzeigenauktion-Worklet“ ist „Beginn der Gebotphase für Bieter“ ausgewählt.

Wenn ein Haltepunkt ausgelöst wird, wird die Ausführung vor der ersten Anweisung auf oberster Ebene des Worklet-Scripts pausiert. Sie können reguläre Unterbrechungen oder Schrittbefehle verwenden, um die Funktion für Gebote, Bewertungen und Berichte aufzurufen.

Live-Worklet-Scripts werden auch im Bereich „Threads“ angezeigt.

Screenshot der Entwicklertools in Chrome Canary, in dem der Bereich „Threads“ im Bereich „Quellen“ hervorgehoben ist. Das aktuelle Worklet-Script, das angehalten wurde, ist zu sehen.

Da einige Worklets parallel ausgeführt werden können, befinden sich möglicherweise mehrere Threads im Status „Pausiert“. Sie können über die Threadliste zwischen den Threads wechseln und sie bei Bedarf fortsetzen oder genauer untersuchen.

Protected Audience-Ereignisse beobachten

Im Bereich „Anwendung“ in Chrome DevTools können Sie sich Ereignisse für Interessengruppen und Auktionen für geschützte Zielgruppen ansehen.

Wenn Sie die Protected Audience-Demo-Shopping-Website in einem Browser mit aktivierter Protected Audience-Funktion aufrufen, werden in den DevTools Informationen zum Ereignis join angezeigt.

Der Bereich „App“ in den Chrome DevTools in Chrome Canary mit Informationen zu einem Ereignis, bei dem eine Protected Audience-Interessengruppe beigetreten ist.

Wenn Sie jetzt die Protected Audience-Demo-Publisher-Website in einem Browser mit aktivierter Protected Audience aufrufen, werden in den DevTools Informationen zu den Ereignissen bid und win angezeigt.

Der Bereich „DevTools-Anwendung“ in Chrome Canary mit Informationen zu Geboten und Gewinnereignissen bei Protected Audience-Auktionen.

Wie funktioniert die Protected Audience API?

In diesem Beispiel sieht sich ein Nutzer die Website eines Herstellers von individuell gefertigten Fahrrädern an und besucht später eine Nachrichtenwebsite. Dort wird ihm eine Anzeige für ein neues Fahrrad des Herstellers präsentiert.

1. Ein Nutzer besucht die Website eines Werbetreibenden

Abbildung einer Person, die in einem Browser auf ihrem Laptop die Website eines Herstellers von individuellen Fahrrädern besucht

Angenommen, ein Nutzer besucht die Website eines Herstellers von individuell gefertigten Fahrrädern (der Werbetreibende in diesem Beispiel) und verbringt einige Zeit auf der Produktseite für ein handgefertigtes Stahlfahrrad. Das bietet dem Fahrradhersteller eine Remarketing-Möglichkeit.

2. Der Browser des Nutzers wird aufgefordert, eine Interessengruppe hinzuzufügen.

Abbildung einer Person, die sich eine Website in einem Browser auf ihrem Laptop ansieht. Der JavaScript-Code „joinAdInterestGroup()“ wird im Browser ausgeführt.

Erläuterungsbereich:Browser erfassen Interessengruppen

Die Demand-Side-Platform (DSP) des Werbetreibenden (oder der Werbetreibende selbst) ruft navigator.joinAdInterestGroup() auf, um den Browser aufzufordern, der Liste der Gruppen, in denen der Browser Mitglied ist, eine Interessengruppe hinzuzufügen. In diesem Beispiel heißt die Gruppe custom-bikes und der Eigentümer ist dsp.example. Der Inhaber der Interessengruppe (in diesem Fall die DSP) ist ein Käufer in der in Schritt 4 beschriebenen Anzeigenauktion. Die Zugehörigkeit zu Interessengruppen wird vom Browser auf dem Gerät des Nutzers gespeichert und nicht an den Browseranbieter oder andere weitergegeben.

Für joinAdInterestGroup() ist die Berechtigung von Folgendem erforderlich:

  • Die besuchte Website
  • Der Inhaber der Interessengruppe

Beispiel: Es darf nicht möglich sein, dass malicious.example joinAdInterestGroup() mit dsp.example als Inhaber aufruft, ohne dass dsp.example dies erlaubt.

Berechtigung der besuchten Website

Gleicher Ursprung: Standardmäßig wird die Berechtigung für joinAdInterestGroup()-Aufrufe implizit von derselben Quelle wie die der besuchten Website erteilt, d.h. von derselben Quelle wie der Frame der obersten Ebene der aktuellen Seite. Websites können die join-ad-interest-group-Anweisung in einem Header für die Berechtigungsrichtlinie für Protected Audience verwenden, um joinAdInterestGroup()-Aufrufe zu deaktivieren.

Ursprungsübergreifend: Der Aufruf von joinAdInterestGroup() von Ursprungen, die sich von der aktuellen Seite unterscheiden, ist nur möglich, wenn für die besuchte Website eine Berechtigungsrichtlinie festgelegt ist, die Aufrufe von joinAdInterestGroup() aus ursprungsübergreifenden iframes zulässt.

Genehmigung des Inhabers der Interessengruppe

Die Berechtigung für den Inhaber der Interessengruppe wird implizit gewährt, indem joinAdInterestGroup() aus einem IFrame mit demselben Ursprung wie der des Inhabers der Interessengruppe aufgerufen wird. Ein dsp.example-Iframe kann beispielsweise joinAdInterestGroup() für Interessengruppen aufrufen, die zu dsp.example gehören.

Vorgeschlagen wird, dass joinAdInterestGroup() auf einer Seite oder in einem Iframe in der Domain des Inhabers ausgeführt oder an andere Domains delegiert werden kann, die über eine Liste an einer .well-known-URL angegeben werden.

navigator.joinAdInterestGroup() verwenden

Hier ein Beispiel für die Verwendung der API:

const interestGroup = {
  owner: 'https://dsp.example',
  name: 'custom-bikes',
  biddingLogicUrl: ...,
  biddingWasmHelperUrl: ...,
  dailyUpdateUrl: ...,
  trustedBiddingSignalsUrl: ...,
  trustedBiddingSignalsKeys: ['key1', 'key2'],
  userBiddingSignals: {...},
  ads: [bikeAd1, bikeAd2, bikeAd3],
  adComponents: [customBike1, customBike2, bikePedal, bikeFrame1, bikeFrame2],
};

navigator.joinAdInterestGroup(interestGroup, 7 * kSecsPerDay);

Das an die Funktion übergebene interestGroup-Objekt darf maximal 50 KiB groß sein. Andernfalls schlägt der Aufruf fehl. Der zweite Parameter gibt die Dauer der Interessengruppe an, die auf 30 Tage begrenzt ist. Bei aufeinanderfolgenden Aufrufen werden zuvor gespeicherte Werte überschrieben.

Eigenschaften von Interessengruppen

Attribut Erforderlich Beispiel Rolle
owner Erforderlich 'https://dsp.example' Herkunft des Inhabers der Interessengruppe.
name Erforderlich 'custom-bikes' Name der Interessengruppe.
biddingLogicUrl** Optional* 'https://dsp.example/bid/custom-bikes/bid.js' URL für das JavaScript für Gebote, das im Worklet ausgeführt wird.
biddingWasmHelperUrl** Optional* 'https://dsp.example/bid/custom-bikes/bid.wasm' URL für WebAssembly-Code, der von biddingLogicUrl aus ausgeführt wird.
dailyUpdateUrl** Optional 'https://dsp.example/bid/custom-bikes/update' URL, die JSON zum Aktualisieren von Interessengruppenattributen zurückgibt. Weitere Informationen finden Sie unter Interessengruppe aktualisieren.
trustedBiddingSignalsUrl** Optional 'https://dsp.example/trusted/bidding-signals' Basis-URL für Schlüssel/Wert-Anfragen an den vertrauenswürdigen Server des Bieters.
trustedBiddingSignalsKeys Optional ['key1', 'key2' ...] Schlüssel für Anfragen an den vertrauenswürdigen Key-Value-Server.
userBiddingSignals Optional {...} Zusätzliche Metadaten, die der Inhaber bei Geboten verwenden kann.
ads Optional* [bikeAd1, bikeAd2, bikeAd3] Anzeigen, die für diese Interessengruppe ausgeliefert werden könnten.
adComponents Optional [customBike1, customBike2, bikePedal, bikeFrame1, bikeFrame2] Komponenten für Anzeigen aus mehreren Elementen.

* Alle Properties sind optional, mit Ausnahme von owner und name. Die Properties biddingLogicUrl und ads sind optional, aber erforderlich, um an einer Auktion teilzunehmen. Es kann Fälle geben, in denen eine Interessengruppe ohne diese Properties erstellt werden soll. So kann ein Eigentümer einer Interessengruppe beispielsweise einen Browser einer Interessengruppe für eine Kampagne hinzufügen, die noch nicht aktiv ist, oder für eine andere zukünftige Verwendung. Es kann auch sein, dass das Werbebudget vorübergehend aufgebraucht ist.

** Die URLs biddingLogicUrl, biddingWasmHelperUrl, dailyUpdateUrl und trustedBiddingSignalsUrl müssen denselben Ursprung wie der Inhaber haben. Für die URLs ads und adComponents gilt keine solche Einschränkung.

Attribute für Interessengruppen aktualisieren

dailyUpdateUrl gibt einen Webserver an, der JSON-Objekte mit Interessengruppeneigenschaften zurückgibt, die dem Interessengruppenobjekt entsprechen, das an navigator.joinAdInterestGroup() übergeben wird. So kann der Inhaber der Gruppe die Attribute der Interessengruppe regelmäßig aktualisieren. In der aktuellen Implementierung können die folgenden Attribute geändert werden:

  • biddingLogicUrl
  • biddingWasmHelperUrl
  • trustedBiddingSignalsUrl
  • trustedBiddingSignalsKeys
  • ads
  • priority

Felder, die nicht in der JSON-Datei angegeben sind, werden nicht überschrieben. Nur die in der JSON-Datei angegebenen Felder werden aktualisiert. Wenn Sie navigator.joinAdInterestGroup() aufrufen, werden alle vorhandenen Interessengruppen überschrieben.

Updates erfolgen auf Best-Effort-Basis und können unter den folgenden Bedingungen fehlschlagen:

  • Zeitlimit für Netzwerkanfragen (aktuell 30 Sekunden).
  • Sonstige Netzwerkfehler.
  • JSON-Parsing fehlgeschlagen.

Updates können auch abgebrochen werden, wenn zu viel Zeit in Folge für das Aktualisieren aufgewendet wurde. Dies hat jedoch keine Auswirkungen auf die Ratenbeschränkung für abgebrochene (verbleibende) Updates. Die Aktualisierung ist auf maximal eine pro Tag beschränkt. Aktualisierungen, die aufgrund von Netzwerkfehlern fehlschlagen, werden nach einer Stunde noch einmal versucht. Aktualisierungen, die aufgrund einer Unterbrechung der Internetverbindung fehlschlagen, werden sofort nach der Wiederherstellung der Verbindung noch einmal versucht.

Manuelle Updates

Aktualisierungen von Interessengruppen, die dem Ursprung des aktuellen Frames gehören, können manuell über navigator.updateAdInterestGroups() ausgelöst werden. Durch die Ratenbegrenzung wird verhindert, dass Updates zu häufig erfolgen: Wiederholte Aufrufe von navigator.updateAdInterestGroups() haben keine Auswirkungen, bis der Zeitraum für die Ratenbegrenzung (derzeit ein Tag) abgelaufen ist. Das Limit wird zurückgesetzt, wenn navigator.joinAdInterestGroup() noch einmal für dieselbe Interessengruppe owner und name aufgerufen wird.

Automatische Updates

Alle für eine Auktion geladenen Interessengruppen werden nach Abschluss der Auktion automatisch aktualisiert. Dabei gelten dieselben Preislimits wie bei manuellen Aktualisierungen. Für jeden Inhaber mit mindestens einer Interessengruppe, die an einer Auktion teilnimmt, wird navigator.updateAdInterestGroups() so aufgerufen, als würde er von einem Iframe aufgerufen, dessen Ursprung mit diesem Inhaber übereinstimmt.

Anzeigen für eine Interessengruppe angeben

ads- und adComponents-Objekte enthalten eine URL für ein Creative und optional beliebige Metadaten, die bei der Gebotsabgabe verwendet werden können. Beispiel:

{
  renderUrl: 'https://cdn.example/.../bikeAd1.html',
  metadata: bikeAd1metadata // optional
}

Wie geben Käufer Gebote ab?

Das Skript unter biddingLogicUrl, das vom Inhaber einer Interessengruppe bereitgestellt wird, muss eine generateBid()-Funktion enthalten. Wenn ein Verkäufer von Anzeigenflächen navigator.runAdAuction() aufruft, wird die Funktion generatedBid() einmal für jede Interessengruppe aufgerufen, deren Mitglied der Browser ist, wenn der Inhaber der Interessengruppe zum Gebotsabgeben eingeladen wird. Mit anderen Worten: generateBid() wird einmal für jede Anzeigenvorlage aufgerufen. Der Verkäufer gibt eine decisionLogicUrl-Eigenschaft für den Auktionskonfigurationsparameter an, der an navigator.runAdAuction() übergeben wird. Der Code an dieser URL muss eine scoreAd()-Funktion enthalten, die für jeden Bieter in der Auktion ausgeführt wird, um die von generateBid() zurückgegebenen Gebote zu bewerten.

Das Script unter biddingLogicUrl, das von einem Käufer von Werbeflächen bereitgestellt wird, muss eine generateBid()-Funktion enthalten. Diese Funktion wird einmal für jede ausgewählte Anzeige aufgerufen. runAdAuction() überprüft jede Anzeige zusammen mit dem zugehörigen Gebot und den zugehörigen Metadaten einzeln und ordnet der Anzeige dann einen numerischen Wünschbarkeitsfaktor zu.

generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals) {
  ...
  return {
    ad: adObject,
    bid: bidValue,
    render: renderUrl,
    adComponents: [adComponentRenderUrl1, ...]
   };
}

generateBid() verwendet die folgenden Argumente:

  • interestGroup
    Das Objekt, das vom Anzeigenkäufer an joinAdInterestGroup() übergeben wird. (Die Interessengruppe kann über dailyUpdateUrl aktualisiert werden.)

  • auctionSignals
    Ein Attribut des Arguments auction config, das vom Werbeflächenverkäufer an navigator.runAdAuction() übergeben wird. Sie enthalten Informationen zum Seitenkontext (z. B. Anzeigengröße und Publisher-ID), zur Auktionsart (Erst- oder Zweitpreis) und andere Metadaten.

  • perBuyerSignals
    Wie bei auctionSignals ist dies ein Attribut des Gebotskonfigurationsarguments, das vom Verkäufer an navigator.runAdAuction() übergeben wird. So können Kontextsignale vom Server des Käufers zur Seite gesendet werden, wenn der Verkäufer eine SSP ist, die einen Echtzeitgebotsaufruf an die Käuferserver ausführt und die Antwort zurückgibt, oder wenn die Publisher-Seite direkt den Server des Käufers kontaktiert. In diesem Fall kann der Käufer zum Schutz vor Manipulationen eine kryptografische Signatur dieser Signale in generateBid() prüfen.

  • trustedBiddingSignals
    Ein Objekt, dessen Schlüssel die trustedBiddingSignalsKeys für die Interessengruppe sind und dessen Werte in der trustedBiddingSignals-Anfrage zurückgegeben werden.

  • browserSignals
    Ein vom Browser erstelltes Objekt, das Informationen zum Seitenkontext (z. B. die hostname der aktuellen Seite, die der Verkäufer andernfalls fälschen könnte) und Daten für die Interessengruppe selbst enthalten kann (z. B. einen Eintrag dazu, wann die Gruppe zuvor eine Auktion gewonnen hat, um eine On-Device-Frequenzbeschränkung zu ermöglichen).

Das browserSignals-Objekt hat die folgenden Eigenschaften:

{
  topWindowHostname: 'publisher.example',
  seller: 'https://ssp.example',
  joinCount: 3,
  bidCount: 17,
  prevWins: [[time1,ad1],[time2,ad2],...],
  wasmHelper: ... /* WebAssembly.Module object based on interest group's biddingWasmHelperUrl. */
  dataVersion: 1, /* Data-Version value from the buyer's Key/Value service response(s). */
}

Für die Berechnung eines bid-Werts können im Code von generateBid() die Eigenschaften der Parameter der Funktion verwendet werden. Beispiel:

function generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals) {
  return {
    ...
    bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
    ...
  }
}

generateBid() gibt ein Objekt mit vier Eigenschaften zurück:

  • ad
    Beliebige Metadaten zur Anzeige, z. B. Informationen, die der Verkäufer über dieses Gebot oder Anzeigen-Creative erhalten soll. Der Verkäufer nutzt diese Informationen bei der Auktion und bei der Entscheidung für ein Creative. Der Verkäufer verwendet diese Informationen in seiner Auktions- und Entscheidungslogik.

  • bid
    Ein numerisches Gebot, das in die Auktion eingeht. Der Verkäufer muss Gebote von verschiedenen Käufern vergleichen können. Daher müssen Gebote in einer vom Verkäufer ausgewählten Einheit angegeben werden (z. B. „€ pro tausend“). Wenn das Gebot null oder negativ ist, nimmt diese Interessengruppe nicht an der Auktion des Verkäufers teil. Mit diesem Mechanismus kann der Käufer Werbetreibendenregeln für die Auslieferung seiner Anzeigen implementieren.

  • render
    Eine URL oder eine Liste von URLs, die zum Rendern des Creatives verwendet werden, wenn dieses Gebot die Auktion gewinnt. Weitere Informationen finden Sie in der API-Erläuterung unter Anzeigen aus mehreren Elementen. Der Wert muss mit dem renderUrl einer der für die Interessengruppe definierten Anzeigen übereinstimmen.

  • adComponents
    Optionale Liste mit bis zu 20 Komponenten für Anzeigen, die aus mehreren Teilen bestehen, die aus der Property adComponents des Arguments „Interessengruppe“ übernommen und an navigator.joinAdInterestGroup() übergeben werden.

Browser auffordern, eine Interessengruppe zu verlassen

Der Inhaber der Interessengruppe kann beantragen, dass ein Browser aus einer Interessengruppe entfernt wird. Mit anderen Worten: Der Browser wird aufgefordert, die Interessengruppe aus der Liste der Gruppen zu entfernen, in denen er Mitglied ist.

navigator.leaveAdInterestGroup({
  owner: 'https://dsp.example',
  name: 'custom-bikes'
});

Wenn ein Nutzer zur Website zurückkehrt, auf der der Browser aufgefordert wurde, eine Interessengruppe hinzuzufügen, kann der Inhaber der Interessengruppe die Funktion navigator.leaveAdInterestGroup() aufrufen, um den Browser aufzufordern, die Interessengruppe zu entfernen. Der Code einer Anzeige kann diese Funktion auch für die Interessengruppe aufrufen.

3. Der Nutzer besucht eine Website, auf der Anzeigenflächen verkauft werden.

Abbildung einer Person, die eine Nachrichtenwebsite in einem Browser auf ihrem Laptop besucht. Auf der Website gibt es einen leeren Anzeigenblock.

Später besucht der Nutzer eine Website, auf der Anzeigenflächen verkauft werden, in diesem Beispiel eine Nachrichtenwebsite. Die Website hat Anzeigeninventar, das programmatisch mithilfe von Echtzeitgeboten verkauft wird.

4. Eine Anzeigenauktion wird im Browser ausgeführt

Abbildung einer Person, die sich eine Nachrichtenwebsite in einem Browser auf ihrem Laptop ansieht. Es findet eine Anzeigenauktion mit der Protected Audience API statt.

Erläuterungsbereich:On-Device-Auktionen für Verkäufer

Die Anzeigenauktion wird wahrscheinlich vom SSP des Publishers oder vom Publisher selbst durchgeführt. Ziel der Auktion ist es, die am besten geeignete Anzeige für einen einzelnen verfügbaren Anzeigenblock auf der aktuellen Seite auszuwählen. Bei der Auktion werden die Interessengruppen berücksichtigt, zu denen der Browser gehört, sowie Daten von Käufern und Verkäufern von Anzeigenflächen aus den Schlüssel/Wert-Diensten.

Der Anzeigenflächenverkäufer sendet eine Anfrage an den Browser des Nutzers, um eine Anzeigenauktion zu starten, indem er navigator.runAdAuction() aufruft.

Beispiel:

const auctionConfig = {
  seller: 'https://ssp.example',
  decisionLogicUrl: ...,
  trustedScoringSignalsUrl: ...,
  interestGroupBuyers: ['https://dsp.example', 'https://buyer2.example', ...],
  auctionSignals: {...},
  sellerSignals: {...},
  sellerTimeout: 100,
  perBuyerSignals: {
    'https://dsp.example': {...},
    'https://another-buyer.example': {...},
    ...
  },
  perBuyerTimeouts: {
    'https://dsp.example': 50,
    'https://another-buyer.example': 200,
    '*': 150,
    ...
  },
  componentAuctions: [
    {
      'seller': 'https://some-other-ssp.example',
      'decisionLogicUrl': ...,
      ...
    },
    ...
  ]
};

const auctionResultPromise = navigator.runAdAuction(auctionConfig);

runAdAuction() gibt ein Versprechen zurück, das zu einer URN (urn:uuid:<something>) führt, die das Ergebnis der Anzeigenauktion darstellt. Diese kann nur vom Browser decodiert werden, wenn sie zum Rendern an einen begrenzten Frame übergeben wird. Auf der Publisher-Seite kann die Gewinneranzeige nicht geprüft werden.

Im decisionLogicUrl-Script wird jede einzelne Anzeige zusammen mit dem zugehörigen Gebot und den zugehörigen Metadaten einzeln berücksichtigt und dann eine numerische Wünschbarkeitsbewertung zugewiesen.

auctionConfig Unterkünfte

Attribut Erforderlich Beispiel Rolle
seller Erforderlich 'https://ssp.example' Herkunft des Verkäufers.
decisionLogicUrl Erforderlich 'https://ssp.example/auction-decision-logic.js' URL für das JavaScript des Auktions-Worklets.
trustedScoringSignalsUrl Optional 'https://ssp.example/scoring-signals' URL des vertrauenswürdigen Servers des Verkäufers.
interestGroupBuyers* Erforderlich ['https://dsp.example', 'https://buyer2.example', ...] Herkunft aller Inhaber von Interessengruppen, die aufgefordert wurden, in der Auktion Gebote abzugeben.
auctionSignals Optional {...} Verkäuferinformationen zum Seitenkontext, zum Auktionstyp usw.
sellerSignals Optional {...} Informationen, die auf den Einstellungen des Publishers basieren, z. B. eine kontextbezogene Anzeigenanfrage
sellerTimeout Optional 100 Maximale Laufzeit (in ms) des scoreAd()-Scripts des Verkäufers.
perBuyerSignals Optional {'https://dsp.example': {...},
  'https://another-buyer.example': {...},
...}
Kontextbezogene Signale zur Seite für jeden einzelnen Käufer von seinem Server.
perBuyerTimeouts Optional 50 Maximale Laufzeit (in ms) der generateBid()-Scripts eines bestimmten Käufers.
componentAuctions Optional [{'seller': 'https://www.some-other-ssp.com',
  'decisionLogicUrl': ..., ...},
  ...]
Zusätzliche Konfigurationen für Komponentenauktionen

* Der Verkäufer kann interestGroupBuyers: '*' angeben, um allen Interessengruppen das Abgeben von Geboten zu ermöglichen. Anzeigen werden dann anhand anderer Kriterien als der Aufnahme des Eigentümers der Interessengruppe akzeptiert oder abgelehnt. So kann der Verkäufer beispielsweise Creatives prüfen, um die Einhaltung seiner Richtlinien zu bestätigen.

** additionalBids wird in der aktuellen Implementierung von Protected Audience nicht unterstützt. Weitere Informationen finden Sie im Hilfeartikel zu geschützten Zielgruppen im Abschnitt Auktionsteilnehmer.

Wie werden Anzeigen ausgewählt?

Der Code bei decisionLogicUrl (eines Attributs des Auktionskonfiguratiobjekts, das an runAdAuction() übergeben wird) muss eine scoreAd()-Funktion enthalten. Dieser Vorgang wird einmal für jede Anzeige ausgeführt, um ihre Attraktivität zu bestimmen.

scoreAd(adMetadata, bid, auctionConfig, trustedScoringSignals, browserSignals) {
  ...
  return desirabilityScoreForThisAd;
}

scoreAd() verwendet die folgenden Argumente:

  • adMetadata
    Benutzerdefinierte Metadaten, die vom Käufer bereitgestellt werden.
  • bid
    Ein numerischer Gebotswert.
  • auctionConfig
    Das Auktionskonfigurationsobjekt, das an navigator.runAdAuction() übergeben wird.
  • trustedScoringSignals
    Werte, die zum Zeitpunkt der Auktion vom vertrauenswürdigen Server des Verkäufers abgerufen werden und die Meinung des Verkäufers zur Anzeige widerspiegeln.
  • browserSignals
    Ein vom Browser erstelltes Objekt mit Informationen, die dem Browser bekannt sind und die vom Auktions-Script des Verkäufers möglicherweise überprüft werden sollen:
{
  topWindowHostname: 'publisher.example',
  interestGroupOwner: 'https://dsp.example',
  renderUrl: 'https://cdn.example/render',
  adComponents: ['https://cdn.com/ad-component-1', ...],
  biddingDurationMsec: 12,
  dataVersion: 1 /* Data-Version value from the seller's Key/Value service response. */
}

Bevor eine Auktion beginnt, sucht der Verkäufer die beste kontextbezogene Anzeige für die verfügbare Anzeigenfläche. Ein Teil der scoreAd()-Logik besteht darin, alle Anzeigen abzulehnen, die den kontextbezogenen Gewinner nicht übertreffen können.

5. Der Verkäufer und die teilnehmenden Käufer erhalten Echtzeitdaten vom Schlüssel/Wert-Dienst.

Abbildung einer Person, die sich eine Nachrichtenwebsite in einem Browser auf ihrem Laptop ansieht. Es findet eine Anzeigenauktion mit der Protected Audience API statt, bei der ein Teilnehmer Daten vom Schlüssel/Wert-Dienst erhält.

Erläuterungsbereich:Echtzeitdaten aus dem Schlüssel/Wert-Dienst für geschützte Zielgruppen abrufen

Während einer Anzeigenauktion kann der Anzeigenflächenverkäufer Echtzeitdaten zu bestimmten Creatives abrufen. Dazu sendet er eine Anfrage an einen Schlüssel/Wert-Dienst und verwendet dabei die trustedScoringSignalsUrl-Eigenschaft des Arguments Auktionskonfiguration, das an navigator.runAdAuction() übergeben wird, zusammen mit den Schlüsseln aus den renderUrl-Eigenschaften aller Einträge in den Feldern ads und adComponents aller Interessengruppen in der Auktion.

Ebenso kann ein Käufer von Anzeigenflächen Echtzeitdaten vom Schlüssel/Wert-Dienst anfordern, indem er die Eigenschaften trustedBiddingSignalsUrl und trustedBiddingSignalsKeys des an navigator.joinAdInterestGroup() übergebenen Interessengruppenarguments verwendet.

Wenn runAdAuction() aufgerufen wird, stellt der Browser eine Anfrage an den vertrauenswürdigen Server jedes Anzeigenkäufers. Die URL für die Anfrage könnte so aussehen:

https://kv-service.example/getvalues?hostname=publisher.example&keys=key1,key2
  • Die Basis-URL stammt von trustedBiddingSignalsUrl.
  • Die hostname wird vom Browser bereitgestellt.
  • Der Wert keys wird aus trustedBiddingSignalsKeys übernommen.

Die Antwort auf diese Anfrage ist ein JSON-Objekt mit Werten für jeden der Schlüssel.

6. Die Gewinneranzeige wird ausgeliefert.

Abbildung einer Person, die sich eine Nachrichtenwebsite in einem Browser auf ihrem Laptop ansieht. Eine Anzeige für ein Fahrrad (20% Rabatt) wird mit einem Schloss darüber angezeigt, um zu zeigen, dass die Anzeige in einem abgegrenzten Frame präsentiert wird.

Erläuterungsbereich: Browser rendern die Gewinneranzeige

Wie bereits beschrieben, wird das von runAdAuction() zurückgegebene Versprechen in eine URN aufgelöst, die zum Rendern an einen begrenzten Frame übergeben wird. Auf der Website wird dann die ausgewählte Anzeige angezeigt.

7. Das Auktionsergebnis wird erfasst

Erläuterung:Berichte auf Ereignisebene (vorerst)

Ergebnis der Verkäuferberichte

Erläuterungsbereich: Verkäuferberichte zu Rendern

Das JavaScript des Verkäufers unter decisionLogicUrl (das auch scoreAd() enthält) kann eine reportResult()-Funktion enthalten, um das Auktionsergebnis zu melden.

reportResult(auctionConfig, browserSignals) {
  ...
  return signalsForWinner;
}

Diese Funktion wird mit den folgenden Argumenten aufgerufen:

  • auctionConfig
    Das Auktionskonfigurationsobjekt, das an navigator.runAdAuction() übergeben wird.

  • browserSignals
    Ein vom Browser erstelltes Objekt mit Informationen zur Auktion. Beispiel:

    {
      'topWindowHostname': 'publisher.example',
      'interestGroupOwner': 'https://dsp.example',
      'renderUrl': 'https://cdn.example/url-of-winning-creative.wbn',
      'bid:' <bidValue>,
      'desirability': <winningAdScore>
    }
    

Der Rückgabewert dieser Funktion wird als sellerSignals-Argument für die reportWin()-Funktion des Gewinners verwendet.

Ergebnis des Berichts zum erfolgreichen Bieter

Erläuterung:Berichte für Käufer zu Render- und Anzeigenereignissen

Das JavaScript des Gewinners (das auch generateBid() bereitgestellt hat) kann eine reportWin()-Funktion enthalten, um das Auktionsergebnis zu melden.

reportWin(auctionSignals, perBuyerSignals, sellerSignals, browserSignals) {
  ...
}

Diese Funktion erhält folgende Argumente:

  • auctionSignals und perBuyerSignals
    Dieselben Werte, die für den Gewinner an generateBid() übergeben wurden.
  • sellerSignals
    Der Rückgabewert reportResult(), der dem Verkäufer die Möglichkeit gibt, Informationen an den Käufer weiterzugeben.
  • browserSignals
    Ein vom Browser erstelltes Objekt mit Informationen zur Auktion. Beispiel:

    {
      'topWindowHostname': 'publisher.example',
      'seller': 'https://ssp.example',
      'interestGroupOwner': 'https://dsp.example',
      'interestGroupName': 'custom-bikes',
      'renderUrl': 'https://cdn.example/winning-creative.wbn',
      'bid:' <bidValue>
    }
    

Implementierung von Berichten zu vorübergehenden Verlusten/Gewinnen

In Chrome sind vorübergehend zwei Methoden für Auktionsberichte verfügbar:

  • forDebuggingOnly.reportAdAuctionLoss()
  • forDebuggingOnly.reportAdAuctionWin()

Diese Methoden nehmen jeweils ein einziges Argument an: eine URL, die nach Abschluss der Auktion abgerufen werden soll. Sie können sowohl in scoreAd() als auch in generateBid() mit verschiedenen URL-Argumenten mehrmals aufgerufen werden.

Chrome sendet nur dann Berichte zu verlorenen oder gewonnenen Geboten, wenn eine Auktion abgeschlossen wird. Wenn eine Auktion abgebrochen wird (z. B. aufgrund einer neuen Navigation), werden keine Berichte erstellt.

Diese Methoden sind in Chrome standardmäßig verfügbar. Damit Sie die Methoden testen können, müssen Sie alle APIs für den Datenschutz bei Werbung unter chrome://settings/adPrivacy aktivieren. Wenn Sie Chrome mit Befehlszeilen-Flags ausführen, um Protected Audience zu aktivieren, müssen Sie die Methoden explizit aktivieren, indem Sie das Flag BiddingAndScoringDebugReportingAPI hinzufügen. Wenn das Flag nicht aktiviert ist, sind die Methoden zwar verfügbar, führen aber nichts aus.

8. Ein Anzeigenklick wird erfasst

Abbildung, in der eine Person auf eine Anzeige für ein Fahrrad klickt, die sich in einem abgegrenzten Frame auf einer Nachrichtenwebsite befindet. Die Berichtsdaten werden an Verkäufer und Käufer gesendet.

Ein Klick auf eine Anzeige, die in einem abgegrenzten Frame gerendert wird, wird erfasst. Weitere Informationen dazu finden Sie unter Berichte zu Anzeigen in abgegrenzten Frames.



Im folgenden Diagramm sind die einzelnen Phasen einer Protected Audience-Auktion dargestellt:

Abbildung mit einem Überblick über die einzelnen Phasen einer Protected Audience-Anzeigenauktion


Was ist der Unterschied zwischen Protected Audience und TURTLEDOVE?

Protected Audience ist der erste Test, der in Chromium innerhalb der TURTLEDOVE-Angebotsfamilie implementiert wird.

Protected Audience folgt den allgemeinen Prinzipien von TURTLEDOVE. Bei einigen Onlineanzeigen wurde eine Anzeige einer potenziell interessierten Person präsentiert, die zuvor mit dem Werbetreibenden oder dem Werbenetzwerk interagiert hat. Bisher wurde dies dadurch erreicht, dass Werbetreibende eine bestimmte Person erkannten, während sie im Web surfte. Dies ist ein zentrales Datenschutzproblem im heutigen Web.

Das TURTLEDOVE-Projekt zielt darauf ab, eine neue API für diesen Anwendungsfall anzubieten und gleichzeitig einige wichtige Fortschritte beim Datenschutz zu erzielen:

  • Der Browser, nicht der Werbetreibende, enthält die Informationen dazu, woran der Werbetreibende glaubt, dass eine Person interessiert ist.
  • Werbetreibende können Anzeigen basierend auf einem Interesse ausliefern, dieses Interesse jedoch nicht mit anderen Informationen über eine Person kombinieren, insbesondere nicht mit Informationen dazu, wer die Person ist oder welche Seite sie besucht.

Protected Audience wurde aus TURTLEDOVE und einer Reihe von Vorschlägen für Änderungen entwickelt, um die API für die Entwickler, die sie verwenden, besser zu machen:

  • In SPARROW: Criteo schlug vor, ein Dienstmodell („Gatekeeper“) hinzuzufügen, das in einer Trusted Execution Environment (TEE) ausgeführt wird. Bei der Funktion „Geschützte Zielgruppe“ werden TEEs für die Echtzeitdatenabfrage und aggregierte Berichte nur eingeschränkt verwendet.
  • In den Vorschlägen von NextRoll (TERN) und Magnite (PARRROT) wurden die verschiedenen Rollen von Käufern und Verkäufern in der On-Device-Auktion beschrieben. Der Ablauf für Gebote und Bewertungen bei Protected Audience basiert auf dieser Arbeit.
  • Durch die ergebnisbasierten und produktspezifischen TURTLEDOVE-Änderungen von RTB House wurden das Anonymitätsmodell und die Personalisierungsfunktionen der On-Device-Auktion verbessert.
  • PARAKEET ist der Vorschlag von Microsoft für einen TURTLEDOVE-ähnlichen Anzeigendienst, der auf einem Proxyserver basiert, der in einem TEE zwischen dem Browser und den AdTech-Anbietern ausgeführt wird, um Anzeigenanfragen zu anonymisieren und Datenschutzeigenschaften durchzusetzen. Bei Protected Audience wird dieses Proxy-Modell nicht verwendet. Wir arbeiten daran, die JavaScript APIs für PARAKEET und Protected Audience anzugleichen, um in Zukunft die besten Funktionen beider Vorschläge zu kombinieren.

Mit Protected Audience kann das Werbenetzwerk einer Website noch nicht daran gehindert werden, zu erfahren, welche Anzeigen eine Person sieht. Wir werden die API voraussichtlich im Laufe der Zeit so ändern, dass sie datenschutzfreundlicher wird.

Welche Browserkonfiguration ist verfügbar?

Nutzer können ihre Teilnahme an Privacy Sandbox-Tests in Chrome anpassen, indem sie die Einstellung auf chrome://settings/adPrivacy aktivieren oder deaktivieren. Während der ersten Tests können Nutzer diese allgemeine Privacy Sandbox-Einstellung verwenden, um die Funktion „Geschützte Zielgruppe“ zu deaktivieren. In Chrome sollen Nutzer künftig die Liste der Interessengruppen einsehen und verwalten können, denen sie auf den von ihnen besuchten Websites hinzugefügt wurden. Wie bei den Privacy Sandbox-Technologien selbst können sich die Nutzereinstellungen auch aufgrund von Feedback von Nutzern, Regulierungsbehörden und anderen entwickeln.

Wir werden die verfügbaren Einstellungen in Chrome im Laufe der Entwicklung des Protected Audience-Vorschlags auf Grundlage von Tests und Feedback aktualisieren. Künftig werden wir detailliertere Einstellungen zur Verwaltung von Protected Audience und zugehörigen Daten anbieten.

API-Caller können nicht auf die Gruppenmitgliedschaft zugreifen, wenn Nutzer im Inkognitomodus surfen. Die Mitgliedschaft wird entfernt, wenn Nutzer ihre Websitedaten löschen.



Feedback geben und erhalten

Support anfordern

So stellen Sie eine Frage zu Ihrer Implementierung, zur Demo oder zur Dokumentation:

Bei Fehlern und Problemen mit der Implementierung der Protected Audience API in Chrome: * Bestehende Probleme mit der API ansehen * Unter crbug.com/new ein neues Problem melden

Immer auf dem neuesten Stand bleiben

Weitere Informationen


Foto von Ray Hennessy bei Unsplash.