Antwort erstellen

Nachdem Ihre Anwendung die Gebotsanfrage von Google verarbeitet hat, muss sie eine Antwort erstellen und senden. In dieser Anleitung wird beschrieben, wie Sie Ihre Anwendung codieren, um die Antwort zu erstellen.

Gebotsantwort erstellen

Wenn Sie ein Gebot abgeben möchten, muss Ihre Bidding-Anwendung auf eine Gebotsanfrage mit einem BidResponse antworten, der ein Bid im konfigurierten Format enthält. Wenn Sie das JSON-Format verwenden, muss in Ihrer Antwort der Header Content-Type auf application/json; charset=utf-8 festgelegt und der JSON-BidResponse in den Text aufgenommen werden. Wenn Sie das Protobuf-Format verwenden, muss Ihre Anwendung den Content-Type-Header auf application/octet-stream festlegen und die serialisierte BidResponse in den Textkörper einfügen.

Um ein BidResponse für das Protobuf-Format zu erstellen und zu serialisieren, müssen Sie Protobuf-Bibliotheken basierend auf openrtb.proto und openrtb-adx.proto generieren und verwenden. Diese implementieren die standardmäßigen OpenRTB-BidResponse-Felder bzw. Google-Erweiterungen in Protobuf. Sie finden sie unter Protos & Reference Data.

Wenn Sie kein Gebot für eine Impression abgeben möchten, müssen Sie eine leere HTTP‑204‑Antwort zurückgeben. Ihre Anwendung muss auf jede BidRequest eine Antwort zurückgeben. Zeitüberschreitungen und Antworten, die nicht geparst werden können, gelten als Fehler. Google drosselt Bieter mit hohen Fehlerraten.

Creative-ID

Mit Ihrem BidResponse wird ein Creative über das Feld BidResponse.seatbid.bid.crid angegeben (Limit von 128 Byte). Auch ähnliche Creatives müssen eindeutige Werte für dieses Feld haben, wenn sie sich in wesentlichen Merkmalen unterscheiden, z. B. in Größe, deklarierter URL, Creative-Attributen und Anbietertypen. Das bedeutet, dass Sie zwei Anzeigen, die

  • anders aussehen oder sich anders verhalten.
  • In verschiedene Bilder rendern
  • Die Anzeigen werden auf unterschiedliche Weise gerendert (z. B. besteht eine Anzeige aus einem Bild, die andere aus einem Video).

Beim Entwerfen Ihrer Anwendung sollten Sie sich für eine systematische Methode zum Generieren von Kennungen entscheiden, die für die Arten von Creatives geeignet ist, die Sie einreichen möchten.

Anzeigenattribute

Google empfiehlt, Creative-Attribute zu deklarieren, um die Merkmale und die Ausrichtung Ihrer Anzeige zu beschreiben. Verwenden Sie dazu entweder eine Kombination aus BidResponse.seatbid.bid.apis und BidResponse.seatbid.bid.attr oder die Erweiterung BidResponse.seatbid.bid.ext.attribute. Im Folgenden wird beschrieben, wie Sie Attribute deklarieren:

  • VPAID
    Legen Sie BidResponse.seatbid.bid.apis auf VPAID_1 oder VPAID_2 fest. Für das JSON-Format kann dies auf 1 bzw. 2 festgelegt werden.
  • MRAID
    Legen Sie für BidResponse.seatbid.bid.apis den Wert MRAID_1 oder 3 für das JSON-Format fest.
  • SIZELESS
    Legen Sie für BidResponse.seatbid.bid.attr den Wert RESPONSIVE oder 18 für das JSON-Format fest.
  • PLAYABLE
    Dies wird durch Festlegen von BidResponse.seatbid.bid.attr auf USER_INTERACTIVE oder 13 für das JSON-Format angegeben.

In der Creatives-Ressource wird erläutert, wie Sie Feedback zu den erkannten Eigenschaften Ihrer Creatives erhalten.

Open Bidding-Felder

Gebotsantworten, die von Anzeigenplattformen und Netzwerkbietern gesendet werden, die Open Bidding aktiviert haben, ähneln denen von Authorized Buyers-Nutzern, die das standardmäßige Echtzeitgebotsverfahren nutzen. Open Bidding-Kunden können eine kleine Anzahl zusätzlicher Felder angeben und einige vorhandene Felder können alternativ verwendet werden. Dazu gehören:

