__tcfapi hodisa tinglovchilari: rozilikni hisobga oladigan skriptlar uchun dasturchi qoʻllanmasi
Nega skriptlaringiz soʻramasdan, tinglashi kerak
Rozilikka bogʻliq har qanday skript — reklama tegi, analitika yuklovchisi, header bidding oʻrovchisi — ikki narsani bilishi kerak: CMP-da hali qaror bor-yoʻqligini va bu qaror nima ekanini. Keng tarqalgan xato — sahifa yuklanganda cookie-ni oʻqish yoki biror narsa paydo boʻlguncha CMP-ni taymer bilan soʻrab turish. Ikkala yondashuv ham oldindan aytib boʻladigan tarzda buziladi: cookie formati CMP-ning ichki ishi va oʻzgarishi mumkin, soʻrash esa yo juda erta ishga tushadi, yo kutishga vaqt sarflaydi.
IAB TCF aynan shu ish uchun standart JavaScript interfeysini belgilaydi: __tcfapi funksiyasi. Ushbu qoʻllanma sizga haqiqatan kerak boʻladigan buyruqlarni, oladigan hodisalaringizni va ishlab chiqarishda eng koʻp uchraydigan xatolarni bosqichma-bosqich koʻrsatadi.
Stub va navbat
TCF CMP-dan toʻliq CMP skripti yuklanishidan oldin sahifaga imkon qadar erta kichik stub joylashtirishi kutiladi. Stub window.__tcfapi funksiyasini aniqlaydi va CMP tayyor boʻlmasdan oldin qilingan chaqiruvlarni navbatga qoʻyadi. CMP yuklanib boʻlgach, navbatni qayta ishlaydi va har bir chaqiruvga javob beradi.
Aynan shu boshqa skriptlarga __tcfapi-ni darhol chaqirishni xavfsiz qiladi: stub ulardan oldin sahifada boʻlsa, chaqiruvlar yoʻqolmaydi. Agar skript __tcfapi aniqlanmagani uchun xato bersa, stub yo yoʻq, yo juda kech yuklanmoqda — qayta urinishlar qoʻshish oʻrniga yuklash tartibini tuzating.
Muhim buyruqlar
ping
__tcfapi('ping', 2, callback) foydalanuvchi qarorini kutmasdan asosiy holatni qaytaradi. Javobda cmpLoaded, stub, loading, loaded yoki error kabi cmpStatus va visible, hidden yoki disabled qiymatlaridan biri boʻlgan displayStatus bor. U shuningdek, maʼlum boʻlganda gdprApplies-ni bildiradi. Undan diagnostika uchun va TCF ushbu tashrif buyuruvchi uchun umuman dolzarbmi-yoʻqmi, shuni hal qilish uchun foydalaning.
addEventListener
__tcfapi('addEventListener', 2, callback) — aksariyat integratsiyalar foydalanishi kerak boʻlgan buyruq. Callback tcData obyekti va muvaffaqiyat bayrogʻini oladi va rozilik holati har safar oʻzgarganda yana chaqiriladi. TCF v2.2 dan beri rozilik maʼlumotlarini olishning tavsiya etilgan usuli shu; eskirgan getTCData buyrugʻi bekor qilingan.
removeEventListener
Har bir tcData obyekti listenerId-ni olib yuradi. Skriptingizga endi yangilanishlar kerak boʻlmaganda — masalan, qarorini allaqachon qabul qilgan bir martalik yuklovchi — uni __tcfapi('removeEventListener', 2, callback, listenerId) ga uzating.
eventStatus-ni oʻqish
tcData-dagi asosiy maydon — eventStatus. Uchta qiymat bor:
tcloaded— CMP yaroqli saqlangan qarorni topdi va banner koʻrsatilmaydi. Maʼlumotlar bilan darhol ish qilishingiz mumkin.cmpuishown— banner koʻrsatilmoqda. Maʼlumotlar oldingi holatni aks ettiradi, lekin foydalanuvchi uni oʻzgartirishi mumkin.useractioncomplete— foydalanuvchi hozirgina tanlov qildi yoki tasdiqladi. Yangi maʼlumotlar bilan ish qiling.
Odatiy yuklovchi tcloaded yoki useractioncomplete dan birini kutadi, soʻng kerakli maqsadlar va sotuvchilarni tekshiradi. U cmpuishown-ni, ehtimol banner paydo boʻlganini qayd etishdan tashqari, eʼtiborsiz qoldiradi.
Maqsadlar va sotuvchilarni tekshirish
tcData ichida rozilik va qonuniy manfaat ID boʻyicha kalitlangan obyektlar sifatida taqdim etiladi:
tcData.purpose.consents[1]— 1-maqsad (qurilmada saqlash) uchun rozilik.tcData.purpose.legitimateInterests[7]— 7-maqsad uchun qonuniy manfaat holati.tcData.vendor.consents[ID]vatcData.vendor.legitimateInterests[ID]— sotuvchining Global Vendor List ID-sidan foydalangan holda sotuvchi boʻyicha holat.tcData.gdprApplies— CMP GDPR ushbu tashrif buyuruvchiga tatbiq etilishini aniqlaganmi. Agar ufalseboʻlsa, skriptingiz TCF boʻlmagan mantiqqa amal qilishi kerak.tcData.tcString— kodlangan satr; uni kutadigan hamkorlarga uzatasiz.
Ham maqsadni, ham sotuvchini tekshiring. Sotuvchi roziligisiz maqsad roziligi yoki aksincha, aksariyat sotuvchilarning maʼlumotlarni qayta ishlashi uchun yetarli emas.
Iframe-lar va freymlararo chaqiruvlar
Reklamalar va vidjetlar koʻpincha ota sahifaning __tcfapi-sini koʻra olmaydigan iframe-lar ichida ishlaydi. TCF buni postMessage protokoli bilan hal qiladi: CMP yuqori sahifaga __tcfapiLocator nomli freym qoʻshadi va iframe ichidagi kod uni topishi, __tcfapiCall xabarini yuborishi va __tcfapiReturn javobini olishi mumkin. Aksariyat reklama SDK-lari buni allaqachon qiladi. Agar oʻz iframe kodingizni yozsangiz, freymlar oraliq cookie-larni oʻqish oʻrniga xuddi shu andozani amalga oshiring.
Keng tarqalgan xatolar va ularni qanday aniqlash
cmpuishownasosida harakat qilish. Har qanday callback ishga tushishi bilanoq yuklanadigan skriptlar foydalanuvchi qaror qilishidan oldin ishlaydi.eventStatusboʻyicha filtrlang.- Tinglovchini juda erta olib tashlash. Agar uni birinchi callback-dan keyin olib tashlasangiz, keyingi
useractioncomplete-ni oʻtkazib yuborasiz va hech qachon yuklanmaysiz. - Rozilikni qaytarib olishni eʼtiborsiz qoldirish. Doimiy skriptlar tinglashni davom ettirishi va rozilik qaytarib olinganda toʻxtashi yoki oʻzini qayta sozlashi kerak.
gdprApplies-ni eʼtiborsiz qoldirish. TCF hududlaridan tashqarida maqsad obyektlari boʻsh boʻlishi mumkin; buni “rozilik yoʻq” deb hisoblash olishingizga ruxsat etilgan daromadni oʻchirib qoʻyishi mumkin.- Muvaffaqiyat bayrogʻini tekshirmaslik.
successfalse boʻlsa, buni qayd eting; bu odatda buzilgan CMP sozlamasidan dalolat beradi.
Integratsiyangizni sinash
Brauzer konsolida CMP mavjudligini tasdiqlash uchun __tcfapi('ping', 2, console.log) ni chaqiring, soʻng callback sifatida console.log bilan tinglovchini roʻyxatdan oʻtkazing va banner orqali oʻting. Birinchi tashrifda cmpuishown va undan keyin useractioncomplete, qayta yuklashda esa tcloaded koʻrishingiz kerak. Hammasini qabul qilish, hammasini rad etish va maxsus tanlov bilan takrorlang va skriptingiz har bir holatda toʻgʻri harakat qilishini tasdiqlang.
Asosiy xulosalar
- CMP cookie-larini oʻqish yoki soʻrash oʻrniga
__tcfapi-dan foydalaning. - API-ni chaqiradigan har qanday skriptdan oldin CMP stub-i yuklanishiga ishonch hosil qiling.
addEventListener-dan foydalaning va faqattcloadedyokiuseractioncompleteasosida harakat qiling.- Ham maqsad, ham sotuvchi holatini tekshiring va
gdprApplies-ga rioya qiling. - Iframe-lar ichida
__tcfapiLocatorpostMessage andozasidan foydalaning.