Nachdem Ihre Anwendung die Gebotsanfrage von Google verarbeitet hat, muss sie und eine Antwort senden. In diesem Leitfaden wird beschrieben, wie Sie Ihre Anwendung so programmieren, dass die Antwort erstellt wird.
Protobuf-BidResponse-Nachricht erstellen
Authorized Buyers sendet die BidRequest
als Nachrichtentext einer HTTP-POST
. Wenn Ihr Gebotsendepunkt für das Protobuf-Format konfiguriert ist, muss Ihre Anwendung eine Antwort mit dem Content-Type
-Header senden, der auf application/octet-stream
festgelegt ist, und einen Nachrichtentext mit einem serialisierten Protokoll-Zwischenspeicher. Das Protokoll
Der Zwischenspeicher ist eine BidResponse
-Nachricht gemäß Definition in
openrtb.proto
. Ihre Anwendung muss einen analysierbaren
BidResponse
als Antwort auf alle BidRequest
. Zeitüberschreitungen
Antworten, die nicht geparst werden können, werden als Fehler betrachtet und von Google gedrosselt.
von Bietern mit
hohen Fehlerraten unterstützt.
Wenn Sie nicht auf eine Impression bieten möchten, können Sie
BidResponse.ext.processing_time_ms
-Feld unverändert lassen und alle
andere Felder leer. openrtb.proto
finden Sie auf der Seite Referenzdaten.
Creative-ID
In Ihrem BidResponse
wird ein Creative über das Feld BidResponse.seatbid.bid.crid
angegeben (64 Byte). Ähnlich
Creatives müssen eindeutige Werte für dieses Feld haben, wenn sie sich in Bezug auf
Alle nennenswerten Merkmale, einschließlich, aber nicht beschränkt auf: Größe, deklarierte URL,
Creative-Attribute und Anbietertypen. Mit anderen Worten: Sie müssen unterschiedlichen
Creative-IDs zu zwei Anzeigen hinzufügen, die:
- anders aussehen oder sich anders verhalten.
- In verschiedenen Bildern rendern.
- Wird auf unterschiedliche Weise gerendert, z. B. wenn eine Anzeige aus einem Bild, während das andere ein Video ist).
Bei der Entwicklung Ihrer Anwendung sollten Sie sich für eine systematische Kennungen generieren, die für die Art der Creatives, die Sie planen, sinnvoll sind die Sie einreichen möchten.
Anzeigenattribute
Google empfiehlt, Creative-Attribute zu deklarieren, um die
Merkmale und Ausrichtung mithilfe einer Kombination aus
BidResponse.seatbid.bid.apis
und
BidResponse.seatbid.bid.attr
oder der
BidResponse.seatbid.bid.ext.attribute
. Die folgenden
wird beschrieben, wie Sie Attribute deklarieren:
VPAID
Legen SieBidResponse.seatbid.bid.apis
aufVPAID_1
oderVPAID_2
fest. Für das JSON-Format kann dies auf1
oder2
festgelegt werden.MRAID
BidResponse.seatbid.bid.apis
festlegen aufMRAID_1
oder3
für das JSON-Format.SIZELESS
BidResponse.seatbid.bid.attr
festlegen aufRESPONSIVE
oder18
für JSON Format.PLAYABLE
Legen Sie dazu fürBidResponse.seatbid.bid.attr
den WertUSER_INTERACTIVE
oder13
für das JSON-Format fest.
Weitere Informationen finden Sie in der Ressource vom Typ „Creatives“ finden Sie eine Erläuterung, wie Sie Feedback zu den erkannten Eigenschaften eines für Ihre Creatives.
Open Bidding-Felder
Gebotsantworten, die von Anzeigenplattform- und Netzwerkbietenden gesendet werden, die an Open Bidding teilnehmen Die Gebote ähneln denen von Authorized Buyers, Echtzeitgebote nutzen. Open Bidding-Kunden können eine geringe Anzahl von zusätzliche Felder. Für einige vorhandene Felder gibt es möglicherweise alternative Verwendungsmöglichkeiten. Dazu gehören:
OpenRTB | Authorized Buyers | Details |
---|---|---|
BidResponse.imp[].pmp.deals[].id |
BidResponse.ad[].adslot[].exchange_deal_id |
Die Deal-ID aus dem Namespace der Anzeigenplattform, die mit diesem Gebot verknüpft und an Publisher gesendet wird. |
BidResponse.seatbid[].bid[].ext.exchange_deal_type |
BidResponse.ad[].adslot[].exchange_deal_type |
Die Art des Deals, der den Publishern gemeldet wird und der sich auf den Deal auswirkt die in der Auktion behandelt werden. |
BidResponse.seatbid[].bid[].ext.third_party_buyer_token |
BidResponse.ad[].adslot[].third_party_buyer_token |
Token zur Identifizierung von Drittanbieterkäuferinformationen, falls das der Open Bidding-Plattform als Vermittler fungiert. Diese ergibt sich aus dem und muss unverändert im Gebot an Google übergeben werden. Antwort. |
Empfehlungen
- Aktivieren Sie persistente HTTPS-Verbindungen (auch als „Keep-Alive“ oder „Verbindungswiederverwendung“ bezeichnet) auf Ihren Servern. Legen Sie das Zeitlimit auf mindestens 10 Sekunden fest. Höhere Werte sind in vielen Fällen von Vorteil. Google überprüft während der anfänglichen Latenztests Ihrer Anwendung, Über Authorized Buyers werden häufig Anfragen gesendet. Latenz-Overhead beim Aufbau einer separaten TCP-Verbindung für jedes
Fügen Sie die optionale Impressions-Tracking-URL hinzu, um zu erfassen, wann die Impression gerendert wird, anstatt wann der Bieter den Zuschlag erhält. Aufgrund des Rückgangs zwischen Impressionen und Conversions lassen sich so genauere Tracking-Statistiken erstellen.
- Der Gebotscode darf keine Abhängigkeiten von veralteten Feldern haben, da dies zu Fehlern bei Geboten führen kann.
- Fügen Sie
BidResponse.seatbid.bid.w
undBidResponse.seatbid.bid.h
in IhreBidResponse
ein. ABidResponse
zu einer Anfrage mit mehreren Anzeigengrößen muss diese Felder enthalten, sonst wird es aus der Auktion entfernt. - Begrenzen Sie die Antwortgröße auf unter 8 K. Sehr große Antworten können zunehmen Netzwerklatenz und Zeitüberschreitungen verursachen.
- Befolgen Sie die Richtlinien für Gebote für iOS-Inventar abgeben, für das eine SKAdNetwork-Attribution erforderlich ist.
Beispiel für eine Gebotsantwort
Die folgenden Beispiele stellen für Menschen lesbare Beispiele des Protobuf- und JSON-Anfragen.
OpenRTB Protobuf
OpenRTB-JSON
Wichtig: Die in den Beispielen dargestellten Protobuf-Nachrichten sind hier als visuell lesbarer Text dargestellt. Das ist jedoch nicht die werden die Nachrichten über das Kabel gesendet. Wenn Sie das Google- oder OpenRTB-Protobuf-Format verwenden, werden nur serialisierte BidResponse-Nachrichten akzeptiert.
Sie können eine BidResponse
-Nachricht mithilfe der Methode
folgenden C++ Code:
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
Ihre Gebotsantwort gibt die Anzeige an, die ausgeliefert werden soll, wenn Ihr Gebot den Zuschlag erhält. Ihr Gebot muss eines der unterstützten Anzeigenformate (AMP, Video, nativ) enthalten. In dieser
das Creative mithilfe des Felds html_snippet
angeben.
Alternativ können Sie Ihr Creative mit einem der folgenden Felder angeben, je nach Anzeigenformat:
- SDK-gerenderte Anzeige
BidResponse.seatbid.bid.ext.sdk_rendered_ad
- AMP-Seiten
BidResponse.seatbid.bid.amp_ad_url
- Video
BidResponse.seatbid.bid.adm
- Nativ
BidResponse.seatbid.bid.adm_native
Geben Sie im Feld BidResponse.seatbid.bid.adm
eine Anzeige an, die auf Ihren eigenen Servern gehostet wird. Verwenden Sie dazu ein HTML-Snippet. Das Snippet ist in einem iFrame eingeschlossen, der in die Webseite eingefügt wird. Dadurch wird die Anzeige beim Laden der Seite abgerufen und gerendert. Das HTML-Snippet muss so gestaltet werden, dass der
Eine Anzeige (Banner oder Interstitial) wird innerhalb eines iFrames korrekt und bei einer
die für die Anzeigenfläche geeignet ist, auf die Sie bieten.
Außerdem muss die in der Gebotsantwort angegebene Anzeigengröße genau einem der Größenkombinationen in der Gebotsanfrage, wenn
- Eine Anzeige ist ein normales Banner (kein Video-, natives oder Interstitial-Anzeigenformat).
- Der Bieter hat die Größe in der Gebotsantwort angegeben. Angeben der Größe ist erforderlich, wenn die Anfrage mehr als eine Größe enthält.
- Eine Ausnahme gilt für Interstitial-Anzeigen. 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 jedem gültigen HTML-Code angeben, der
korrekt gerendert wird. Beachten Sie jedoch
die Einschränkungen beim Angeben des
Feld crid
im
Bereich Create BidResponse message (Gebotsantwort-Nachricht erstellen):
So können Sie beispielsweise zusätzliche Informationen in Argumente der URLs einfügen, die beim Rendern der Anzeige von Ihren Servern abgerufen werden. So können Sie
zur Impression zurück an Ihre eigenen Server senden.
Die meisten Richtlinien für HTML-Snippets, die in Gebotsantworten zurückgegeben werden, entsprechen den für Drittanbieteranzeigen. Weitere Informationen finden Sie unter Authorized Buyers Programmrichtlinien, Anforderungen für Drittanbieter Anzeigenbereitstellung und Deklarieren Klick-URLs in Anzeigen.
Makros angeben
Makros sind formatierter Text, der in einige Felder für Gebotsanfragen eingebettet ist und URLs enthält, die bei der Anzeigenbereitstellung durch einen relevanten Wert ersetzt werden. Wenn Ihr erfolgreiches Gebot beispielsweise das Makro AUCTION_PRICE
im HTML-Snippet-Creative enthielt, das mit Ihrem Gebot gesendet wurde, wird das Makro durch einen Wert ersetzt, den Sie entschlüsseln können, 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-Snippets, native Formate, Video-URLs und VAST-XML-Videoformate unterstützt.
-
BidResponse.seatbid.bid.adm_native.eventtrackers.url
-
BidResponse.seatbid.bid.adm_native.imptrackers
-
BidResponse.seatbid.bid.ext.amp_ad_url
Nur die Google-spezifischen
WINNING_PRICE
undWINNING_PRICE_ESC
-Makros werden für AMP-Creatives unterstützt. -
BidResponse.seatbid.bid.burl
-
BidResponse.seatbid.bid.ext.impression_tracking_url
Verwenden Sie diese URL anstelle von
BidResponse.seatbid.bid.burl
, wenn Sie mehr als eine Abrechnungs-URL benötigen.
Sie können ein Makro zum Beispiel in ein HTML-Snippet einfügen, indem Sie
Einbetten von ${MACRO}
in die zum Abrufen des Creatives verwendete URL
Dabei ist MACRO
eines der unterstützten Makros, die im
OpenRTB-Spezifikation
Google RTB-Makros
Neben den im OpenRTB enthaltenen Makros unterstützt Google weitere Makros.
Spezifikation. Sie sind unterschiedlich formatiert und erscheinen
%%MACRO%%
, wenn in einer URL eingebettet. In der folgenden Tabelle wird beschrieben,
diese Makros:
Makro | Beschreibung |
---|---|
ADVERTISING_IDENTIFIER |
Ermöglicht Käufern, die iOS-IDFA oder die Werbe-ID von Android über Impressions-Rendering. Siehe Werbetreibenden-IDs entschlüsseln . |
CACHEBUSTER |
Stringdarstellung einer zufälligen 4-Byte-Ganzzahl ohne Vorzeichen. |
CLICK_URL_UNESC |
Die nicht maskierte Klick-URL für die Anzeige. Im Snippet wird ein mit Escape-Zeichen Version der Drittanbieter-Klick-URL direkt auf den . Wenn die Klick-URL des Drittanbieters beispielsweise <a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> Bei der Anzeigenbereitstellung wird dies wie folgt 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 an die Klick-URL des Drittanbieters weitergeleitet. |
CLICK_URL_ESC |
Die entkommentierte Klick-URL für die Anzeige. Verwenden Sie dieses anstelle von
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 dies wie folgt erweitert: <a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a> Dadurch wird der Klick mit Sie können nach |
CLICK_URL_ESC_ESC |
Die doppelt maskierte URL für die Anzeige. Verwenden Sie dieses Makro anstelle von 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 Creative-Code folgendermaßen 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 auf http: erweitert, wenn die Gebotsanfrage kein SSL erfordert oder
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. Dieses Makro wurde durch das Makro SITE ersetzt, das identische Funktionen bietet. |
TZ_OFFSET |
Die Zeitzonenverschiebung. |
VERIFICATION |
Die verschiedenen Werte für die Produktion und für das Scannen des Creatives in der Bestätigungspipeline. Das Format ist:
Wenn ein Creative beispielsweise |
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 Zum Parsen dieses Makros müssen Sie eine Anwendung implementieren, die entschlüsselt Preisbestätigungen. Weitere Informationen finden Sie im Preisbestätigungen entschlüsseln finden Sie weitere Informationen. |
WINNING_PRICE_ESC |
URL-entfernte WINNING_PRICE . |
Google verlangt, dass Sie im Creative der vom Drittanbieter ausgelieferten Anzeige entweder das CLICK_URL_UNESC
- oder das CLICK_URL_ESC
-Makro verwenden. Google verwendet die CLICK_URL
-Makros für das Klick-Tracking.
Für die URL-Escaping in Makros wird folgendes Schema verwendet:
- Das Leerzeichen wird durch ein Pluszeichen (
+
) ersetzt. - Alphanumerische Zeichen (0–9, a–z, A–Z) und Zeichen aus dem Satz !()*,-./:_~ bleiben unverändert.
- Alle anderen Zeichen werden durch
%XX
ersetzt, wobeiXX
die Hexadezimalzahl ist, die für das Zeichen steht.
Einschränkungen und Anforderungen für Publisher
Die Gebotsanfrage enthält Informationen zu den Einschränkungen und Anforderungen, die Publisher an Creatives in der Auktion stellen.
BidRequest.bcat
- Sie können die in diesem Feld angegebenen blockierten Kategorien mit denjenigen vergleichen, die für Ihre eingereichten Creatives im Feld
detectedCategories
der Real-time Bidding API erkannt wurden.
- Sie können die in diesem Feld angegebenen blockierten Kategorien mit denjenigen vergleichen, die für Ihre eingereichten Creatives im Feld
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
- In der Praxis ist dies immer auf
true
gesetzt, Google benötigt SSL-Unterstützung für alle Creatives.
- In der Praxis ist dies immer auf
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 für Anzeigen ab, die eine eingeschränkte Funktion enthalten. Für zulässige Funktionen
wie Anbietertyp, geben Sie eine Anzeige nur zurück, wenn der entsprechende Anbietertyp in der
Liste allowed_vendor_type
in BidRequest
. Nur Anzeigenformate, die in der Gebotsanfrage durch Ausfüllen von Feldern wie BidRequest.imp.banner
angegeben sind, sollten in Ihr Gebot aufgenommen werden. Weitere Informationen finden Sie in den Kommentaren zu diesen Feldern in der BidRequest
-Protokoll-Bufferdefinition.
Wenn eine Anzeige in BidResponse
zurückgegeben wird, müssen Sie
BidResponse.seatbid.bid.attr
genau festlegen,
BidResponse.seatbid.bid.cat
und entweder
BidResponse.seatbid.bid.adomain
oder
BidResponse.seatbid.bid.adm_native.link.url
-Felder im
BidResponse
Wenn eine Anzeige über mehrere anwendbare Werte für diese
müssen Sie jeden Wert angeben. Kommentare zu diesen Feldern finden Sie unter
Weitere Informationen finden Sie in der Protokollpufferdefinition BidResponse
.
Antworten, für die 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, die in mobilen Apps ausgeliefert werden Umgebungen.
Unterstützte Anzeigenformate sind 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 Beispielgebotsantworten für verschiedene Anzeigentypen.