Yanıtı Oluşturun

Uygulamanız Google'dan gelen teklif isteğini işledikten sonra bir yanıt oluşturup göndermelidir. Bu kılavuzda, yanıtı oluşturmak için uygulamanızı nasıl kodlayacağınız açıklanmaktadır.

Teklif yanıtı mesajı oluşturma

Teklif göndermek için teklifli sistem uygulamanız, bir teklif isteğine yapılandırılmış biçiminizde bir Bid içeren bir BidResponse ile yanıt vermelidir. JSON biçimini kullanıyorsanız yanıtınızda Content-Type başlığı application/json; charset=utf-8 olarak ayarlanmalı ve gövdeye JSON BidResponse eklenmelidir. Protobuf biçimini kullanıyorsanız uygulamanız Content-Type üstbilgisini application/octet-stream olarak ayarlamalı ve gövdeye serileştirilmiş BidResponse değerini eklemelidir.

Protobuf biçimi için bir BidResponse oluşturup serileştirmek üzere, sırasıyla standart OpenRTB BidResponse alanlarını ve Google uzantılarını Protobuf'ta uygulayan openrtb.proto ve openrtb-adx.proto temelinde Protobuf kitaplıkları oluşturup kullanmanız gerekir. Bunları Protos & Reference Data (Protokoller ve Referans Verileri) bölümünde bulabilirsiniz.

Bir gösterime teklif vermek istemiyorsanız boş bir HTTP 204 yanıtı döndürmeniz gerekir. Uygulamanız her BidRequest için yanıt döndürmelidir. Zaman aşımları ve ayrıştırılamayan yanıtlar hata olarak kabul edilir. Google, hata oranları yüksek olan teklif verenleri kısıtlar.

Reklam Öğesi Kimliği

BidResponse, BidResponse.seatbid.bid.crid alanı aracılığıyla bir reklam öğesi belirtiyor (128 bayt sınırı). Benzer reklam öğeleri bile boyut, beyan edilen URL, reklam öğesi özellikleri ve sağlayıcı türleri dahil ancak bunlarla sınırlı olmamak üzere önemli özellikler açısından farklılık gösteriyorsa bu alan için benzersiz değerlere sahip olmalıdır. Başka bir deyişle, aşağıdaki koşulları karşılayan iki reklama farklı reklam öğesi kimlikleri vermeniz gerekir:

  • Farklı görünür veya farklı davranır.
  • Farklı görüntüler oluşturun.
  • Farklı yöntemlerle oluşturulmuş (ör. bir reklam resimden, diğeri videodan oluşur).

Uygulamanızı tasarlarken, göndermeyi planladığınız reklam öğesi türleri için anlamlı tanımlayıcılar oluşturmanın sistematik bir yoluna karar vermelisiniz.

Reklam özellikleri

Google, reklamınızın özelliklerini ve hedeflemesini açıklamak için reklam öğesi özelliklerini BidResponse.seatbid.bid.apis ve BidResponse.seatbid.bid.attr kombinasyonu ya da BidResponse.seatbid.bid.ext.attribute uzantısı kullanarak bildirmenizi önerir. Aşağıda, özellikleri nasıl bildirebileceğiniz açıklanmaktadır:

  • VPAID
    BidResponse.seatbid.bid.apis öğesini VPAID_1 veya VPAID_2 olarak ayarlayın. JSON biçiminde bu değer sırasıyla 1 veya 2 olarak ayarlanabilir.
  • MRAID
    BidResponse.seatbid.bid.apis öğesini JSON biçimi için MRAID_1 veya 3 olarak ayarlayın.
  • SIZELESS
    BidResponse.seatbid.bid.attr öğesini JSON biçimi için RESPONSIVE veya 18 olarak ayarlayın.
  • PLAYABLE
    Bu, BidResponse.seatbid.bid.attr öğesini USER_INTERACTIVE olarak ayarlayarak veya JSON biçimi için 13 olarak ayarlayarak belirtilir.

Reklam öğelerinizin algılanan özellikleri hakkında nasıl geri bildirim alacağınızla ilgili açıklama için Reklam öğeleri kaynağına bakın.

Open Bidding alanları