Feld Details
BidResponse.imp.pmp.deals.id

Die Deal-ID aus dem Namespace der Exchange, die diesem Gebot zugeordnet und Publishern gemeldet wird.

BidResponse.seatbid.bid.ext.exchange_deal_type

Der Dealtyp, der Publishern gemeldet wird. Er wirkt sich darauf aus, wie der Deal in der Auktion behandelt wird.

BidResponse.seatbid.bid.ext.third_party_buyer_token Token zur Identifizierung von Informationen zum Endkäufer, wenn die Anzeigenplattform als Open Bidding-Nutzer ein Vermittler ist. Diese wird vom Drittanbieter-Käufer abgerufen und muss in der Gebotsantwort unverändert an Google weitergegeben werden.

Empfehlungen

  • Aktivieren Sie persistente HTTPS-Verbindungen (auch als „Keep-Alive“ oder „Verbindungs-Wiederverwendung“ bezeichnet) auf Ihren Servern. Legen Sie das Zeitlimit auf mindestens 10 Sekunden fest. In vielen Fällen sind höhere Werte von Vorteil. Google prüft dies bei den ersten Latenztests Ihrer Anwendung, da Authorized Buyers Anfragen mit hoher Geschwindigkeit sendet und den Latenz-Overhead vermeiden muss, der durch das Herstellen einer separaten TCP-Verbindung für jede Anfrage entsteht.
  • Fügen Sie die optionale Impressions-Tracking-URL ein, um zu erfassen, wann die Impression gerendert wird und nicht, wann der Bieter gewinnt. Aufgrund des Unterschieds zwischen gewonnenen und gerenderten Impressionen werden so genauere Trackingstatistiken erzielt.

  • Ihr Gebotscode darf keine Abhängigkeiten von eingestellten Feldern enthalten, da dies zu Fehlern bei Ihren Geboten führen kann.
  • Fügen Sie BidResponse.seatbid.bid.w und BidResponse.seatbid.bid.h in BidResponse ein. Eine Antwort auf eine Anfrage mit mehreren Anzeigengrößen muss diese Felder enthalten, da sie sonst aus der Auktion ausgeschlossen wird.BidResponse
  • Beschränken Sie die Größe Ihrer Antwort auf unter 8.000 Zeichen. Sehr große Antworten können die Netzwerklatenz erhöhen und zu Zeitüberschreitungen führen.
  • Richtlinien für Gebote für iOS-Inventar, für das eine SKAdNetwork-Attribution erforderlich ist

Beispiel für eine Gebotsantwort

Die folgenden Beispiele sind für Menschen lesbare Beispiele für die Protobuf- und JSON-Anfragen.

OpenRTB-Protobuf

OpenRTB-JSON

Wichtig:Die in den Beispielen dargestellten Protobuf-Nachrichten werden hier als menschenlesbarer Text dargestellt. So werden die Nachrichten jedoch nicht über das Netzwerk gesendet. Wenn Sie das OpenRTB-Protobuf-Format verwenden, werden nur serialisierte BidResponse-Nachrichten akzeptiert.

Mit dem folgenden C++-Code können Sie eine BidResponse-Nachricht erstellen und serialisieren:

BidResponse bid_response;
// fill in bid response with bid information
string post_response;
if (bid_response.SerializeToString(&post_response)) {
  // respond to the POST with post_response as the content
} else {
  // return an error to the POST
}

Creative angeben

In Ihrer Gebotsantwort wird das Creative angegeben, das ausgeliefert werden soll, wenn Sie das Gebot gewinnen. Ihr Gebot muss eines der unterstützten Anzeigenformate (AMP, Video, nativ) enthalten. In diesem Beispiel geben wir das Creative mit dem Feld html_snippet an.

Alternativ können Sie Ihr Creative je nach Anzeigenformat mit einem der folgenden Felder angeben:

  • Vom SDK gerenderte Anzeige
    • BidResponse.seatbid.bid.ext.sdk_rendered_ad
  • AMP
    • BidResponse.seatbid.bid.amp_ad_url
  • Video
    • BidResponse.seatbid.bid.adm
  • Nativ
    • BidResponse.seatbid.bid.adm_native

