یاد بگیرید که چگونه یک حراج API مخاطب محافظتشده را پیکربندی کنید.
حراجهای درون دستگاهی که توسط فروشندگان اجرا میشوند
یک حراج مخاطب محافظتشده روی دستگاه، در سایتی که فضاهای تبلیغاتی میفروشد، اجرا میشود و ما به طرفی که حراج را اجرا میکند، فروشنده میگوییم. بسیاری از طرفین ممکن است به عنوان فروشنده عمل کنند: یک سایت ممکن است حراج تبلیغاتی خود را اجرا کند، یا ممکن است یک اسکریپت شخص ثالث را برای اجرای حراج برای خود در نظر بگیرد، یا ممکن است از یک SSP استفاده کند که اجرای حراج روی دستگاه را با سایر فعالیتهای حراج تبلیغاتی سمت سرور ترکیب میکند. فروشندگان در حراج تبلیغاتی روی دستگاه سه وظیفه اساسی دارند:
- فروشندگان تصمیم میگیرند که (الف) کدام خریداران میتوانند شرکت کنند، و (ب) کدام یک از پیشنهادهای گروههای ذینفع آن خریداران واجد شرایط ورود به حراج هستند. این به فروشنده اجازه میدهد تا قوانین سایت را در مورد اینکه چه تبلیغاتی مجاز به نمایش در صفحه هستند، اجرا کند.
- فروشندگان مسئول منطق تجاری حراج هستند: کد جاوا اسکریپت که قیمت و فراداده هر پیشنهاد را در نظر میگیرد و امتیاز «مطلوبیت» را محاسبه میکند. پیشنهادی که بالاترین امتیاز مطلوبیت را داشته باشد، برنده حراج میشود.
- فروشندگان گزارش نتیجه حراج، از جمله اطلاعات مربوط به قیمت تسویه حساب و هرگونه پرداخت دیگر را ارائه میدهند. خریداران برنده و بازنده نیز میتوانند گزارش خود را تهیه کنند.
این سند نحوه پیکربندی و شروع یک حراج روی دستگاه را توضیح میدهد.
پیکربندی مزایده تبلیغاتی API مخاطبان محافظتشده
برای اجرای مزایده تبلیغاتی Protected Audience API، اولین قدم پیکربندی مزایده است. این کار با ایجاد یک شیء auctionConfig انجام میشود. در اینجا مثالی از چنین پیکربندیای آورده شده است:
const auctionConfig = {
seller: 'https://seller.example',
decisionLogicUrl: ...,
trustedScoringSignalsUrl: ...,
interestGroupBuyers: ['https://buyer-1.example', 'https://buyer-2.example', ...],
auctionSignals: {...},
sellerSignals: {...},
sellerTimeout: 100,
perBuyerSignals: {
'https://buyer-1.example': {...},
'https://buyer-2.example': {...},
...
},
perBuyerTimeouts: {
'https://buyer-1.example': 50,
'https://buyer-2.example': 200,
'*': 150,
...
},
componentAuctions: [
{
'seller': 'https://component-seller.example',
'decisionLogicUrl': ...,
...
},
...
],
resolveToConfig: [true|false],
};
ویژگیهای AuctionConfig
خواص مورد نیاز
تنها ویژگیهای مورد نیاز برای auctionConfigs عبارتند از seller ، decisionLogicUrl و interestGroupBuyers .
| ملک | مثال | نقش |
|---|---|---|
| فروشنده | https://seller.example | مبدا فروشنده. |
| decisionLogicUrl | https://seller.example/decision-logic.js | آدرس اینترنتی (URL) برای کتابچه راهنمای منطق تصمیمگیری جاوا اسکریپت حراج. این فیلد باید منشأ یکسانی با فیلد فروشنده داشته باشد. |
| خریداران گروه علاقهمند | [https://buyer-1.example، https://buyer-2.example، ...] | از صاحبان اصلی تمام گروههای ذینفع خواسته شد تا در حراج پیشنهاد قیمت بدهند |
خواص اختیاری
ویژگیهای باقیمانده برای auctionConfigs اختیاری هستند.
| ملک | مثال | نقش |
|---|---|---|
| trustedScoringSignalsUrl | https://seller.example/scoring-signals | آدرس اینترنتی سرور کلید/مقدار فروشنده. این آدرس در طول فرآیند امتیازدهی تبلیغ با استفاده از آدرس اینترنتی رندر آگهی به عنوان کلید، استعلام خواهد شد. این فیلد باید منشأ یکسانی با فیلد فروشنده داشته باشد. |
| سیگنالهای حراج | {"رده":"اخبار"} | شیء سریالپذیر JSON که سیگنالهای موجود برای همه خریداران و فروشندگان شرکتکننده در حراج را نشان میدهد. |
| سیگنالهای فروشنده | {...} | شیء سریالپذیر JSON که سیگنالهای موجود فقط برای فروشندگان را نشان میدهد. |
| سیگنالهای پربایِر | {https://dsp.example: {...}, https://another-buyer.example: {...}، ...} | سیگنالهای موجود برای یک خریدار خاص. سیگنالها میتوانند از فروشندگان و همچنین توسط خود خریداران ارسال شوند. |
| perBuyerTimeout ها | {https://www.example-dsp.com: 50، https://www.another-buyer.com: 200 *: ۱۵۰، ...}، | حداکثر زمان اجرا بر حسب میلیثانیه برای اسکریپت generateBid() یک خریدار خاص. یک نماد wildcard برای هر خریداری که مهلت زمانی مشخصی برای آن تعریف نشده باشد، اعمال خواهد شد. |
| فروشنده تایم اوت | ۱۰۰ | حداکثر زمان اجرا بر حسب میلیثانیه برای اسکریپت scoreAd() فروشنده. |
| حراجهای کامپوننت | [{فروشنده: https://www.some-other-ssp.com، decisionLogicUrl: ...، ...}، ...] | تنظیمات اضافی برای حراج قطعات. |
| resolveToConfig | درست | نادرست | یک مقدار بولی که promise برگشتی از runAdAuction() را به سمتی هدایت میکند که در صورت درست بودن (true) به یک FencedFrameConfig (برای استفاده در <fencedframe>) یا در صورت نادرست بودن (false) به یک URL مبهم urn:uuid (برای استفاده در <iframe>) تبدیل شود. مقدار پیشفرض false است. |
ارائه سیگنالها به صورت غیرهمزمان
مقادیر برخی سیگنالها (آنهایی که توسط فیلدهای auctionSignals ، sellerSignals ، perBuyerSignals و perBuyerTimeouts پیکربندی شدهاند) میتوانند به صورت اختیاری نه به عنوان مقادیر واقعی، بلکه به عنوان Promises ارائه شوند. این امر به برخی از بخشهای حراج، مانند بارگذاری اسکریپتها و سیگنالهای مورد اعتماد و راهاندازی فرآیندهای Worklet ایزوله، اجازه میدهد تا محاسبات (یا بازیابی شبکه) آن مقادیر را همپوشانی کنند. اسکریپتهای Worklet فقط مقادیر حلشده را مشاهده میکنند. اگر چنین Promise رد شود، حراج لغو میشود، مگر اینکه از قبل با شکست مواجه شده باشد یا به روشهای دیگری لغو شود.
پیکربندی حراج با چندین فروشنده
در برخی موارد، ممکن است چندین فروشنده بخواهند در یک حراج شرکت کنند و برندگان حراجهای جداگانه به حراج دیگری که توسط فروشنده دیگری برگزار میشود، منتقل شوند. این حراجهای جداگانه که به حراجهای مؤلفهای منتقل میشوند، حراجهای مؤلفه نامیده میشوند. برای تسهیل این حراجهای مؤلفهای، شیء componentAuctions میتواند شامل پیکربندیهای حراج اضافی برای حراج مؤلفه هر فروشنده باشد. پیشنهاد برنده هر یک از این حراجهای مؤلفهای به حراج "سطح بالا" منتقل میشود که تصمیم نهایی حراج را میگیرد. auctionConfig حراجهای مؤلفهای ممکن است componentAuctions مخصوص به خود را نداشته باشد. وقتی componentAuctions خالی نباشد، interestGroupBuyers باید خالی باشند. یعنی، برای هر حراج مخاطب محافظتشده خاص، یا یک فروشنده واحد وجود دارد و هیچ حراج مؤلفهای وجود ندارد، یا همه پیشنهادها از حراجهای مؤلفه میآیند و حراج سطح بالا فقط میتواند از بین برندگان حراجهای مؤلفه انتخاب کند.
حراج را اجرا کنید
فروشنده با فراخوانی تابع navigator.runAdAuction() از مرورگر کاربر درخواست میکند تا حراج تبلیغات را آغاز کند.
try {
const auctionResultPromise = navigator.runAdAuction(auctionConfig);
} catch (error) {
// Handle error.
}
فراخوانی runAdAuction() یک Promise برمیگرداند که به تبلیغ ختم میشود. هیچ کدی در صفحه ناشر نمیتواند تبلیغ برنده را بررسی کند یا از نتیجه runAdAuction() در مورد محتوای آن اطلاعات کسب کند. اگر پرچم resolveToConfig در AuctionConfig روی true تنظیم شده باشد، یک شیء FencedFrameConfig برگردانده میشود که فقط میتواند در یک قاب محصور رندر شود. اگر پرچم روی false تنظیم شده باشد، یک URN مات برگردانده میشود که میتواند در یک iframe رندر شود. ممکن است runAdAuction مقدار null را برگرداند که نشان میدهد هیچ تبلیغی انتخاب نشده است. در این حالت، فروشنده ممکن است تصمیم بگیرد یک تبلیغ هدفمند متنی را رندر کند.