Open Bidding'e katılan exchange ve ağ teklif verenleri tarafından gönderilen teklif yanıtları, standart gerçek zamanlı teklif verme işlemine katılan Authorized Buyers'ın teklif yanıtlarına benzer. Open Bidding müşterileri az sayıda ek alan belirleyebilir ve mevcut alanlardan bazıları alternatif kullanımlara sahip olabilir. Bu politikalara şunlar dahildir:

Alan Ayrıntılar
BidResponse.imp.pmp.deals.id

Bu teklifle ilişkili olan ve yayıncılara bildirilen, borsa ad alanındaki anlaşma kimliği.

BidResponse.seatbid.bid.ext.exchange_deal_type

Yayıncılara bildirilen anlaşma türü, anlaşmanın açık artırmada nasıl ele alındığını etkiler.

BidResponse.seatbid.bid.ext.third_party_buyer_token Borsa, Open Bidding kullanıcısı olarak bir aracıysa üçüncü taraf alıcı bilgilerini tanımlamak için kullanılan jeton. Bu değer, üçüncü taraf alıcıdan alınır ve teklif yanıtında Google'a değiştirilmeden iletilmelidir.

Öneriler

  • Sunucularınızda kalıcı HTTPS bağlantılarını ("keep-alive" veya "bağlantı yeniden kullanımı" olarak da bilinir) etkinleştirin. Zaman aşımını en az 10 saniye olarak ayarlayın. Daha yüksek değerler çoğu durumda faydalıdır. Google, Authorized Buyers yüksek hızda istek gönderdiği ve her istek için ayrı bir TCP bağlantısı oluşturmanın gecikme yükünden kaçınması gerektiği için uygulamanızın ilk gecikme testleri sırasında bunu doğrular.
  • Teklif veren kazandığında değil, gösterim oluşturulduğunda izlemek için isteğe bağlı gösterim izleme URL'sini ekleyin. Kazanma ve oluşturma arasındaki düşüş nedeniyle bu, daha doğru izleme istatistikleri sağlar.

  • Teklif verenin kodunuzu, tekliflerinizin hatalarla başarısız olmasına neden olabilecek kullanımdan kaldırılmış alanlara bağımlı olmayacak şekilde tutun.
  • BidResponse öğenize BidResponse.seatbid.bid.w ve BidResponse.seatbid.bid.h'ı ekleyin. Birden fazla reklam boyutu içeren bir isteğe verilen A BidResponse yanıtı, bu alanları içermelidir. Aksi takdirde açık artırmadan çıkarılır.
  • Yanıtınızın boyutunu 8 KB'ın altında tutun. Çok büyük yanıtlar, ağ gecikmesini artırabilir ve zaman aşımlarına neden olabilir.
  • SKAdNetwork ilişkilendirmesi gerektiren iOS envanterindeki tekliflerle ilgili yönergeleri uygulayın.

Örnek teklif yanıtı

Aşağıdaki örnekler, Protobuf ve JSON isteklerinin okunabilir örneklerini gösterir.

OpenRTB Protobuf

OpenRTB JSON

Önemli: Örneklerde gösterilen Protobuf mesajları burada okunabilir metin olarak gösterilmektedir. Ancak iletiler kablo üzerinden bu şekilde gönderilmez. OpenRTB Protobuf biçimi kullanılırken yalnızca seri hale getirilmiş BidResponse mesajları kabul edilir.

Aşağıdaki C++ kodunu kullanarak BidResponse mesajı oluşturup serileştirebilirsiniz:

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
}

Reklam öğesini belirtme

Teklifiniz kazanırsa yayınlanacak reklam öğesi, teklif yanıtınızda belirtilir. Teklifiniz, desteklenen reklam biçimlerinden birini (AMP, video, yerel) içermelidir. Bu örnekte, reklam öğesini html_snippet alanını kullanarak belirtiyoruz.

Alternatif olarak, reklam biçimine bağlı olarak aşağıdaki alanlardan birini kullanarak reklam öğenizi belirtebilirsiniz:

  • SDK tarafından oluşturulan reklam
    • BidResponse.seatbid.bid.ext.sdk_rendered_ad
  • AMP
    • BidResponse.seatbid.bid.amp_ad_url
  • Video
    • BidResponse.seatbid.bid.adm
  • Yerel
    • BidResponse.seatbid.bid.adm_native