Geben Sie eine Anzeige an, die auf Ihren eigenen Servern gehostet wird, indem Sie im Feld BidResponse.seatbid.bid.adm ein HTML-Snippet verwenden. Das Snippet ist in einem iFrame eingeschlossen, das in die Webseite eingefügt wird. Dadurch wird die Anzeige beim Laden der Seite abgerufen und gerendert. Sie müssen das HTML-Snippet so gestalten, dass die Anzeige (Banner oder Interstitial) in einem iFrame und in einer geeigneten Größe für den Anzeigen-Slot, auf den Sie bieten, richtig gerendert wird.

Außerdem muss die in der Gebotsantwort angegebene Anzeigengröße genau einer der Größenkombinationen in der Gebotsanfrage entsprechen, wenn:

  • Eine Anzeige ist ein normales Banner (keine Video-, native oder Interstitial-Anzeige).
  • Die Größe wurde vom Bieter in der Gebotsantwort deklariert. Eine Größenangabe ist erforderlich, wenn in der Anfrage mehr als eine Größe vorhanden ist.
  • Für Interstitial-Anzeigen wird eine Ausnahme gemacht. Bei Interstitials muss die Breite mindestens 50% der Bildschirmbreite und die Höhe mindestens 40% der Bildschirmhöhe betragen.

Sie können ein HTML-Snippet-Creative mit beliebigem gültigen HTML-Code angeben, der korrekt gerendert wird. Beachten Sie jedoch die Einschränkungen für das Feld crid im Abschnitt CreateBidResponse-Nachricht erstellen. So können Sie beispielsweise zusätzliche Informationen in Argumente der URLs einfügen, die im Rahmen des Renderns der Anzeige von Ihren Servern abgerufen werden. So können Sie beliebige Daten zur Impression an Ihre eigenen Server zurückgeben.

Die meisten Richtlinien für HTML-Snippets, die in Gebotsantworten zurückgegeben werden, sind dieselben wie für Drittanbieteranzeigen. Weitere Informationen finden Sie in den Programmrichtlinien für Authorized Buyers, den Anforderungen für die Anzeigenbereitstellung durch Drittanbieter und unter Clickthrough-URLs in Anzeigen deklarieren.

Makros angeben

Makros sind formatierter Text, der in einige Felder für Gebotsantworten eingebettet ist und URLs enthält, die bei der Anzeigenbereitstellung durch einen relevanten Wert ersetzt werden. Wenn Ihr höchstes Gebot beispielsweise das Makro AUCTION_PRICE im HTML-Snippet-Creative enthielt, das mit Ihrem Gebot gesendet wurde, würde das Makro durch einen Wert ersetzt, den Sie entschlüsseln könnten, um den Betrag zu ermitteln, den Sie für die Impression in der Auktion bezahlt haben.

Sie können Makros in die folgenden Felder einfügen:

  • BidResponse.seatbid.bid.adm

    Makros werden für HTML-Snippet-, Native-, Video-URL- und Video-VAST-XML-Formate unterstützt.

  • BidResponse.seatbid.bid.adm_native.eventtrackers.url

  • BidResponse.seatbid.bid.adm_native.imptrackers

  • BidResponse.seatbid.bid.ext.amp_ad_url

    Für AMP-Creatives werden nur die Google-spezifischen Makros WINNING_PRICE und WINNING_PRICE_ESC unterstützt.

  • BidResponse.seatbid.bid.burl

  • BidResponse.seatbid.bid.ext.impression_tracking_url

    Verwenden Sie diese Option anstelle von BidResponse.seatbid.bid.burl, wenn Sie mehr als eine Abrechnungs-URL benötigen.

Sie können beispielsweise ein Makro in ein HTML-Snippet einfügen, indem Sie ${MACRO} in die URL einbetten, mit der das Creative abgerufen wird. Dabei ist MACRO eines der unterstützten Makros, die in der OpenRTB-Spezifikation beschrieben werden.

Google-Makros

Google unterstützt neben den in der OpenRTB-Spezifikation enthaltenen Makros weitere Makros. Diese sind anders formatiert und werden als %%MACRO%% angezeigt, wenn sie in eine URL eingebettet sind. In der folgenden Tabelle werden diese Makros beschrieben:

Makro Beschreibung
ADVERTISING_IDENTIFIER Käufer können die iOS-IDFA oder die Android-Werbe-ID bei der Impression erhalten. Weitere Informationen finden Sie unter Entschlüsseln von Werbetreibenden-IDs.
CACHEBUSTER Eine Stringdarstellung einer zufälligen, vorzeichenlosen 4‑Byte-Ganzzahl.
CLICK_URL_UNESC

