建立回應

處理 Google 的出價請求之後, 並傳送回應本指南說明如何編寫程式碼以建構應用程式 回應。

建立 BidResponse 訊息

Authorized Buyers 會傳遞 BidRequest 做為 HTTP POST。應用程式傳送的回應必須含有 Content-Type 標頭已設為 application/octet-stream 以及訊息主體,並由序列化通訊協定緩衝區組成。通訊協定 緩衝區是 BidResponse 訊息,定義如下: realtime-bidding.proto。您的應用程式必須傳回可剖析的 BidResponse 以回應每個 BidRequest。禁言次數 無法剖析的回應會視為錯誤,Google 也會限制 錯誤率偏高的出價方

如果不想要對曝光出價 單獨填寫「processing_time_ms」欄位,其他欄位則維持 並將空無一物。您可以從以下位置取得 realtime-bidding.proto參照資料網頁。

廣告素材 ID

BidResponse 會透過 buyer_creative_id 欄位 (上限為 64 個位元組)。即使是類似的廣告素材 如果 buyer_creative_id 彼此不同,就必須有不重複的值 任何重要特徵,包括但不限於大小、宣告的網址 廣告素材屬性和供應商類型也就是說,您必須提供不同的 然後將廣告素材編號指派給任一廣告,如下所示:

  • 外觀或行為改變。
  • 算繪到不同的圖片。
  • 以不同方式呈現 (例如一則廣告包含圖片、 另一個則包含 Flash)。

設計應用程式時,您必須決定 產生適用於您計劃類型的廣告素材 ID 。

廣告屬性

您必須宣告廣告素材屬性,以完整描述廣告的 特性和指定目標BidResponse.Ad.attribute 需宣告的屬性 (另請參閱完整的支援屬性清單) 屬性 buyer-declarable-creative-attributes.txt):

  • 7 Tagging: IsTagged
    廣告包含像素或網路信標,以便製作 以便進行後續再行銷的 Cookie 編號清單。
  • 8 Remarketing: IsRemarketing
    廣告會根據使用者的 Cookie ID 或裝置 ID, Cookie ID 或裝置 ID 清單,代表一組能夠 互動前曾與買方所擁有或代表的網站互動
  • 9 UserInterestTargeting: IsUserInterestTargeted
    廣告會根據使用者的 Cookie ID 或裝置 ID, Cookie ID 或裝置 ID 清單,代表一組消費者 區分為共同興趣群組
  • 30 InstreamVastVideoType: Vpaid
    廣告需要支援 VPAID 才能顯示。
  • 32 MraidType: MRAID
    廣告需要 MRAID API 才能顯示。

此外,系統也支援下列屬性,但其宣告為 不需要,因為 Authorized Buyers 會自動偵測這類買方,並封鎖 (或 ) 出價。 詳情請見 廣告素材 API ,說明如何取得有關 廣告素材。

  • 34 RichMediaCapabilityType: RichMediaCapabilityFlash
    廣告需要 Flash 支援才能顯示。
  • 50 RichMediaCapabilityType: RichMediaCapabilityNonFlash
    廣告不需使用 Flash 即可顯示。
  • 47 RichMediaCapabilityType: RichMediaCapabilitySSL
    廣告能夠在 SSL 網頁上顯示。請注意,Authorized Buyers 會將廣告素材 並擁有不同的宣告值做為區別 ( 且有不同的核准狀態)。因此,如果同時使用 SSL 和 同一廣告素材的非 SSL 版本時,您應據此宣告這個屬性, 以便在 AdX 中正確反映這項差異

公開出價欄位

參與公開交易的廣告交易平台和聯播網出價方傳送的出價回應 出價與參與標準的 Authorized Buyers 類似 即時出價公開出價客戶可以指定少量 以及部分現有欄位可能有替代用途。這些 包括:

OpenRTB Authorized Buyers 詳細資料
BidResponse.imp[].pmp.deals[].id BidResponse.ad[].adslot[].exchange_deal_id

Ad Exchange 命名空間與此交易相關聯的交易 ID 出價並回報給發布商

BidResponse.seatbid[].bid[].ext.exchange_deal_type BidResponse.ad[].adslot[].exchange_deal_type

系統向發布商回報的交易類型,會影響交易的方式 都會是競價