BidResponse.seatbid.bid.adm alanındaki bir HTML snippet'ini kullanarak kendi sunucularınızda barındırılan bir reklam belirtin. Snippet, web sayfasına yerleştirilen bir iFrame'in içine alınır. Bu nedenle, sayfa yüklendiğinde reklam alınır ve oluşturulur. HTML snippet'ini, reklamın (banner veya geçiş reklamı) bir iFrame içinde doğru şekilde ve teklif verdiğiniz reklam alanı için uygun bir boyutta oluşturulacak şekilde hazırlamanız gerekir.

Ayrıca, teklif yanıtında belirtilen reklam boyutu, şu durumlarda teklif isteğindeki boyut kombinasyonlarından tam olarak biriyle eşleşmelidir:

  • Reklam normal bir banner'dır (video, yerel veya geçiş reklamı değildir).
  • Teklif veren, teklif yanıtında boyutu belirtmiştir. İstek içinde birden fazla boyut olduğunda boyut bildirimi zorunludur.
  • Geçiş reklamları için istisna yapılır. Geçiş reklamları için genişlik, ekran genişliğinin en az% 50'si, yükseklik ise ekran yüksekliğinin en az% 40'ı olmalıdır.

Düzgün şekilde oluşturulan geçerli bir HTML kodu kullanarak HTML snippet reklam öğesi belirtebilirsiniz. Ancak crid alanını Create BidResponse message bölümünde belirtmeyle ilgili kısıtlamaları göz önünde bulundurun. Bu işlevin bir kullanım alanı, reklam oluşturma sürecinde sunucularınızdan getirilen URL'lerin bağımsız değişkenlerine ek bilgiler yerleştirmektir. Bu sayede gösterimle ilgili rastgele verileri kendi sunucularınıza iletebilirsiniz.

Teklif yanıtlarında döndürülen HTML snippet'leriyle ilgili politikaların çoğu, üçüncü taraf reklamlarıyla aynıdır. Daha fazla bilgi için Authorized Buyers Program Kuralları, Üçüncü taraf reklam yayınlama koşulları ve Reklamlardaki tıklama URL'lerini bildirme başlıklı makaleleri inceleyin.

Makro belirtme

Makrolar, teklif yanıtı alanlarına yerleştirilmiş biçimlendirilmiş metinlerdir. Bu alanlar, reklam yayınlama sırasında ilgili değerle değiştirilen URL'ler içerir. Örneğin, kazanan teklifinizde teklifinizle birlikte gönderilen HTML snippet reklam öğesinde AUCTION_PRICE makrosu varsa makro, açık artırmada gösterim için ödediğiniz tutarı belirlemek üzere şifresini çözebileceğiniz bir değerle değiştirilir.

Aşağıdaki alanlara makro ekleyebilirsiniz:

  • BidResponse.seatbid.bid.adm

    Makrolar; HTML snippet'i, doğal, video URL'si ve video VAST XML biçimleri için desteklenir.

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

  • BidResponse.seatbid.bid.adm_native.imptrackers

  • BidResponse.seatbid.bid.ext.amp_ad_url

    AMP reklam öğelerinde yalnızca Google'a özgü WINNING_PRICE ve WINNING_PRICE_ESC makroları desteklenir.

  • BidResponse.seatbid.bid.burl

  • BidResponse.seatbid.bid.ext.impression_tracking_url

    Birden fazla faturalandırma URL'si gerekiyorsa BidResponse.seatbid.bid.burl yerine bunu kullanın.

Örneğin, reklam öğesini getirmek için kullanılan URL'ye ${MACRO} yerleştirerek bir HTML snippet'ine makro ekleyebilirsiniz. Burada MACRO, OpenRTB spesifikasyonunda açıklanan desteklenen makrolardan biridir.

Google makroları

Google, OpenRTB spesifikasyonunda bulunanların dışında ek makroları da destekler. Bunlar farklı şekilde biçimlendirilir ve bir URL'ye yerleştirildiklerinde %%MACRO%% olarak görünür. Aşağıdaki tabloda bu makrolar açıklanmaktadır:

Macro Açıklama
ADVERTISING_IDENTIFIER Alıcıların, gösterim oluşturma sırasında iOS IDFA veya Android'in reklam kimliğini almasına olanak tanır. Ayrıntılar için Reklamveren Tanımlayıcılarının Şifresini Çözme başlıklı makaleyi inceleyin.
CACHEBUSTER Rastgele, işaretsiz, dört baytlık bir tam sayının dize gösterimi.
CLICK_URL_UNESC

Reklamın çıkış karakteri içermeyen tıklama URL'si. Snippet'te, üçüncü taraf tıklama URL'sinin kaçış karakteri eklenmiş sürümü doğrudan makroyu takip etmelidir.

Örneğin, üçüncü taraf tıklama URL'si http://my.adserver.com/some/path/handleclick?click=clk ise makro çağrısından sonra üçüncü taraf tıklama URL'sinin tek çıkış karakterli sürümüyle aşağıdaki kod kullanılabilir:

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

Bu, reklam sunma sırasında şu şekilde genişletilir:

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

URL, önce tıklamayı Google'a kaydeder, ardından üçüncü taraf tıklama URL'sine yönlendirir.

CLICK_URL_ESC

Reklamın kaçış karakterli tıklama URL'si. Değeri önce yeniden yönlendirme döndürecek başka bir sunucudan geçirmeniz gerekiyorsa CLICK_URL_UNESC yerine bunu kullanın.

Örneğin, bir HTML snippet'inde aşağıdaki kod kullanılabilir:

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

Bu, reklam sunma sırasında şu şekilde genişletilir:

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

Bu işlem, tıklamayı my.adserver.com ile kaydeder. my.adserver.com, google_click_url parametresinde iletilen URL'ye yönlendirmekten sorumlu olur. Bu, my.adserver.com parametresinin google_click_url parametresinden çıkış yapıldığını varsayar.

%%CLICK_URL_ESC%% sonrasına çift kaçışlı bir URL ekleyebilirsiniz. my.adserver.com tarafından çıkış karakteri kaldırma işlemi yapıldıktan sonra, google_click_url'ye URL'nin tek çıkış karakterli sürümü eklenir. google_click_url getirildiğinde bir kez daha çıkış karakterinden kurtulacak ve ardından yönlendirme yapılacak.

CLICK_URL_ESC_ESC

Reklamın çift kaçışlı URL'si. Değeri önce yeniden yönlendirme döndürecek başka bir sunucudan geçirmeniz gerekiyorsa CLICK_URL_UNESC yerine bunu kullanın.

Örneğin, bir HTML snippet'inde aşağıdaki kod kullanılabilir:

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

Bu, reklam sunma sırasında şu şekilde genişletilir:

<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 Teklif isteği SSL gerektirmiyorsa http:, teklif isteği SSL gerektiriyorsa https: olarak genişletilir.
SITE İçerik URL'sinin URL'den kaçılmış alan adı veya anonim envanter için anonim kimlik.
SITE_URL Kullanımdan kaldırıldı. Aynı işlevi sağlayan SITE makrosuyla değiştirildi.
TZ_OFFSET Saat dilimi farkı.
VERIFICATION

Reklam öğesinin doğrulama hattında tarandığı zaman ve üretimle ilgili farklı değerler. Biçim şöyledir: %%?VERIFICATION:true-val:false-val%%. Burada true-val ve false-val için makrolar hariç tüm değerler (boş dizeler dahil) kullanılabilir. Açık Artırma için borsaların bu makroyu kullanmasını öneririz. Bu makro kullanıldığında talep tarafı platformların değişiklik yapması gerekmez.

Örneğin, bir reklam öğesi %%?VERIFICATION:-1:5000%% içeriyorsa yayın sırasında metin değiştirme 5000, doğrulama işlem hattında ise -1 olur. Bu, iki ping grubu arasında ayrım yapmaya yardımcı olur.

WINNING_PRICE

Hesap para biriminin mikro cinsinden kodlanmış gösterim maliyeti (yani BGBM yerine GPM). Örneğin, 5 ABD doları tutarındaki bir kazanan BGBM, 5.000.000 mikro BGBM'ye veya 5.000 mikro GB'ye karşılık gelir. Bu durumda WINNING_PRICE değerinin kodu çözülmüş hali 5.000 olur. Kazanan fiyat, CPI cinsinden belirtilir.