Die nicht maskierte Klick-URL für die Anzeige. Im Snippet sollte direkt nach dem Makro eine maskierte Version der Drittanbieter-Klick-URL folgen.

Wenn die Drittanbieter-Klick-URL beispielsweise http://my.adserver.com/some/path/handleclick?click=clk lautet, kann der folgende Code mit der einfach maskierten Version der Drittanbieter-Klick-URL nach dem Makroaufruf verwendet werden:

<a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>

Bei der Anzeigenbereitstellung wird der Code so erweitert:

<a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>

Über die URL wird der Klick zuerst bei Google registriert und dann zur Klick-URL des Drittanbieters weitergeleitet.

CLICK_URL_ESC

Die maskierte Klick-URL für die Anzeige. Verwenden Sie dieses Makro anstelle von CLICK_URL_UNESC, wenn der Wert zuerst an einen anderen Server übergeben werden muss, der dann eine Weiterleitung zurückgibt.

Der folgende Code könnte beispielsweise in einem HTML-Snippet verwendet werden:

<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a>

Bei der Anzeigenbereitstellung wird der Code so erweitert:

<a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a>

Dadurch wird der Klick bei my.adserver.com registriert, das dann für die Weiterleitung zur URL verantwortlich ist, die im Parameter google_click_url übergeben wird. Dabei wird davon ausgegangen, dass my.adserver.com den Parameter google_click_url unescaped.

Sie können nach %%CLICK_URL_ESC%% eine doppelt maskierte URL anhängen. Nachdem my.adserver.com die Maskierung aufgehoben hat, wird an google_click_url eine einfach maskierte Version der URL angehängt. Wenn die google_click_url abgerufen wird, wird sie noch einmal dekodiert und dann weitergeleitet.

CLICK_URL_ESC_ESC

Die URL der Anzeige mit doppelter Maskierung. Verwenden Sie dieses Makro anstelle von CLICK_URL_UNESC, wenn der Wert zuerst an einen anderen Server übergeben werden muss, der dann eine Weiterleitung zurückgibt.

Der folgende Code könnte beispielsweise in einem HTML-Snippet verwendet werden:

<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a>

Bei der Anzeigenbereitstellung wird der Code so erweitert:

<a href="http://my.otheradserver.com/click?google_click_url=http%3A%2F%2Fmy.adserver.com%2Fclick%3Fgoogle_click_url%3Dhttp%3A%2F%2Fgoogle-click-%20url%253F...%2526ad_url%253D"></a>
SCHEME Wird zu http: erweitert, wenn für die Gebotsanfrage kein SSL erforderlich ist, oder zu https:, wenn für die Gebotsanfrage SSL erforderlich ist.
SITE Die Domain mit maskierter URL der Content-URL oder bei anonymem Inventar die anonyme ID
SITE_URL Verworfen. Wird durch das Makro SITE ersetzt, das dieselbe Funktion bietet.
TZ_OFFSET Die Zeitzonenverschiebung.
VERIFICATION

Die unterschiedlichen Werte für die Produktion und wenn das Creative in der Überprüfungspipeline gescannt wird. Das Format ist: %%?VERIFICATION:true-val:false-val%%. Für true-val und false-val können beliebige Werte außer Makros verwendet werden, einschließlich leerer Strings. Für Open Bidding empfehlen wir, dass Exchanges dieses Makro verwenden. Sobald sie dies tun, müssen Demand-Side-Plattformen keine Änderungen vornehmen.

Wenn ein Creative beispielsweise %%?VERIFICATION:-1:5000%% enthält, wäre der Text beim Ausliefern 5000 und in der Überprüfungspipeline -1. So lässt sich besser zwischen diesen beiden Arten von Pings unterscheiden.

WINNING_PRICE

Die codierten Kosten für die Impression (das heißt CPI statt CPM) in millionstel Einheiten der Kontowährung. Ein erfolgreiches CPM-Gebot von 5 US-Dollar entspricht 5.000.000 Millionstel CPM oder 5.000 Millionstel CPI. Der decodierte Wert von WINNING_PRICE wäre in diesem Fall 5.000. Der erfolgreiche Preis wird in CPI angegeben.

