اشکالزدایی رشته IAB GPP در کنسول مرورگر: آموزش گامبهگام
چرا مشکلات GPP دیر دیده میشوند
وقتی بازدیدکنندهای آمریکایی از فروش یا اشتراکگذاری دادههای خود انصراف میدهد، این انتخاب باید به همه شرکای تبلیغاتی صفحه برسد. در IAB Global Privacy Platform (GPP)، انتخاب بهصورت یک رشته فشرده و فهرستی از شناسههای بخش منتقل میشود. اگر هر یک از آنها نادرست باشد — گمشده، قدیمی یا حامل بخش اشتباه — چیزی بهطور مرئی خراب نمیشود. تبلیغات همچنان بارگذاری میشوند، بنر همچنان درست به نظر میرسد و مشکل بعداً خودش را نشان میدهد: شرکایی که انصرافها را نادیده میگیرند یا برای موجودی شما کمتر پیشنهاد میدهند.
خبر خوب این است که تقریباً همهچیز را از کنسول مرورگر میتوان بررسی کرد. این آموزش بررسیها را به همان ترتیبی که روی یک صفحه زنده اجرا میکنیم مرور میکند.
گام ۱: مطمئن شوید API وجود دارد و آماده است
یک CMP سازگار با GPP تابع سراسری __gpp را در دسترس میگذارد. DevTools را در صفحه خود باز کنید و فرمان ping را اجرا کنید:
__gpp('ping', function (data) { console.log(data); });
شیء بازگشتی در یک نگاه اطلاعات زیادی میدهد:
- gppVersion — برای پیادهسازیهای فعلی باید ۱٫۱ باشد.
- cmpStatus — اینکه CMP بارگذاری شده یا به خطا خورده است.
- cmpDisplayStatus — اینکه بنر برای این بازدیدکننده نمایان، پنهان یا غیرفعال است.
- signalStatus — وقتی CMP روی یک وضعیت رضایت قطعی شد “ready”، و تا زمانی که هنوز تصمیم میگیرد “not ready” است.
- supportedAPIs — بخشهایی که CMP میتواند تولید کند.
- applicableSections — شناسههای بخشی که اکنون برای این بازدیدکننده اعمال میشود.
- gppString — خود رشته کدگذاریشده.
اگر __gpp تعریفنشده باشد، stub مربوط به CMP وجود ندارد یا خیلی دیر بارگذاری میشود. stub باید پیش از هر اسکریپت تبلیغاتی که انتظارش را دارد در جای خود باشد، وگرنه آن اسکریپتها هیچ CMP نمیبینند و یا منتظر میمانند یا بدون سیگنال ادامه میدهند.
گام ۲: بخش قابل اعمال را بررسی کنید
هر چارچوب حریم خصوصی در GPP یک شناسه بخش عددی دارد. مواردی که ناشران بیشتر با آنها روبهرو میشوند ۲ (EU TCF v2)، ۵ (TCF کانادا)، ۷ (US National یا “usnat”) و ۸ به بعد برای بخشهای ایالتی مانند کالیفرنیا، ویرجینیا، کلرادو، یوتا و کنتیکت است. بازدیدکنندهای از یک ایالت آمریکا معمولاً باید در applicableSections یا بخش ملی یا بخش ایالت مربوط را ببیند، نه بخش اتحادیه اروپا.
از چند مکان آزمایش کنید. یک باگ رایج، CMPای است که جغرافیا را برای بنر درست تشخیص میدهد اما بدون توجه به آن یک بخش پیشفرض را در رشته مینویسد، یا برعکس. با VPN یا ابزارهای پیشنمایش CMP خود، آنچه بنر نشان میدهد را با آنچه applicableSections گزارش میکند مقایسه کنید.
گام ۳: دادههای بخش را بخوانید
بهجای رمزگشایی دستی رشته، از CMP بخواهید بخش تجزیهشده را بدهد:
__gpp('getSection', function (data, success) { console.log(data, success); }, 'usnat');
در بخش ملی آمریکا، فیلدهای انصراف از قراردادی ساده پیروی میکنند: ۰ یعنی قابل اعمال نیست، ۱ یعنی کاربر انصراف داده و ۲ یعنی کاربر انصراف نداده است. ابتدا روی این فیلدها تمرکز کنید:
- SaleOptOut و SharingOptOut
- TargetedAdvertisingOptOut
- فیلدهای notice متناظر که ثبت میکنند آیا درباره هر رویه به بازدیدکننده اطلاع داده شده است
حالا انصراف را در صفحه انجام دهید — روی پیوند “Do Not Sell or Share” کلیک کنید یا تنظیم را در مرکز ترجیحات تغییر دهید — و دوباره getSection را اجرا کنید. فیلدهای انصراف باید از ۲ به ۱ تغییر کنند. اگر نکردند، رابط کاربری و سیگنال همگام نیستند.
گام ۴: مسیر Global Privacy Control را آزمایش کنید
چند قانون ایالتی لازم میدانند کسبوکارها سیگنال Global Privacy Control را انصراف تلقی کنند. GPC را در مرورگر یا افزونهای که از آن پشتیبانی میکند فعال کنید، مطمئن شوید navigator.globalPrivacyControl در کنسول true برمیگرداند، سپس صفحه را در یک نشست تازه بارگذاری کنید. فیلدهای انصراف مربوط باید بدون اینکه بازدیدکننده به بنر دست بزند ۱ را نشان دهند. برخی بخشها فیلدی هم دارند که نشان میدهد انتخاب از سیگنال GPC آمده است.
گام ۵: رویدادها را تماشا کنید، نه فقط عکسهای لحظهای
اسکریپتهای تبلیغاتی نباید رشته را یک بار در زمان بارگذاری صفحه بخوانند و فراموشش کنند. یک listener ثبت کنید تا ببینید شرکا چه میبینند:
__gpp('addEventListener', function (evt) { console.log(evt.eventName, evt.pingData); });
باید رویدادهایی مانند listenerRegistered، signalStatus و sectionChange را ببینید. وقتی بازدیدکننده انتخابی را تغییر میدهد، باید رویداد sectionChange با رشته بهروز شده بعد از آن بیاید. اگر wrapper مربوط به header bidding یا یکپارچگی سرور تبلیغات شما رشته را فقط پیش از اینکه signalStatus به “ready” برسد میخواند، ممکن است مقداری خالی یا قدیمی بفرستد.
گام ۶: رشته را تا درخواستهای تبلیغ دنبال کنید
در پایان، تب Network را باز کنید و درخواستهای تبلیغ را فیلتر کنید. بسیاری از endpointهای تبلیغاتی پارامترهای gpp و gpp_sid (رشته و شناسههای بخش قابل اعمال) را میپذیرند. بررسی کنید که:
- هر دو پارامتر در درخواستهای بازدیدکنندگان آمریکایی وجود دارند؛
- رشته با آنچه ping در زمان درخواست برمیگرداند یکی است؛
- پس از انصراف، درخواستهای بعدی رشته جدید را حمل میکنند نه یک رشته کششده را.
اگر از Prebid.js استفاده میکنید، مطمئن شوید ماژول مدیریت رضایت آن برای GPP پیکربندی شده و درخواستهای پیشنهاد خروجی از wrapper و همچنین فراخوانی نهایی سرور تبلیغات را بررسی کنید.
الگوهای رایج خرابی
- stub بعد از تگهای تبلیغاتی بارگذاری میشود — شرکا اصلاً CMP نمیبینند.
- بخش اشتباه برای منطقه — بخش اتحادیه اروپا برای ترافیک آمریکا ارسال میشود یا هیچ بخشی ارسال نمیشود.
- رابط کاربری و سیگنال همگام نیستند — کلید تغییر میکند اما رشته نه.
- GPC نادیده گرفته میشود — سیگنال مرورگر هرگز به انصراف تبدیل نمیشود.
- رشتههای کهنه در درخواستها — wrapper اولین مقداری را که دید کش میکند.
نکات کلیدی
- با ping شروع کنید: نسخه، وضعیت، بخشهای قابل اعمال و رشته بیشتر ماجرا را میگویند.
- از getSection برای خواندن فیلدهای انصراف استفاده کنید؛ ۱ یعنی انصراف داده، ۲ یعنی انصراف نداده.
- پیوند انصراف و GPC را جداگانه آزمایش کنید و مطمئن شوید هر دو سیگنال را تغییر میدهند.
- به رویدادها گوش دهید و پیش از اینکه درخواستهای تبلیغ رشته را بخوانند منتظر سیگنال “ready” بمانید.
- gpp و gpp_sid را در درخواستهای شبکه واقعی، پیش از انصراف و پس از آن راستیآزمایی کنید.