Bangun Responsnya
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Setelah aplikasi Anda memproses permintaan bid dari Google, aplikasi tersebut harus membuat dan mengirim respons. Panduan ini menjelaskan cara membuat kode aplikasi Anda untuk membuat respons.
Membuat pesan BidResponse
Untuk mengirimkan bid, aplikasi bidding Anda harus merespons permintaan bid dengan
BidResponse yang berisi Bid dalam format
yang dikonfigurasi. Jika Anda menggunakan format JSON, respons Anda harus menyetel header
Content-Type ke
application/json; charset=utf-8 dan menyertakan JSON
BidResponse dalam isi. Jika Anda menggunakan format Protobuf, aplikasi Anda harus menyetel header Content-Type ke application/octet-stream dan menyertakan BidResponse yang diserialisasi dalam isi.
Untuk membuat dan melakukan serialisasi BidResponse untuk format Protobuf,
Anda harus membuat dan menggunakan library Protobuf berdasarkan
openrtb.proto dan openrtb-adx.proto, yang masing-masing
menerapkan kolom BidResponse OpenRTB standar dan ekstensi Google
di Protobuf. Hal ini dapat ditemukan di
Protos & Data Referensi.
Jika Anda tidak ingin mengajukan bid pada tayangan iklan, Anda harus menampilkan respons HTTP 204 kosong. Aplikasi Anda harus menampilkan respons untuk setiap
BidRequest. Waktu tunggu dan respons yang tidak dapat diuraikan dianggap sebagai error dan Google akan membatasi bidder dengan rasio error yang tinggi.
ID Materi Iklan
BidResponse Anda menentukan materi iklan melalui kolom
BidResponse.seatbid.bid.crid (batas 128 byte). Bahkan materi iklan yang serupa harus memiliki nilai unik untuk kolom ini jika berbeda dalam karakteristik penting apa pun, termasuk, tetapi tidak terbatas pada: ukuran, URL yang dinyatakan, atribut materi iklan, dan jenis vendor. Dengan kata lain, Anda harus memberikan ID materi iklan yang berbeda untuk dua iklan yang:
Terlihat atau berperilaku berbeda.
Merender ke gambar yang berbeda.
Dirender dengan cara yang berbeda (misalnya, satu iklan terdiri dari gambar, sedangkan iklan lainnya adalah video).
Saat mendesain aplikasi, Anda harus memutuskan cara sistematis untuk membuat ID yang sesuai dengan jenis materi iklan yang akan Anda kirimkan.
Atribut iklan
Google merekomendasikan untuk mendeklarasikan atribut materi iklan guna mendeskripsikan karakteristik iklan dan penargetannya menggunakan kombinasi BidResponse.seatbid.bid.apis dan BidResponse.seatbid.bid.attr, atau ekstensi BidResponse.seatbid.bid.ext.attribute. Berikut ini
menjelaskan cara mendeklarasikan atribut:
VPAID
Tetapkan BidResponse.seatbid.bid.apis ke VPAID_1,
atau VPAID_2. Untuk format JSON, ini dapat disetel ke
1 atau 2.
MRAID
Tetapkan BidResponse.seatbid.bid.apis ke
MRAID_1, atau 3 untuk format JSON.
SIZELESS
Tetapkan BidResponse.seatbid.bid.attr ke
RESPONSIVE, atau 18 untuk format
JSON.
PLAYABLE
Hal ini ditunjukkan dengan menyetel BidResponse.seatbid.bid.attr
ke USER_INTERACTIVE, atau 13 untuk format
JSON.
Lihat
resource Materi Iklan
untuk mengetahui penjelasan tentang cara mendapatkan masukan terkait properti yang terdeteksi dari
materi iklan Anda.
Kolom Bidding Terbuka
Respons bid yang dikirim oleh bidder bursa dan jaringan yang berpartisipasi dalam Bidding Terbuka serupa dengan respons bid Authorized Buyers yang berpartisipasi dalam bidding real-time standar. Pelanggan Bidding Terbuka dapat menentukan sejumlah kecil kolom tambahan, dan beberapa kolom yang ada mungkin memiliki penggunaan alternatif. Hal ini
mencakup:
Kolom
Detail
BidResponse.imp.pmp.deals.id
ID transaksi dari namespace bursa yang terkait dengan
bid ini dan dilaporkan kepada penayang.
BidResponse.seatbid.bid.ext.exchange_deal_type
Jenis transaksi yang dilaporkan kepada penayang, yang memengaruhi cara transaksi
ditangani dalam lelang.
Token yang digunakan untuk mengidentifikasi informasi pembeli pihak ketiga akhir jika
bursa sebagai Bidder Terbuka adalah perantara. ID ini diperoleh dari
pembeli pihak ketiga dan harus diteruskan ke Google tanpa diubah dalam respons
bid.
Rekomendasi
Aktifkan koneksi HTTPS persisten (juga dikenal sebagai "keep-alive" atau
"penggunaan ulang koneksi") di server Anda. Tetapkan waktu tunggu ke minimal 10 detik—nilai yang lebih tinggi akan bermanfaat dalam banyak kasus. Google memverifikasi
hal ini selama pengujian latensi awal aplikasi Anda, karena
Authorized Buyers mengirim permintaan dengan kecepatan tinggi dan perlu menghindari
overhead latensi saat membuat koneksi TCP terpisah untuk setiap
permintaan.
Sertakan URL pelacakan tayangan opsional untuk melacak saat tayangan
dirender, bukan saat bidder memenangkan lelang. Karena adanya penurunan
antara kemenangan dan rendering, hal ini menghasilkan statistik pelacakan
yang lebih akurat.
Jaga agar kode bidder Anda bebas dari dependensi pada kolom yang tidak digunakan lagi,
yang dapat menyebabkan bid Anda gagal karena error.
Sertakan BidResponse.seatbid.bid.w dan
BidResponse.seatbid.bid.h dalam BidResponse Anda. A
BidResponse ke permintaan yang menyertakan beberapa ukuran iklan harus
menyertakan kolom ini atau akan dikeluarkan dari lelang.
Batasi ukuran respons Anda hingga di bawah 8K. Respons yang sangat besar dapat meningkatkan latensi jaringan dan menyebabkan waktu tunggu habis.
Penting: Pesan Protobuf yang digambarkan dalam
contoh ditampilkan di sini sebagai teks yang mudah dibaca. Namun, pesan tidak dikirim melalui kabel seperti itu. Saat menggunakan format Protobuf OpenRTB, hanya pesan BidResponse yang diserialisasi yang akan diterima.
Anda dapat membuat dan melakukan serialisasi pesan BidResponse menggunakan
kode C++ berikut:
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
}
Tentukan materi iklan
Respons bid Anda menentukan materi iklan yang akan ditayangkan jika bid Anda menang. Bid Anda harus menyertakan salah satu format iklan yang didukung (AMP, video, native). Dalam
contoh ini, kita menentukan materi iklan menggunakan kolom html_snippet.
Atau, Anda dapat menentukan materi iklan menggunakan salah satu kolom berikut, berdasarkan format iklan:
Iklan yang dirender SDK
BidResponse.seatbid.bid.ext.sdk_rendered_ad
AMP
BidResponse.seatbid.bid.amp_ad_url
Video
BidResponse.seatbid.bid.adm
Native
BidResponse.seatbid.bid.adm_native
Tentukan iklan yang dihosting di server Anda sendiri menggunakan cuplikan HTML di
kolom BidResponse.seatbid.bid.adm. Cuplikan disertakan dalam
iFrame yang disisipkan di halaman web, sehingga iklan diambil dan
dirender saat halaman dimuat. Anda harus membuat cuplikan HTML sehingga iklan (banner atau interstisial) dirender dengan benar di dalam iFrame, dan pada ukuran yang sesuai untuk slot iklan yang Anda bid.
Selain itu, ukuran iklan yang dinyatakan dalam respons bid harus cocok dengan tepat salah satu kombinasi ukuran dalam permintaan bid saat:
Iklan adalah banner reguler (bukan video, native, atau interstisial).
Bidder telah menyatakan ukuran dalam respons bid. Pernyataan ukuran
diperlukan setiap kali ada lebih dari satu ukuran dalam permintaan.
Pengecualian dibuat untuk iklan interstisial. Untuk iklan pengantara, lebar
harus minimal 50% dari lebar layar dan tinggi minimal 40% dari
tinggi layar.
Anda dapat menentukan materi iklan cuplikan HTML menggunakan kode HTML valid yang dirender dengan benar, tetapi perlu diingat batasan dalam menentukan kolom crid di bagian Buat pesan BidResponse.
Salah satu penggunaan untuk ini adalah memasukkan informasi tambahan ke dalam argumen URL yang diambil dari server Anda sebagai bagian dari rendering iklan. Dengan begitu, Anda dapat meneruskan
data arbitrer tentang tayangan kembali ke server Anda sendiri.
Makro adalah teks berformat yang disematkan ke dalam beberapa kolom respons bid yang berisi URL yang diganti dengan nilai yang relevan pada waktu penayangan iklan. Misalnya,
jika bid yang Anda menangkan menyertakan makro AUCTION_PRICE dalam materi iklan cuplikan
HTML yang disertakan dengan bid Anda, makro tersebut akan diganti dengan
nilai yang dapat Anda dekripsi untuk menentukan jumlah yang Anda bayar untuk tayangan iklan dalam
lelang.
Anda dapat menyertakan makro di kolom berikut:
BidResponse.seatbid.bid.adm
Makro didukung untuk cuplikan HTML, native, URL video, dan format XML VAST video.
Gunakan ini, bukan BidResponse.seatbid.bid.burl jika Anda
memerlukan lebih dari satu URL penagihan.
Sebagai contoh, Anda dapat menyertakan makro sebagai bagian dari cuplikan HTML dengan
menyematkan ${MACRO} dalam URL yang digunakan untuk mengambil materi iklan,
dengan MACRO adalah salah satu makro yang didukung yang dijelaskan dalam
spesifikasi OpenRTB.
Makro Google
Google mendukung makro tambahan selain yang ada dalam spesifikasi OpenRTB. Makro ini diformat secara berbeda, dan akan muncul sebagai %%MACRO%% jika disematkan dalam URL. Tabel berikut menjelaskan
makro ini:
Makro
Deskripsi
ADVERTISING_IDENTIFIER
Memungkinkan pembeli menerima IDFA iOS atau ID Iklan Android saat
rendering tayangan iklan.
Lihat Mendekripsi ID Pengiklan
untuk mengetahui detailnya.
CACHEBUSTER
Representasi string dari bilangan bulat empat byte tanpa tanda acak.
CLICK_URL_UNESC
URL klik tanpa konversi karakter untuk iklan. Dalam cuplikan, versi
yang di-escape dari URL klik pihak ketiga harus langsung mengikuti
makro.
Misalnya, jika URL klik pihak ketiga adalah
http://my.adserver.com/some/path/handleclick?click=clk,
maka kode berikut dapat digunakan dengan versi yang di-escape tunggal
dari URL klik pihak ketiga setelah pemanggilan makro:
URL akan mendaftarkan klik terlebih dahulu dengan Google, lalu mengalihkan
ke URL klik pihak ketiga.
CLICK_URL_ESC
URL klik yang di-escape untuk iklan. Gunakan ini, bukan
CLICK_URL_UNESC jika Anda perlu meneruskan nilai terlebih dahulu melalui
server lain yang kemudian akan menampilkan pengalihan.
Misalnya, kode berikut dapat digunakan dalam cuplikan HTML:
Tindakan ini akan mendaftarkan klik dengan my.adserver.com yang
kemudian akan bertanggung jawab untuk mengalihkan ke URL yang diteruskan dalam
parameter google_click_url. Contoh ini mengasumsikan bahwa
my.adserver.com membatalkan escape
parameter google_click_url.
Anda dapat menambahkan URL yang di-escape ganda setelah
%%CLICK_URL_ESC%%. Setelah proses unescape dilakukan oleh
my.adserver.com, akan ada satu versi URL yang di-escape
dan ditambahkan ke google_click_url. Saat
google_click_url diambil, google_click_url akan di-unescape sekali lagi
lalu dialihkan.
CLICK_URL_ESC_ESC
URL yang di-escape dua kali untuk iklan. Gunakan ini, bukan
CLICK_URL_UNESC jika Anda perlu meneruskan nilai terlebih dahulu
melalui server lain yang kemudian akan menampilkan pengalihan.
Misalnya, kode berikut dapat digunakan dalam cuplikan HTML:
Diperluas menjadi http: jika permintaan bid tidak memerlukan SSL atau menjadi
https: jika permintaan bid memerlukan SSL.
SITE
Domain yang di-escape URL dari URL konten atau ID anonim untuk inventaris anonim.
SITE_URL
Tidak digunakan lagi. Digantikan oleh makro SITUS yang menyediakan fungsi yang identik.
TZ_OFFSET
Selisih zona waktu.
VERIFICATION
Nilai yang berbeda untuk produksi dan saat materi iklan dipindai
di pipeline verifikasi. Formatnya adalah:
%%?VERIFICATION:true-val:false-val%% dengan nilai apa pun
kecuali makro dapat digunakan untuk true-val dan
false-val, termasuk string kosong. Untuk Bidding Terbuka, sebaiknya bursa menggunakan makro ini. Setelah bursa melakukannya, platform sisi permintaan tidak perlu melakukan perubahan.
Misalnya, jika materi iklan menyertakan
%%?VERIFICATION:-1:5000%%, penggantian teks
adalah 5000 saat penayangan dan -1 dalam
pipeline verifikasi. Hal ini dilakukan untuk membantu membedakan kedua set ping ini.
WINNING_PRICE
Biaya tayangan iklan yang dienkode (yaitu, CPI, bukan CPM) dalam
mikro mata uang akun. Misalnya, CPM yang menang sebesar $5 USD
sesuai dengan 5.000.000 CPM mikro, atau 5.000 CPI mikro. Nilai WINNING_PRICE yang didekode dalam kasus ini adalah 5.000.
Harga pemenang ditentukan dalam CPI.
Untuk mengurai makro ini, Anda harus menerapkan aplikasi yang
mendekripsi konfirmasi harga. Lihat halaman
Mendekripsi Konfirmasi Harga
untuk mengetahui informasi selengkapnya.
WINNING_PRICE_ESC
WINNING_PRICE yang di-escape URL.
Google mewajibkan Anda menggunakan makro CLICK_URL_UNESC atau
CLICK_URL_ESC dalam materi iklan yang ditayangkan pihak ketiga. Google menggunakan makro CLICK_URL untuk pelacakan klik.
Konversi karakter URL dalam makro menggunakan skema berikut:
Karakter spasi diganti dengan tanda plus (+).
Karakter alfanumerik (0-9, a-z, A-Z) dan karakter dari set !()*,-./:_~ tetap tidak berubah.
Semua karakter lainnya diganti dengan %XX, dengan XX adalah angka
heksadesimal yang merepresentasikan karakter.
Pembatasan dan persyaratan penayang
Permintaan bid menyertakan informasi tentang jenis batasan dan persyaratan yang diterapkan penayang pada materi iklan dalam lelang.
BidRequest.bcat
Anda dapat membandingkan kategori yang diblokir yang ditentukan oleh kolom ini dengan kategori yang terdeteksi untuk materi iklan yang Anda kirimkan menggunakan kolom detectedCategories Real-time Bidding API.
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
Pada praktiknya, ini akan selalu ditetapkan true karena
Google mewajibkan dukungan SSL untuk semua materi iklan.
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
Jangan pernah mengajukan bid dengan iklan yang berisi fitur yang dibatasi. Untuk fitur yang diizinkan
seperti jenis vendor, tampilkan iklan hanya jika jenis vendornya ada dalam
daftar allowed_vendor_type di BidRequest. Hanya format
iklan yang ditentukan dalam permintaan bid dengan mengisi kolom seperti
BidRequest.imp.banner yang harus disertakan dalam bid Anda. Lihat komentar untuk kolom ini dalam definisi buffer protokol BidRequest untuk mengetahui detail selengkapnya.
Jika iklan ditampilkan di BidResponse, Anda harus
menetapkan BidResponse.seatbid.bid.attr,
BidResponse.seatbid.bid.cat, dan salah satu
bidang BidResponse.seatbid.bid.adomain atau
BidResponse.seatbid.bid.adm_native.link.url secara akurat di
BidResponse. Jika iklan memiliki beberapa nilai yang berlaku untuk kolom ini, Anda harus menyertakan setiap nilai. Lihat komentar untuk kolom ini dalam
definisi buffer protokol BidResponse untuk mengetahui detail selengkapnya.
Respons yang tidak menetapkan kolom ini akan diabaikan.
Pengukuran Terbuka
Pengukuran Terbuka memungkinkan Anda menentukan vendor pihak ketiga yang menyediakan layanan pengukuran dan verifikasi independen untuk iklan yang ditayangkan ke lingkungan aplikasi seluler.
Format iklan yang didukung mencakup iklan video, banner, dan interstisial. Untuk mengetahui informasi selengkapnya tentang cara menggunakan Pengukuran Terbuka dalam respons bid yang berisi format ini, lihat artikel Pusat Bantuan Open Measurement SDK.
Contoh respons bid
Bagian berikut menunjukkan contoh respons bid untuk berbagai jenis iklan.
id:"550102L8So5v6gi4C00T36"seatbid{bid{id:"U796oSA426V3U666ue8"impid:"1"price:1.057860016822815crid:"test_creative_id_395811"dealid:"0"adm_native{ver:"1.2"assets{id:6img{url:"https://native.test.com/logo?id=123456"w:200h:200type:LOGO}}assets{id:5img{url:"https://native.test.com/image?id=123456"w:800h:800type:MAIN}}assets{id:4data{value:"Galactic Luxury Cruises"type:SPONSORED}}assets{id:3data{value:"Book today"type:CTATEXT}}assets{id:1title{text:"Luxury Mars Cruises"}}assets{id:2data{value:"Visit the planet in a luxury spaceship."type:DESC}}link{url:"https://www.google.com"}}[com.google.doubleclick.bid]{impression_tracking_url:"https://test.com/impression?id=123456"impression_tracking_url:"https://test.com/impression?id=123456"ad_choices_destination_url:"https://test.com/preferences"event_notification_token{payload:"token"}billing_id:73917825312dsa{adrender:true}clickurl:"google.com"}}}cur:"JPY"[com.google.doubleclick.bid_response]{processing_time_ms:17}
JSON OpenRTB
Berikan contohnya
{"id":"550102L8So5v6gi4C00T36","seatbid":[{"bid":[{"id":"U796oSA426V3U666ue8","impid":"1","price":1.057860016822815,"crid":"test_creative_id_395811","dealid":"0","ext":{"impression_tracking_url":["https://test.com/impression?id=123456","https://test.com/impression?id=123456"],"ad_choices_destination_url":"https://test.com/preferences","event_notification_token":{"payload":"token"},"billing_id":"73917825312","dsa":{"adrender":1},"clickurl":["google.com"]},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":6,\"img\":{\"url\":\"https://native.test.com/logo?id=123456\",\"w\":200,\"h\":200,\"type\":2}},{\"id\":5,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":800,\"h\":800,\"type\":3}},{\"id\":4,\"data\":{\"value\":\"Galactic Luxury Cruises\",\"type\":1}},{\"id\":3,\"data\":{\"value\":\"Book today\",\"type\":12}},{\"id\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\",\"type\":2}}],\"link\":{\"url\":\"https://www.google.com\"}}"}]}],"cur":"JPY","ext":{"processing_time_ms":17}}
[null,null,["Terakhir diperbarui pada 2026-02-23 UTC."],[],["Applications must respond to each `BidRequest` with a parsable `BidResponse`, using Protobuf or an HTTP 204 for no bids. Creatives are identified by a unique `crid`. Ad attributes, such as VPAID and MRAID, are declared in specific fields. Utilize impression tracking URLs and avoid deprecated fields. Open Bidding bid responses are similar to Authorized Buyers. Ad sizes in the response must match the request. Macros are used in URLs. Publisher requirements are specified in the `BidRequest`. The response must accurately reflect these requirements and provide the accurate ad attributes and links.\n"]]