پس از اینکه درخواست شما درخواست پیشنهاد از طرف Google را پردازش کرد، باید پاسخی بسازد و ارسال کند. این راهنما توضیح می دهد که چگونه برنامه خود را برای ایجاد پاسخ کدنویسی کنید.
پیام Protobuf BidResponse ایجاد کنید
خریداران مجاز BidRequest به عنوان متن پیام یک HTTP POST ارسال می کنند. اگر نقطه پایان مناقصه شما برای استفاده از فرمت Protobuf پیکربندی شده است، برنامه شما باید پاسخی را با هدر Content-Type تنظیم شده روی application/octet-stream و یک متن پیام متشکل از یک بافر پروتکل سریالی ارسال کند. بافر پروتکل یک پیام BidResponse است که در openrtb.proto تعریف شده است. درخواست شما باید یک BidResponse قابل تجزیه را در پاسخ به هر BidRequest برگرداند. زمانبندیها و پاسخهایی که قابل تجزیه نیستند، خطا در نظر گرفته میشوند و Google پیشنهاد دهندگان را با نرخ خطای بالا کاهش میدهد.
اگر نمیخواهید برای یک نمایش پیشنهاد قیمت بدهید، باید یک پاسخ HTTP 204 خالی برگردانید. می توانید openrtb.proto از صفحه داده های مرجع دریافت کنید.
شناسه خلاق
BidResponse شما یک خلاقیت را از طریق فیلد BidResponse.seatbid.bid.crid (محدودیت 64 بایت) مشخص می کند. حتی خلاقیتهای مشابه باید مقادیر منحصر به فردی برای این فیلد داشته باشند، اگر از نظر ویژگیهای قابلتوجهی متفاوت باشند، از جمله: اندازه، URL اعلامشده، ویژگیهای خلاقانه، و انواع فروشنده. به عبارت دیگر، شما باید به هر دو آگهی که:
متفاوت نگاه کنید یا رفتار کنید.
رندر به تصاویر مختلف
رندر با ابزارهای مختلف (به عنوان مثال، یک تبلیغ از یک تصویر تشکیل شده است، در حالی که دیگری یک ویدیو است).
همانطور که برنامه خود را طراحی می کنید، باید در مورد روشی سیستماتیک برای تولید شناسه تصمیم بگیرید که برای انواع خلاقیت هایی که قصد ارسال آن را دارید منطقی باشد.
ویژگی های آگهی
Google توصیه میکند که ویژگیهای خلاقانه را برای توصیف ویژگیهای تبلیغ و هدفیابی آن با استفاده از ترکیبی از BidResponse.seatbid.bid.apis و BidResponse.seatbid.bid.attr یا پسوند BidResponse.seatbid.bid.ext.attribute اعلام کنید. موارد زیر نحوه بیان ویژگی ها را توضیح می دهد:
VPAID
BidResponse.seatbid.bid.apis روی VPAID_1 یا VPAID_2 تنظیم کنید. برای فرمت JSON، این می تواند به ترتیب روی 1 یا 2 تنظیم شود.
MRAID
BidResponse.seatbid.bid.apis روی MRAID_1 یا 3 برای قالب JSON تنظیم کنید.
SIZELESS
BidResponse.seatbid.bid.attr روی RESPONSIVE یا 18 برای قالب JSON تنظیم کنید.
PLAYABLE
این با تنظیم BidResponse.seatbid.bid.attr روی USER_INTERACTIVE یا 13 برای قالب JSON نشان داده می شود.
برای توضیح نحوه دریافت بازخورد در مورد ویژگیهای شناسایی شده خلاقیتهایتان، به منبع Creatives مراجعه کنید.
باز کردن زمینه های مناقصه
پاسخ های پیشنهادی ارسال شده توسط پیشنهاد دهندگان مبادله ای و شبکه شرکت کننده در مناقصه باز مشابه پاسخ های خریداران مجاز شرکت کننده در مناقصه استاندارد بلادرنگ است. مشتریان مناقصه باز میتوانند تعداد کمی فیلد اضافی را مشخص کنند، و چند فیلد موجود ممکن است کاربردهای جایگزین داشته باشند. این موارد شامل موارد زیر است:
OpenRTB
خریداران مجاز
جزئیات
BidResponse.imp[].pmp.deals[].id
BidResponse.ad[].adslot[].exchange_deal_id
شناسه معامله از فضای نام صرافی که با این پیشنهاد مرتبط است و به ناشران گزارش میشود.
اگر صرافی به عنوان یک مناقصه آزاد یک واسطه باشد، رمز برای شناسایی اطلاعات خریدار شخص ثالث نهایی استفاده می شود. این مورد از خریدار شخص ثالث دریافت میشود و باید بدون تغییر در پاسخ پیشنهاد به Google ارسال شود.
توصیه ها
اتصالات HTTPS دائمی (همچنین به عنوان "keep-alive" یا "connection reuse" شناخته می شود) را در سرورهای خود فعال کنید. حداقل تایم اوت را روی 10 ثانیه تنظیم کنید—مقادیر بالاتر در بسیاری از موارد مفید هستند. Google این مورد را در طول آزمایشهای تاخیر اولیه برنامه شما تأیید میکند، زیرا خریداران مجاز درخواستها را با نرخ بالایی ارسال میکنند و باید از سربار تأخیر ایجاد یک اتصال TCP جداگانه برای هر درخواست اجتناب کنند.
نشانی وب اختیاری ردیابی نمایش را برای ردیابی زمان نمایش نمایش به جای زمانی که پیشنهاد دهنده برنده می شود، اضافه کنید. به دلیل افت بین بردها و رندرها، این آمار ردیابی دقیق تری را به همراه دارد.
کد پیشنهادی خود را بدون وابستگی به فیلدهای منسوخ نگه دارید، که می تواند باعث شکست پیشنهادات شما با خطا شود.
BidResponse.seatbid.bid.w و BidResponse.seatbid.bid.h در BidResponse خود قرار دهید. یک BidResponse به درخواستی که شامل چندین اندازه تبلیغات است باید شامل این فیلدها باشد در غیر این صورت از حراج حذف خواهد شد.
اندازه پاسخ خود را به کمتر از 8K محدود کنید. پاسخهای بسیار بزرگ ممکن است تأخیر شبکه را افزایش داده و باعث وقفه شود.
مهم: پیام های Protobuf نشان داده شده در نمونه ها در اینجا به عنوان متن قابل خواندن توسط انسان نشان داده می شوند. با این حال، پیام ها به این صورت از طریق سیم ارسال نمی شوند. هنگام استفاده از قالب Google یا OpenRTB Protobuf، فقط پیامهای BidResponse سریال پذیرفته میشوند.
می توانید با استفاده از کد C++ زیر یک پیام BidResponse ایجاد و سریال کنید:
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.seatbid.bid.ext.sdk_rendered_ad
AMP
BidResponse.seatbid.bid.amp_ad_url
ویدئو
BidResponse.seatbid.bid.adm
بومی
BidResponse.seatbid.bid.adm_native
تبلیغی را مشخص کنید که با استفاده از یک قطعه HTML در قسمت BidResponse.seatbid.bid.adm روی سرور(های) خود میزبانی می شود. این قطعه در یک iFrame درج شده در صفحه وب محصور می شود و در نتیجه آگهی بازیابی و هنگام بارگذاری صفحه نمایش داده می شود. شما باید قطعه HTML را طوری بسازید که تبلیغ (بنر یا بینابینی) به درستی در iFrame و در اندازه مناسب برای جایگاه تبلیغاتی که در آن مناقصه میدهید ارائه شود.
علاوه بر این، اندازه آگهی اعلام شده در پاسخ پیشنهاد باید دقیقاً با یکی از ترکیبات اندازه در درخواست پیشنهاد مطابقت داشته باشد زمانی که:
یک آگهی یک بنر معمولی است (نه ویدیو، بومی یا بینابینی).
مناقصه گزار اندازه را در پاسخ مناقصه اعلام کرده است. هر زمان که بیش از یک اندازه در درخواست وجود داشته باشد، اعلام اندازه لازم است.
برای تبلیغات بینابینی استثنا قائل شده است. برای موارد بینابینی، عرض باید حداقل 50 درصد عرض صفحه و ارتفاع حداقل 40 درصد از ارتفاع صفحه باشد.
میتوانید با استفاده از هر کد HTML معتبری که به درستی رندر میشود، یک خلاقیت قطعه HTML را مشخص کنید، اما محدودیتهای تعیین فیلد crid را در بخش Create BidResponse پیام در نظر داشته باشید. یکی از کاربردهای این کار قرار دادن اطلاعات اضافی در آرگومان های URL هایی است که به عنوان بخشی از رندر آگهی از سرورهای شما واکشی می شوند. این به شما امکان میدهد دادههای دلخواه مربوط به نمایش را به سرورهای خود ارسال کنید.
ماکروها متن قالببندیشدهای هستند که در برخی از فیلدهای پاسخ پیشنهادی حاوی URLهایی هستند که در زمان ارائه آگهی با یک مقدار مرتبط جایگزین میشوند. برای مثال، اگر پیشنهاد برنده شما شامل ماکرو AUCTION_PRICE در خلاقیت قطعه HTML همراه با پیشنهاد شما باشد، ماکرو با مقداری جایگزین میشود که میتوانید آن را رمزگشایی کنید تا مبلغی را که برای نمایش در حراج پرداخت کردهاید تعیین کنید.
می توانید ماکروها را در فیلدهای زیر قرار دهید:
BidResponse.seatbid.bid.adm
ماکروها برای قالبهای قطعه HTML، بومی، URL ویدیو، و فرمتهای VAST XML ویدیویی پشتیبانی میشوند.
اگر به بیش از یک URL صدور صورت حساب نیاز دارید، از این به جای BidResponse.seatbid.bid.burl استفاده کنید.
به عنوان مثال، میتوانید با قرار دادن ${MACRO} در URL مورد استفاده برای واکشی خلاقیت، یک ماکرو را بهعنوان بخشی از یک قطعه HTML بگنجانید، جایی که MACRO یکی از ماکروهای پشتیبانی شده است که در مشخصات OpenRTB توضیح داده شده است.
ماکروهای گوگل RTB
گوگل از ماکروهای اضافی به غیر از مواردی که در مشخصات OpenRTB یافت می شود، پشتیبانی می کند. اینها قالب بندی متفاوتی دارند و اگر در URL جاسازی شوند به صورت %%MACRO%% ظاهر می شوند. جدول زیر این ماکروها را توضیح می دهد:
ماکرو
توضیحات
ADVERTISING_IDENTIFIER
به خریداران این امکان را می دهد که IDFA iOS یا شناسه تبلیغاتی Android را در نمایش نمایش دریافت کنند. برای جزئیات بیشتر به رمزگشایی شناسههای تبلیغکننده مراجعه کنید.
CACHEBUSTER
نمایش رشته ای از یک عدد صحیح تصادفی، بدون علامت، چهار بایتی.
CLICK_URL_UNESC
نشانی وب کلیک بدون فرار برای آگهی. در قطعه، یک نسخه فرار از URL کلیک شخص ثالث باید مستقیماً از ماکرو پیروی کند.
به عنوان مثال، اگر URL کلیک شخص ثالث http://my.adserver.com/some/path/handleclick?click=clk باشد، کد زیر را می توان با نسخه تکی از URL کلیک شخص ثالث پس از فراخوانی کلان استفاده کرد:
URL ابتدا کلیک را در Google ثبت می کند و سپس به URL کلیک شخص ثالث هدایت می شود.
CLICK_URL_ESC
نشانی اینترنتی کلیک فرار شده برای آگهی. اگر لازم است ابتدا مقدار را از طریق سرور دیگری که سپس یک تغییر مسیر را برمی گرداند، از این به جای CLICK_URL_UNESC استفاده کنید.
به عنوان مثال، کد زیر را می توان در یک قطعه HTML استفاده کرد:
این کلیک را در my.adserver.com ثبت میکند که سپس مسئول هدایت مجدد به URL ارسال شده در پارامتر google_click_url خواهد بود. این فرض میکند که my.adserver.com از پارامتر google_click_url خارج میشود.
میتوانید پس از %%CLICK_URL_ESC%% یک نشانی وب دوبار فرار اضافه کنید. پس از انجام unescaping توسط my.adserver.com ، یک نسخه تکی از URL به google_click_url اضافه می شود. وقتی google_click_url واکشی شد، یک بار دیگر از حالت Escape خارج می شود و سپس هدایت می شود.
CLICK_URL_ESC_ESC
نشانی اینترنتی دوگانه برای آگهی. اگر لازم است ابتدا مقدار را از طریق سرور دیگری که سپس یک تغییر مسیر را برمی گرداند، از این به جای CLICK_URL_UNESC استفاده کنید.
به عنوان مثال، کد زیر را می توان در یک قطعه HTML استفاده کرد:
اگر درخواست پیشنهاد به SSL نیاز ندارد به http: گسترش می یابد یا اگر درخواست پیشنهاد به SSL نیاز دارد به https: گسترش می یابد.
SITE
دامنه URL محتوا یا شناسه ناشناس موجودی ناشناس.
SITE_URL
منسوخ شده است. ماکرو SITE جایگزین شده است که عملکرد یکسانی را ارائه می دهد.
TZ_OFFSET
افست منطقه زمانی
VERIFICATION
مقادیر مختلف برای تولید و زمانی که خلاقیت در خط لوله تأیید اسکن می شود. قالب این است: %%?VERIFICATION:true-val:false-val%% که در آن هر مقدار به جز ماکروها را می توان برای true-val و false-val استفاده کرد، از جمله رشته های خالی. برای مناقصه باز، توصیه می کنیم صرافی ها از این ماکرو استفاده کنند. پس از انجام این کار، پلتفرم های سمت تقاضا نیازی به ایجاد تغییرات ندارند.
به عنوان مثال، اگر قرار باشد یک خلاق %%?VERIFICATION:-1:5000%% را شامل شود، جایگزینی متن 5000 در هنگام ارائه و -1 در خط لوله تأیید خواهد بود. این برای کمک به تمایز بین این دو مجموعه پینگ است.
WINNING_PRICE
هزینه نمایش رمزگذاری شده (یعنی CPI به جای CPM) در میکرو ارز حساب. به عنوان مثال، CPM برنده 5 دلار آمریکا معادل 5000000 میکرو CPM یا 5000 میکرو CPI است. مقدار رمزگشایی شده WINNING_PRICE در این مورد 5000 خواهد بود. قیمت برنده در CPI مشخص شده است.
برای تجزیه این ماکرو، باید برنامهای را پیادهسازی کنید که تأییدیههای قیمت را رمزگشایی میکند. برای اطلاعات بیشتر به صفحه تایید قیمت رمزگشایی مراجعه کنید.
WINNING_PRICE_ESC
WINNING_PRICE از URL فرار کرد.
Google از شما میخواهد که از ماکرو CLICK_URL_UNESC یا CLICK_URL_ESC در خلاقیت تبلیغ ارائهشده توسط شخص ثالث استفاده کنید. Google از ماکروهای CLICK_URL برای ردیابی کلیک استفاده می کند.
URL فرار در ماکروها از طرح زیر استفاده می کند:
کاراکتر فاصله با علامت مثبت ( + ) جایگزین می شود.
کاراکترهای الفبایی (0-9، az، AZ) و کاراکترهای مجموعه !()*،-./:_~ بدون تغییر باقی می مانند.
همه نویسههای دیگر با %XX جایگزین میشوند، که در آن XX عدد هگزادسیمال نشاندهنده کاراکتر است.
محدودیت ها و الزامات ناشر
درخواست مناقصه شامل اطلاعاتی درباره انواع محدودیتها و الزاماتی است که ناشران برای خلاقیتها در حراج اعمال میکنند.
BidRequest.bcat
میتوانید دستههای مسدودشده مشخصشده توسط این فیلد را با دستههای شناسایی شده برای خلاقیتهای ارسالیتان با استفاده از فیلد detectedCategories API Bidding در زمان واقعی مقایسه کنید.
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
در عمل این همیشه true است زیرا Google برای همه خلاقیت ها به پشتیبانی SSL نیاز دارد.
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
هرگز با تبلیغاتی که دارای یک ویژگی محدود است، پیشنهاد قیمت ندهید. برای ویژگیهای مجاز مانند نوع فروشنده، آگهی را فقط در صورتی برگردانید که نوع فروشنده آن در لیست allowed_vendor_type در BidRequest باشد. فقط قالبهای تبلیغاتی که در درخواست مناقصه با پر کردن فیلدهایی مانند BidRequest.imp.banner مشخص شدهاند باید در پیشنهاد شما گنجانده شوند. برای جزئیات بیشتر به نظرات این فیلدها در تعریف بافر پروتکل BidRequest مراجعه کنید.
اگر تبلیغی در BidResponse برگردانده شد، باید BidResponse.seatbid.bid.attr ، BidResponse.seatbid.bid.cat ، و BidResponse.seatbid.bid.adomain یا BidResponse.seatbid.bid.adm_native.link.urlBidResponse دقیقا تنظیم کنید. اگر یک تبلیغ دارای چندین مقدار قابل اجرا برای این فیلدها باشد، باید هر مقدار را درج کنید. برای جزئیات بیشتر به نظرات این فیلدها در تعریف بافر پروتکل BidResponse مراجعه کنید. پاسخهایی که این فیلدها را تنظیم نکردهاند، کنار گذاشته میشوند.
باز کردن اندازه گیری
Open Measurement به شما امکان میدهد فروشندههای شخص ثالثی را مشخص کنید که خدمات اندازهگیری و تأیید مستقلی را برای تبلیغات ارائهشده در محیطهای برنامه تلفن همراه ارائه میکنند.
فرمت های تبلیغاتی پشتیبانی شده شامل ویدئو، بنر و تبلیغات بینابینی است. برای اطلاعات بیشتر در مورد نحوه استفاده از Open Measurement در یک پاسخ پیشنهادی حاوی این قالبها، به مقاله Open Measurement SDK Help Center مراجعه کنید.
نمونه پاسخ های پیشنهادی
بخش های زیر نمونه پاسخ های پیشنهادی را برای انواع مختلف تبلیغات نشان می دهد.
id:"96Z599PGNvp7Mr99138Fm0"seatbid{bid{id:"NQb32Ge7Rtt84wFn2p8"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB13-7"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"billing_id:29846056590dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}bid{id:"4vwb23qm6iqU6w6G978"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB21"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}seat:"4528:1161:591635"group:false}bidid:"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC"cur:"USD"
OpenRTB JSON
مثال را به من نشان بده
{"id":"96Z599PGNvp7Mr99138Fm0","seatbid":[{"bid":[{"id":"NQb32Ge7Rtt84wFn2p8","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB13-7"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","billing_id":"29846056590","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"},{"id":"4vwb23qm6iqU6w6G978","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB21"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"}],"seat":"4528:1161:591635","group":0}],"bidid":"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC","cur":"USD"}
ad{adslot{id:1max_cpm_micros:158000billing_id:41106584355deal_id:1}click_through_url:"google.com"attribute:70buyer_creative_id:"test_creative_id_251451"advertiser_name:"Google"native_ad{headline:"Luxury Mars Cruises"body:"Visit the planet in a luxury spaceship."call_to_action:"Book today"advertiser:"Galactic Luxury Cruises"image{url:"https://native.test.com/image?id=123456"width:1200height:222}app_icon{url:"https://native.test.com/icon?id=123456"width:512height:512}star_rating:4.300000190734863click_link_url:"https://www.google.com"}impression_tracking_url:"https://test.com/imp?id=123456"impression_tracking_url:"https://test.com/imp?id=123456"event_notification_token:"token"skadn{version:"4.0"network:"l6x39K4z"itunesitem:"731305960"sourceapp:"627009739"fidelities{fidelity_type:STOREKIT_RENDERED_ADSnonce:"9216faff-74a9-4b35-badc-66878c35f67c"timestamp:1728975919221signature:"b0USXkmg02Q3v6p301kYOHG36CCOWWdEo52RHRttB9t8PTNi79qL17E4D6h7UeUSuq479oTK13G2Ev34MJlU86C5vY1SMVw2"}fidelities{fidelity_type:VIEW_THROUGH_ADSnonce:"9216faff-74a9-4b35-badc-66878c35f67c"timestamp:1728975919221signature:"4Cf4NH6239z9f3wa8j6420Z7H0UISYxyxN5720444dkq6457I5FY0Jg8bk1xge2P8YgiDp74l2738136v2g1A8D50331IRm0"}source_identifier:1}click_tracking_urls:"https://google.com/rtb/click?imp_id=55d2112c-4947-4da5-bc37-b79ebf4577dd"advertised_app_id:"APP_ID_OMITTED"app_promotion_type:INSTALLS}processing_time_ms:63
تاریخ آخرین بهروزرسانی 2025-02-12 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-02-12 بهوقت ساعت هماهنگ جهانی."],[[["Bid responses must be serialized `BidResponse` protocol buffers with the `Content-Type` header set to `application/octet-stream` for Protobuf, and a parsable `BidResponse` is required for each `BidRequest`, while an empty HTTP 204 response signals no bid."],["Each creative needs a unique `crid` (creative ID) limited to 64 bytes, and this ID must be unique across creatives if there are differences in size, declared URL, attributes, vendor types, appearance, behavior, or rendering method."],["Ad characteristics should be declared using `BidResponse.seatbid.bid.apis`, `BidResponse.seatbid.bid.attr`, or `BidResponse.seatbid.bid.ext.attribute`, with specific values indicating VPAID, MRAID, SIZELESS, or PLAYABLE attributes, respectively, and additional attributes from `buyer-declarable-creative-attributes.txt`."],["Responses should remain under 8KB, utilize persistent HTTPS connections with at least a 10-second timeout, and employ `BidResponse.seatbid.bid.burl` or `BidResponse.seatbid.bid.ext.impression_tracking_url` for tracking impressions."],["The `BidResponse` must accurately set creative attributes (`BidResponse.seatbid.bid.attr`), categories (`BidResponse.seatbid.bid.cat`), and advertiser domain (`BidResponse.seatbid.bid.adomain`) or native ad link (`BidResponse.seatbid.bid.adm_native.link.url`), as responses lacking these are discarded."]]],["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"]]