BidResponse.seatbid[].bid[].ext.third_party_buyer_token BidResponse.ad[].adslot[].third_party_buyer_token 用來識別第三方買家資訊的權杖 (如果 做為公開出價方的交易是一種中介機構。這是從 第三方買方,且必須如在出價中予以傳遞給 Google 回應。

建議

  • 啟用永久 HTTPS 連線 (又稱「保持運作」或 「連線重複使用」)。將逾時時間設為 10 秒, Google 驗證 初期延遲時間測試應用程式 Authorized Buyers 會以高頻率傳送請求,並且應避免 為每個 VM 建立個別 TCP 連線的延遲時間負擔 請求。
  • 加入要追蹤的曝光追蹤網址, 曝光而非出價者勝出時才會顯示因為下車 從而取得更準確的追蹤結果 統計資料。

  • 避免您的出價工具程式碼使用已淘汰的欄位。 這可能會導致出價失敗且發生錯誤。
  • 加入 BidResponse.Ad.width 和 「BidResponse」中的「BidResponse.Ad.height」。A 罩杯 對於包含多個廣告大小的請求,必須BidResponse 包括 widthheight 值,否則系統會在 遭到忽略的競價
  • 請將回應大小限制在 8K 以下。回覆數過大可能導致回覆數增加 網路延遲並造成逾時
  • 請遵循這份指南 對需使用 SKAdNetwork 歸因的 iOS 廣告空間設定出價

出價回應範例

以下範例代表 Protobuf 內使用者可理解的 JSON 要求。

Google

OpenRTB JSON

OpenRTB 通訊協定緩衝區

重要事項: 範例會以使用者可理解的文字表示。不過,這不是我們 這些訊息是透過線路傳送使用 Google 或 OpenRTB Protobuf 時 格式,系統只接受序列化的 BidResponse 訊息。

您可以建立並序列化BidResponse訊息 以下 C++ 程式碼:

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
}

指定廣告素材

您的出價回應會指定在勝出時要放送的廣告素材。您的出價 必須包含其中一種支援的廣告格式 (AMP、影片、原生)。在本 例如,我們使用 html_snippet 欄位來指定廣告素材。

或者,您也可以使用以下其中一個選項指定廣告素材: 欄位 (根據廣告格式而定):

  • SDK 顯示的廣告
    • BidResponse.Ad.sdk_rendered_ad
  • AMP
    • BidResponse.Ad.amp_ad_url
  • 影片
    • BidResponse.Ad.video_url
    • BidResponse.Ad.video_vast_xml
  • 原生廣告
    • BidResponse.Ad.native_ad

使用 BidResponsehtml_snippet 欄位。 程式碼片段包含在網頁插入的 iframe 中,因此廣告 。您必須製作 HTML 才能使廣告 (橫幅或插頁式廣告) 正確顯示在 iframe,且大小適合您出價的廣告版位。

此外,出價回應中宣告的廣告大小必須完全符合一個 出價請求中的大小組合的時機:

  • 廣告是一般橫幅廣告 (非影片、原生或插頁式廣告)。
  • 出價方已在出價回應中宣告大小。大小宣告為 因為請求裡出現多種大小時,才是必要的參數。
  • 插頁式廣告的例外狀況。插頁式廣告寬度 不得小於螢幕寬度的 50%,高度至少須為 40% 以及螢幕高度

html_snippet 欄位支援任何符合以下條件的有效 HTML 程式碼: 可正確顯示,但請注意指定 建立 BidResponse 訊息部分中的 buyer_creative_id 欄位。一 用途是將額外資訊放入 擷取自您的伺服器。這樣您就能 系統會將曝光的相關任意資料傳回您自己的伺服器。

在出價回應中傳回的 HTML 程式碼片段,大多是與 供第三方廣告使用參閱 Authorized Buyers 計劃指南第三方相關規定 廣告放送,以及宣告 到達網址

指定巨集

用來定義廣告素材的 HTML 程式碼片段 稱為巨集在廣告放送時,這些值會取代 巨集。舉例來說,您的用戶端出價應用程式可以使用 WINNING_PRICE 巨集來判斷贏得競價時需為廣告支付的費用 。若要剖析此巨集,您必須導入 可解密價格確認的應用程式。詳情請參閱解密價格 確認網頁以取得更多資訊。

請在 HTML 片段中,按照 %%MACRO%%,其中 MACRO 為支援的其中一項 。

根據 Google 規定,您必須使用 CLICK_URL_UNESCCLICK_URL_ESC 巨集位於第三方放送的廣告素材中 廣告。Google 會使用 CLICK_URL 巨集來追蹤點擊。

若要使用巨集,請將它加入廣告中,以便在 或是有人點選影片擷取所傳回的值是重新導向至另一個 您附加至 CLICK_URL 的網址。

巨集 說明
ADVERTISING_IDENTIFIER 允許買方在顯示曝光時接收 iOS IDFA 或 Android 廣告 ID。 請參閱解密廣告主 ID。 。
CACHEBUSTER 隨機、無正負號四位元組整數的字串。
CLICK_URL_UNESC

廣告的未逸出點擊網址。在程式碼片段中, 第三方點擊網址應緊接在巨集的後方。