Bu makroyu ayrıştırmak için fiyat onaylarının şifresini çözen bir uygulama uygulamanız gerekir. Daha fazla bilgi için Fiyat Onaylarının Şifresini Çözme sayfasına bakın.

WINNING_PRICE_ESC URL'de kaçış karakteri kullanılan WINNING_PRICE.

Google, üçüncü taraf tarafından yayınlanan reklamın reklam öğesinde CLICK_URL_UNESC veya CLICK_URL_ESC makrosunu kullanmanızı zorunlu kılar. Google, tıklama izleme için CLICK_URL makrolarını kullanır.

Makrolarda URL çıkışı için aşağıdaki şema kullanılır:

  • Boşluk karakterinin yerine artı işareti (+) kullanılır.
  • Alfanümerik karakterler (0-9, a-z, A-Z) ve !()*,-./:_~ kümesindeki karakterler değişmeden kalır.
  • Diğer tüm karakterler %XX ile değiştirilir. Burada XX, karakteri temsil eden onaltılık sayıdır.

Yayıncı kısıtlamaları ve koşulları

Teklif isteği, yayıncıların açık artırmadaki reklam öğelerine uyguladığı kısıtlama ve şart türleriyle ilgili bilgiler içerir.

  • BidRequest.bcat
    • Bu alan tarafından belirtilen engellenen kategorileri, Real-time Bidding API'nin detectedCategories alanı kullanılarak gönderilen reklam öğeleriniz için algılanan kategorilerle karşılaştırabilirsiniz.
  • BidRequest.imp.ext.allowed_vendor_type
  • BidRequest.imp.secure
    • Google, tüm reklam öğeleri için SSL desteği gerektirdiğinden bu ayar pratikte her zaman true olarak belirlenir.
  • 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

Kısıtlanmış bir özellik içeren reklamla asla teklif vermeyin. Tedarikçi türü gibi izin verilen özellikler için, yalnızca tedarikçi türü BidRequest içindeki allowed_vendor_type listesinde yer alıyorsa reklam döndürün. Teklifinize yalnızca teklif isteğinde belirtilen reklam biçimleri dahil edilmelidir. Bu biçimler, BidRequest.imp.banner gibi alanlar doldurularak belirtilir. Daha fazla bilgi için BidRequest protokol arabelleği tanımındaki bu alanlarla ilgili yorumlara bakın.

BidResponse içinde bir reklam döndürülürse BidResponse içinde BidResponse.seatbid.bid.attr, BidResponse.seatbid.bid.cat ve BidResponse.seatbid.bid.adomain ya da BidResponse.seatbid.bid.adm_native.link.url alanlarını doğru şekilde ayarlamanız gerekir. Bir reklamın bu alanlar için geçerli birden fazla değeri varsa her değeri eklemeniz gerekir. Daha fazla bilgi için BidResponse protokol arabelleği tanımındaki bu alanlarla ilgili yorumlara bakın. Bu alanları ayarlanmamış yanıtlar silinir.

Open Measurement

Open Measurement, mobil uygulama ortamlarında yayınlanan reklamlar için bağımsız ölçüm ve doğrulama hizmetleri sağlayan üçüncü taraf tedarikçileri belirtmenize olanak tanır.

Desteklenen reklam biçimleri arasında video, banner ve geçiş reklamları yer alır. Bu biçimleri içeren bir teklif yanıtında Open Measurement'ın nasıl kullanılacağı hakkında daha fazla bilgi için Open Measurement SDK Yardım Merkezi makalesine bakın.

Örnek teklif yanıtları

Aşağıdaki bölümlerde, farklı reklam türleri için örnek teklif yanıtları gösterilmektedir.

Uygulama banner'ı

OpenRTB Protobuf

OpenRTB JSON

Uygulama Geçiş Reklamı

OpenRTB Protobuf

OpenRTB JSON

Uygulama geçiş video reklamı

OpenRTB Protobuf

OpenRTB JSON

Uygulama yerel

OpenRTB Protobuf

OpenRTB JSON

Web videosu

OpenRTB Protobuf

OpenRTB JSON

Borsa teklif vereni için mobil web banner'ı

OpenRTB Protobuf

OpenRTB JSON