تصحيح سلسلة IAB GPP في وحدة تحكم المتصفح: دليل تعليمي خطوة بخطوة
لماذا يصعب اكتشاف مشكلات GPP
عندما ينسحب زائر أمريكي من بيع بياناته أو مشاركتها، يجب أن يصل هذا الاختيار إلى كل شريك إعلاني في الصفحة. ومع IAB Global Privacy Platform (GPP)، ينتقل الاختيار في سلسلة مضغوطة وقائمة بمعرّفات الأقسام. وإذا كان أحدهما خاطئًا — مفقودًا أو قديمًا أو يحمل القسم الخطأ — فلا يتعطل شيء بشكل مرئي. تُحمَّل الإعلانات كالمعتاد، ويبدو البانر سليمًا، ولا تظهر المشكلة إلا لاحقًا حين يتجاهل الشركاء حالات الانسحاب أو يخفضون مزايداتهم على مخزونك.
والخبر الجيد أنك تستطيع فحص كل شيء تقريبًا من وحدة تحكم المتصفح. يستعرض هذا الدليل الفحوص بالترتيب الذي نجريه به على صفحة حية.
الخطوة 1: تأكد من وجود الواجهة وجاهزيتها
يوفّر CMP المتوافق مع GPP دالة عامة __gpp. افتح DevTools في صفحتك ونفّذ الأمر ping:
__gpp('ping', function (data) { console.log(data); });
يخبرك الكائن المُعاد الكثير بنظرة واحدة:
- gppVersion — ينبغي أن يكون 1.1 في التطبيقات الحالية.
- cmpStatus — هل حُمّل CMP أم واجه خطأ.
- cmpDisplayStatus — هل البانر ظاهر أم مخفي أم معطّل لهذا الزائر.
- signalStatus — “ready” بمجرد أن يستقر CMP على حالة موافقة، و“not ready” ما دام لا يزال يقرر.
- supportedAPIs — الأقسام التي يستطيع CMP إنتاجها.
- applicableSections — معرّفات الأقسام التي تنطبق على هذا الزائر الآن.
- gppString — السلسلة المشفّرة نفسها.
إذا كانت __gpp غير معرّفة، فإن stub الخاص بـ CMP مفقود أو يُحمَّل متأخرًا. يجب أن يكون الـ stub في مكانه قبل أي نص إعلاني يتوقعه، وإلا فسترى تلك النصوص أنه لا يوجد CMP وستنتظر أو تمضي دون إشارة.
الخطوة 2: افحص القسم المنطبق
لكل إطار خصوصية في GPP معرّف قسم رقمي. أكثر ما يصادفه الناشرون هي 2 (EU TCF v2) و5 (TCF الكندي) و7 (US National، “usnat”) و8 فما فوق لأقسام الولايات الفردية مثل كاليفورنيا وفرجينيا وكولورادو ويوتا وكونيتيكت. ينبغي عادةً أن يرى زائر من ولاية أمريكية إما القسم الوطني أو قسم الولاية المعني في applicableSections، لا قسم الاتحاد الأوروبي.
اختبر من عدة مواقع. من الأخطاء الشائعة أن يحدد CMP الموقع الجغرافي بشكل صحيح للبانر لكنه يكتب قسمًا افتراضيًا في السلسلة أيًّا كان الموقع، أو العكس. باستخدام VPN أو أدوات المعاينة في CMP، قارن ما يعرضه البانر بما تُبلغ عنه applicableSections.
الخطوة 3: اقرأ بيانات القسم
بدلًا من فك تشفير السلسلة يدويًا، اطلب من CMP القسم بعد تحليله:
__gpp('getSection', function (data, success) { console.log(data, success); }, 'usnat');
في القسم الوطني الأمريكي، تستخدم حقول الانسحاب اصطلاحًا بسيطًا: 0 تعني غير منطبق، و1 تعني أن المستخدم انسحب، و2 تعني أن المستخدم لم ينسحب. ركّز على هذه الحقول أولًا:
- SaleOptOut وSharingOptOut
- TargetedAdvertisingOptOut
- حقول notice المقابلة، التي تسجّل ما إذا أُعطي الزائر إشعارًا بكل ممارسة
الآن نفّذ الانسحاب في الصفحة — انقر رابط “Do Not Sell or Share” أو بدّل الإعداد في مركز التفضيلات — ثم شغّل getSection مرة أخرى. ينبغي أن تتحول حقول الانسحاب من 2 إلى 1. وإن لم يحدث ذلك، فالواجهة والإشارة غير متزامنتين.
الخطوة 4: اختبر مسار Global Privacy Control
تشترط عدة قوانين في الولايات أن تعامل الشركات إشارة Global Privacy Control على أنها انسحاب. فعّل GPC في متصفح أو إضافة تدعمه، وتأكد من أن navigator.globalPrivacyControl تُرجع true في وحدة التحكم، ثم حمّل الصفحة في جلسة جديدة. ينبغي أن تُظهر حقول الانسحاب المعنية القيمة 1 دون أن يلمس الزائر البانر. وتتضمن بعض الأقسام أيضًا حقلًا يشير إلى أن الاختيار جاء من إشارة GPC.
الخطوة 5: راقب الأحداث لا اللقطات فقط
ينبغي ألا تقرأ النصوص الإعلانية السلسلة مرة واحدة عند تحميل الصفحة ثم تنساها. سجّل مستمعًا لترى ما يراه الشركاء:
__gpp('addEventListener', function (evt) { console.log(evt.eventName, evt.pingData); });
ينبغي أن تلاحظ أحداثًا مثل listenerRegistered وsignalStatus وsectionChange. وعندما يغيّر الزائر اختيارًا، يجب أن يتبعه حدث sectionChange مع سلسلة محدّثة. وإذا كان غلاف header bidding أو تكامل خادم الإعلانات لديك لا يقرأ السلسلة إلا قبل أن يصبح signalStatus “ready”، فقد يرسل قيمة فارغة أو قديمة.
الخطوة 6: اتبع السلسلة إلى طلبات الإعلانات
أخيرًا، افتح تبويب Network وصفِّ طلبات الإعلانات. تقبل كثير من نقاط نهاية الإعلانات المعاملين gpp وgpp_sid (السلسلة ومعرّفات الأقسام المنطبقة). تحقق من أن:
- كلا المعاملين موجود في طلبات الزوار الأمريكيين؛
- السلسلة تطابق تلك التي أعادها ping وقت الطلب؛
- بعد الانسحاب، تحمل الطلبات اللاحقة السلسلة الجديدة لا سلسلة مخزّنة مؤقتًا.
إذا كنت تستخدم Prebid.js، فتأكد من أن وحدة إدارة الموافقة فيه مهيأة لـ GPP، وافحص طلبات العطاءات الخارجة من الغلاف إضافةً إلى استدعاء خادم الإعلانات النهائي.
أنماط الإخفاق الشائعة
- تحميل الـ stub بعد وسوم الإعلانات — لا يرى الشركاء أي CMP على الإطلاق.
- قسم خاطئ للمنطقة — إرسال قسم الاتحاد الأوروبي لزيارات أمريكية، أو عدم إرسال أي قسم.
- عدم تزامن الواجهة والإشارة — يتغير المفتاح لكن السلسلة لا تتغير.
- تجاهل GPC — إشارة المتصفح لا تتحول أبدًا إلى انسحاب.
- سلاسل قديمة في الطلبات — يخزّن الغلاف أول قيمة رآها مؤقتًا.
أهم النقاط
- ابدأ بـ ping: الإصدار والحالة والأقسام المنطبقة والسلسلة تروي معظم القصة.
- استخدم getSection لقراءة حقول الانسحاب؛ 1 تعني منسحب، و2 تعني غير منسحب.
- اختبر رابط الانسحاب وGPC كلًّا على حدة وتأكد من أن كليهما يغيّر الإشارة.
- استمع إلى الأحداث وانتظر إشارة “ready” قبل أن تقرأ طلبات الإعلانات السلسلة.
- تحقق من gpp وgpp_sid في طلبات الشبكة الفعلية، قبل الانسحاب وبعده.