舉例來說,如果第三方點擊網址為 http://my.adserver.com/some/path/handleclick?click=clk, 下列程式碼的單一逸出版本 第三方點擊網址:

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

放送廣告時,以上程式碼會展開為:

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

這個網址會先向 Google 登錄點擊,接著再重新導向至第三方點擊網址。

CLICK_URL_ESC

廣告的逸出點擊網址。使用此 API 取代 如果需要先將值傳遞到「CLICK_URL_UNESC」 再由另一個伺服器傳回重新導向。

舉例來說,您可以在 HTML 程式碼片段中使用下列程式碼:

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

放送廣告時,以上程式碼會展開為:

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

這會向 my.adserver.com 登錄點擊, 接著就必須負責重新導向至 google_click_url 參數。本例是假設 my.adserver.com 未逸出 google_click_url 參數。

您可以將雙重逸出網址附加在 %%CLICK_URL_ESC%%。反向解碼作業完成後, my.adserver.com,保留網址的單一逸出版本 附加至 google_click_url。當 系統擷取了 google_click_url,之後會再取消逸出一次, 重新導向。

CLICK_URL_ESC_ESC

廣告的雙重逸出網址。使用此 API 取代 如果需要先將值傳遞到「CLICK_URL_UNESC」 再由另一個伺服器傳回重新導向。

舉例來說,您可以在 HTML 程式碼片段中使用下列程式碼:

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

放送廣告時,以上程式碼會展開為:

<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 如果出價要求不需要 SSL 或為http: 如果出價要求需要 SSL,則為 https:
SITE 內容網址的網址逸出網域,或匿名廣告空間的匿名編號。
SITE_URL 已淘汰,由提供相同功能的 SITE 巨集取代。
TZ_OFFSET 時區偏移。
VERIFICATION 製作階段以及系統在驗證期間掃描廣告素材時的不同值 這種模型通常已開放原始碼 可以透過自訂筆記本或管線微調格式為:%%?VERIFICATION:true-val:false-val%%,其中任何 的值 (巨集除外) 可用於 true-valfalse-val、 包括空字串如果是公開出價,我們建議廣告交易平台使用這個巨集; 這時需求端平台就不需要進行任何變更。

例如,假設廣告素材要包含 %%?VERIFICATION:-1:5000%% 那麼文字替代文字會在5000放送,而-1 驗證管道以便區分這兩組連線偵測 (ping)。
WINNING_PRICE 經過編碼的曝光費用 (亦即單次安裝出價,而非千次曝光出價), 帳戶幣別的百萬分之一。例如,勝出的千次曝光出價是 $5 美元 相當於 5,000,000 個微量千次曝光出價或 5,000 百萬分之一的單次安裝出價解碼器 在本例中,WINNING_PRICE 的值會是 5,000。 單次安裝出價中會指定得標價格。
WINNING_PRICE_ESC 網址逸出的 WINNING_PRICE

巨集中的網址逸出會使用以下配置:

  • 空格字元會由加號 (+) 取代。
  • 英數字元 (0-9、a-z、A-Z) 以及 !()*,-./:_~ 組合中的字元則維持不變。
  • 所有其他字元都會由 %XX 取代,其中 XX 為十六進位 代表字元的「數字」

發佈商限制

發布商可以使用 BidRequest 傳遞限制的廣告 允許的內容您必須強制執行下列欄位中的限制:

  • allowed_vendor_type
  • excluded_attribute
  • excluded_sensitive_category

一個欄位指定允許的廣告功能,另一個欄位則指定 不允許使用的功能切勿使用禁用功能傳回廣告。允許 例如供應商類型等功能 BidRequest 中的 allowed_vendor_type 清單。詳情請參閱 BidRequest 通訊協定緩衝區中這些欄位的註解 定義。

如果 BidResponse 中傳回 HTML 程式碼片段, 需要正確設定 attributecategoryBidResponse 中的 click_through_url 欄位。 如果廣告對這些欄位有多個適用的值,您必須 包含所有值如要查看這些欄位的註解,請參閱 BidResponse 通訊協定緩衝區定義。 系統會捨棄未設定這些欄位的回應。