Um dieses Makro zu parsen, müssen Sie eine Anwendung implementieren, die Preisbestätigungen entschlüsselt. Weitere Informationen finden Sie auf der Seite Preisbestätigungen entschlüsseln.

WINNING_PRICE_ESC URL-escaped WINNING_PRICE.

Google schreibt vor, dass Sie entweder das Makro CLICK_URL_UNESC oder CLICK_URL_ESC im Creative der von Drittanbietern ausgelieferten Anzeige verwenden. Google verwendet die CLICK_URL-Makros für das Klick-Tracking.

Beim Maskieren von URLs in Makros wird das folgende Schema verwendet:

  • Das Leerzeichen wird durch ein Pluszeichen (+) ersetzt.
  • Alphanumerische Zeichen (0–9, a–z, A–Z) und Zeichen aus der Gruppe !()*,-./:_~ bleiben unverändert.
  • Alle anderen Zeichen werden durch %XX ersetzt, wobei XX die hexadezimale Zahl ist, die das Zeichen darstellt.

Einschränkungen und Anforderungen für Publisher

Die Gebotsanfrage enthält Informationen zu den Einschränkungen und Anforderungen, die Publisher für Creatives in der Auktion festlegen.

  • BidRequest.bcat
    • Sie können die in diesem Feld angegebenen blockierten Kategorien mit den Kategorien vergleichen, die für Ihre eingereichten Creatives mithilfe des Felds detectedCategories der Real-time Bidding API erkannt wurden.
  • BidRequest.imp.ext.allowed_vendor_type
  • BidRequest.imp.secure
    • In der Praxis wird dieser Wert immer auf true festgelegt, da Google SSL-Unterstützung für alle Creatives vorschreibt.
  • BidRequest.imp.{audio/banner/native/video}
  • BidRequest.imp.{audio/banner/native/video}.api
  • BidRequest.imp.{audio/banner/native/video}.battr
  • BidRequest.imp.{audio/banner/video}.mimes

Geben Sie niemals Gebote mit einer Anzeige ab, die eine eingeschränkte Funktion enthält. Für zulässige Funktionen wie den Anbietertyp sollte eine Anzeige nur zurückgegeben werden, wenn ihr Anbietertyp in der Liste allowed_vendor_type in der BidRequest enthalten ist. Ihr Gebot sollte nur Anzeigenformate enthalten, die in der Gebotsanfrage durch Ausfüllen von Feldern wie BidRequest.imp.banner angegeben sind. Weitere Informationen finden Sie in den Kommentaren zu diesen Feldern in der BidRequest-Protobuf-Definition.

Wenn in BidResponse eine Anzeige zurückgegeben wird, müssen Sie die Felder BidResponse.seatbid.bid.attr, BidResponse.seatbid.bid.cat und entweder BidResponse.seatbid.bid.adomain oder BidResponse.seatbid.bid.adm_native.link.url in BidResponse korrekt festlegen. Wenn eine Anzeige mehrere anwendbare Werte für diese Felder hat, müssen Sie jeden Wert angeben. Weitere Informationen finden Sie in den Kommentaren zu diesen Feldern in der Protokollpufferdefinition für BidResponse. Antworten, in denen diese Felder nicht festgelegt sind, werden verworfen.

Open Measurement

Mit Open Measurement können Sie Drittanbieter angeben, die unabhängige Analyse- und Überprüfungsdienste für Anzeigen in mobilen Apps anbieten.

Zu den unterstützten Anzeigenformaten gehören Video-, Banner- und Interstitial-Anzeigen. Weitere Informationen zur Verwendung von Open Measurement in einer Gebotsantwort, die diese Formate enthält, finden Sie im Hilfeartikel Open Measurement SDK.

Beispiel für Gebotsantworten

In den folgenden Abschnitten finden Sie Beispielantworten auf Gebote für verschiedene Anzeigentypen.

App-Banner

OpenRTB-Protobuf

OpenRTB-JSON

App-Interstitial

OpenRTB-Protobuf

OpenRTB-JSON

Video-Interstitial in Apps

OpenRTB-Protobuf

OpenRTB-JSON

App-nativ

OpenRTB-Protobuf

OpenRTB-JSON

Webvideo

OpenRTB-Protobuf

OpenRTB-JSON

Banner für das mobile Web für Exchange-Bieter

OpenRTB-Protobuf

OpenRTB-JSON