در مثالهای ابتدایی و مفهومی اولیه، از متد display()
کتابخانه برچسب ناشر Google (GPT) برای ثبت و نمایش یک جایگاه تبلیغاتی استفاده میشود. با این حال، مواقعی وجود دارد که برای کنترل دقیقتر زمان بارگیری محتوای تبلیغات، ترجیح داده میشود یا حتی ضروری است که این اقدامات را از هم جدا کنیم. به عنوان مثال، هنگام کار با یک پلت فرم مدیریت رضایت یا درخواست محتوای تبلیغاتی در نتیجه اقدام کاربر.
در این راهنما، مکانیسمهای ارائهشده توسط GPT برای کنترل بارگیری محتوای آگهی و دریافت محتوای آگهی جدید در صورت تقاضا را بررسی میکنیم. کد کامل این مثال را می توان در صفحه نمونه درخواست های مبتنی بر رویداد یافت.
کنترل بارگذاری تبلیغات
بهطور پیشفرض، رفتار متد display()
ثبت، درخواست و ارائه محتوای آگهی در یک شکاف تبلیغاتی است. درخواست و ارائه خودکار محتوای آگهی را می توان از طریق متد PubAdsService.disableInitialLoad()
غیرفعال کرد.
با غیرفعال بودن بارگذاری اولیه، فراخوانی برای display()
فقط جایگاه آگهی را ثبت می کند. تا زمانی که اقدام دوم انجام نشود، هیچ محتوای تبلیغاتی بارگیری نخواهد شد. این به شما امکان میدهد دقیقاً زمان درخواست تبلیغات را کنترل کنید.
برای جلوگیری از درخواستهای تبلیغاتی ناخواسته، disableInitialLoad()
باید قبل از فعال کردن سرویس و قبل از فراخوانی display()
فراخوانی شود.
<!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="description" content="Request GPT ads based on events." /> <title>Event-based ad requests</title> <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" crossorigin="anonymous" ></script> <script> window.googletag = window.googletag || { cmd: [] }; googletag.cmd.push(() => { // Define the ad slot. googletag .defineSlot("/6355419/Travel", [728, 90], "div-for-slot") .setTargeting("test", "event") .addService(googletag.pubads()); // Disable initial load. // This prevents GPT from automatically fetching ads when display is called. googletag.pubads().disableInitialLoad(); googletag.enableServices(); }); </script> <style></style> </head> <body> <div id="div-for-slot" style="width: 300px; height: 250px"></div> <script> googletag.cmd.push(() => { // Register the ad slot. // An ad will not be fetched until refresh is called. googletag.display("div-for-slot"); // Register click event handler. document.getElementById("showAdButton").addEventListener("click", () => { googletag.cmd.push(() => { googletag.pubads().refresh(); }); }); }); </script> </body> </html>
در این مثال، بارگذاری اولیه غیرفعال میشود تا اطمینان حاصل شود که هیچ درخواستی برای تبلیغ ارسال نمیشود و محتوای تبلیغاتی هنگام فراخوانی display()
ارائه نمیشود. اسلات آماده پذیرش و نمایش یک آگهی است، اما تا زمانی که شکاف بهروزرسانی نشود، درخواست آگهی ارسال نمیشود.
تازه کردن
روش PubAdsService.refresh()
برای پر کردن یک اسلات یا اسلات با محتوای تبلیغات جدید استفاده می شود. این روش میتواند در اسلاتهایی که هنوز محتوایی بارگیری نشدهاند (به دلیل disableInitialLoad()
)، یا برای جایگزینی محتویات یک اسلات قبلاً پر شده استفاده شود. با این حال، تنها اسلاتهایی که با فراخوانی display()
ثبت شدهاند، واجد شرایط تجدید هستند.
<!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="description" content="Request GPT ads based on events." /> <title>Event-based ad requests</title> <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" crossorigin="anonymous" ></script> <script> window.googletag = window.googletag || { cmd: [] }; googletag.cmd.push(() => { // Define the ad slot. googletag .defineSlot("/6355419/Travel", [728, 90], "div-for-slot") .setTargeting("test", "event") .addService(googletag.pubads()); // Disable initial load. // This prevents GPT from automatically fetching ads when display is called. googletag.pubads().disableInitialLoad(); googletag.enableServices(); }); </script> <style></style> </head> <body> <div id="div-for-slot" style="width: 300px; height: 250px"></div> <button id="showAdButton">Show/Refresh Ad</button> <script> googletag.cmd.push(() => { // Register the ad slot. // An ad will not be fetched until refresh is called. googletag.display("div-for-slot"); // Register click event handler. document.getElementById("showAdButton").addEventListener("click", () => { googletag.cmd.push(() => { googletag.pubads().refresh(); }); }); }); </script> </body> </html>
در این مثال اصلاح شده، زمانی که کاربر روی دکمه "نمایش/بازخوانی آگهی" کلیک می کند، متد refresh()
می شود. این یک درخواست برای واکشی محتوای تبلیغاتی جدید و بارگیری آن در شکاف ثبت شده، بازنویسی هر محتوای از قبل موجود را آغاز می کند.
توجه داشته باشید که در مثال بالا متد refresh()
بدون هیچ پارامتری فراخوانی میشود که اثر آن بازخوانی تمام اسلاتهای تبلیغاتی ثبتشده است. با این حال، میتوان با ارسال آرایهای از اسلاتها به روش refresh()
اسلاتهای تبلیغاتی خاص را بهروزرسانی کرد. نمونه ای از اسلات تبلیغاتی Refresh را ببینید.
بهترین شیوه ها
هنگام کار با refresh()
، برخی از بهترین روش ها وجود دارد که باید رعایت شوند.
خیلی سریع رفرش نکنید.
بهروزرسانی سریع جایگاههای تبلیغاتی ممکن است باعث شود درخواستهای تبلیغاتی شما کاهش یابد. برای جلوگیری از این امر، از تازه کردن اسلات ها بیشتر از یک بار در هر 30 ثانیه خودداری کنید.
بی جهت
clear()
فراخوانی نکنیدهنگام بازخوانی یک جایگاه تبلیغاتی، ابتدا با
PubAdsService.clear()
تماس نگیرید. این غیرضروری است، زیراrefresh()
جایگزین محتویات اسلات مشخص شده می شود، صرف نظر از اینکه آیا محتوای تبلیغاتی قبلاً بارگیری شده است یا خیر. فراخوانیclear()
بلافاصله قبل از فراخوانیrefresh()
تنها مدت زمانی را که یک اسلات خالی برای کاربر قابل مشاهده است افزایش می دهد.فقط جایگاه های تبلیغاتی قابل مشاهده را بازخوانی کنید
استفاده از
refresh()
برای جایگزینی محتویات اسلات های تبلیغاتی که هرگز قابل مشاهده نیستند، می تواند به میزان قابل توجهی نرخ ActiveView شما را کاهش دهد. از ImpressionViewableEvent می توان برای تعیین اینکه چه زمانی یک جایگاه تبلیغاتی قابل مشاهده است، مانند مثال زیر استفاده کرد.googletag.cmd.push(function() { var REFRESH_KEY = 'refresh'; var REFRESH_VALUE = 'true'; googletag.defineSlot('/6355419/Travel',[728, 90], 'div-for-slot') .setTargeting(REFRESH_KEY, REFRESH_VALUE) .setTargeting('test', 'event') .addService(googletag.pubads()); // Number of seconds to wait after the slot becomes viewable. var SECONDS_TO_WAIT_AFTER_VIEWABILITY = 60; googletag.pubads().addEventListener('impressionViewable', function(event) { var slot = event.slot; if (slot.getTargeting(REFRESH_KEY).indexOf(REFRESH_VALUE) > -1) { setTimeout(function() { googletag.pubads().refresh([slot]); }, SECONDS_TO_WAIT_AFTER_VIEWABILITY * 1000); } }); googletag.enableServices(); });