BidRequest.excluded_attribute 可能的值為 (請參閱 publisher-excludable-creative-attributes.txt):

  • 7 Tagging: IsTagged
    如果廣告包含像素或網路信標,以便建立清單, Cookie ID,以便用於後續再行銷。
  • 8 CookieTargeting: IsCookieTargeted
    如果廣告是根據 Cookie 編號指定消費者,而 Cookie ID 清單代表的是這些客戶,廣告一律不允許放送 曾與買方所擁有或代表的網站互動的一群消費者。
  • 9 UserInterestTargeting: IsUserInterestTargeted
    如果廣告是根據 Cookie 編號指定消費者,而 Cookie ID 清單代表的是這些客戶,廣告一律不允許放送 特定消費者群 (由買方定義為共同興趣群組)。
  • 21 CreativeType: Html
    禁止廣告使用html_snippetsnippet_template 欄位 BidResponse.Ad
  • 22 CreativeType: VastVideo
    禁止廣告使用「BidResponse.Ad」中的「video_url」欄位。
  • 30 InstreamVastVideoType: Vpaid
    系統不允許根據 VPAID 支援顯示廣告。
  • 32 MraidType: MRAID
    我們不允許廣告需要 MRAID API 才能顯示。
  • 34 RichMediaCapabilityType: RichMediaCapabilityFlash
    我們不允許需支援 Flash 才能顯示廣告。
  • 39 RichMediaCapabilityType: RichMediaCapabilityHTML5
    禁止規定必須顯示 HTML5 功能才能顯示廣告。
  • 48 RichMediaCapabilityType: RichMediaCapabilityNonSSL
    系統不允許廣告提出非 SSL 請求。

因此,如果 excluded_attribute 欄位含有這個值 7,則不得傳回使用像素或網路信標的廣告 並製作一份清單請注意,如果有廣告這麼做,則必須將 BidResponse 的屬性欄位。 同樣地,如果 excluded_attribute 欄位包含 48 這個值, 那麼,您應該只傳回能在 SSL 網頁上顯示的廣告 ( 宣告屬性 47 RichMediaCapabilityType: RichMediaCapabilitySSL)。

此外,物件的 excluded_sensitive_category 欄位 BidRequest 會使用 參考資料頁面提供了 ad-sensitive-categories.txt 檔案。以下是 其中部分程式碼的說明:

  • 3 Politics
    包含政治或具爭議性社會議題的內容;不包括整體來說不涉及任何黨派觀點的新聞機構廣告。
  • 4 Dating
    包含交友服務和線上交友社群。
  • 5 Religion
    包含宗教信仰廣告以及宣揚或反對宗教觀點的廣告;不包含占星術或非宗派靈修類。
  • 7 Video Games (Casual & Online)
    包含電玩遊戲、線上遊戲和可供下載的遊戲。不含電玩遊戲主機。
  • 8 Ringtones & Downloadables
    鈴聲等手機外掛程式和其他可下載的內容,例如電腦螢幕保護程式和桌布,以及社群網路的個人資料配置與圖片。
  • 10 Get Rich Quick
    保證能快速帶來收益的方案。
  • 18 Weight Loss
    包含減重、節食及相關產品和計畫。不包含健康飲食或一般健身廣告。
  • 19 Cosmetic Procedures & Body Modification
    包含拉皮、抽脂、雷射手術、除毛和植髮、刺青和身體改造。
  • 23 Drugs & Supplements:
    包含藥品、維他命、營養補充品和相關零售商;不含提供藥物資訊的資源。
  • 24 Sexual & Reproductive Health
    包含性功能和壯陽廣告。不含一般懷孕資源。
  • 35 Social Casino Games
    包含無法贏得任何有價物品 (如現金或獎品) 的模擬賭博遊戲 (包括但不限於撲克牌、吃角子老虎、賓果、彩券、運動投注、競賽投注,以及其他紙牌遊戲和賭場遊戲)。
  • 36 Significant Skin Exposure
    廣告圖片中有任何從胸骨到大腿中段的人體部分未以衣物遮蔽或身體穿著內衣、泳衣、內衣或其他透明衣物,或非衣物 (例如毛巾或床單),
  • 37 Sensationalism
    這類廣告通常會以誇大用語或圖像引發使用者好奇,誘使他們點擊廣告。以聳動性主題 (例如名人遭逮捕、死亡、離婚) 或意圖驚嚇他人的廣告來說都算在內。

Open Measurement

透過 Open Measurement,您可以指定提供獨立評估和 驗證服務,用於放送放送到行動應用程式環境的廣告。

目前支援的廣告格式包含影片、橫幅廣告和插頁式廣告。如要進一步瞭解 如要瞭解如何在包含這些格式的出價回應中使用 Open Measurement,請參閱 Open Measurement SDK 說明中心 文章。

出價回應範例

以下各節說明不同廣告類型的出價回應範例。

應用程式橫幅廣告

Google

OpenRTB JSON

OpenRTB 通訊協定緩衝區

應用程式插頁式廣告

Google

OpenRTB JSON

OpenRTB 通訊協定緩衝區

應用程式插頁式影片

Google

OpenRTB 通訊協定緩衝區

應用程式原生廣告

Google

OpenRTB JSON

OpenRTB 通訊協定緩衝區

網路影片

Google

廣告交易平台出價工具的行動版網站橫幅廣告

OpenRTB 通訊協定緩衝區