إنشاء نموذج لوضع الموافقة

هذه المقالة مخصّصة للمطوّرين الذين يحافظون على حلّ لإدارة الموافقة على المواقع الإلكترونية التي تستخدِم أداة "إدارة العلامات من Google".

تعرِض هذه الصفحة أنواع الموافقة في أداة "إدارة العلامات من Google" وتوضّح كيفية دمجها مع حلّ إدارة الموافقة.

عند تقديم نموذج علامة، يمكن للمستخدمين دمج حلّ الموافقة بطريقة لا تتطلّب كتابة رموز برمجية، ما يوفر الكثير من الوقت والجهد.

يمكن للمستخدمين ضبط حالات الموافقة التلقائية باستخدام نموذج وضع الموافقة، وإعلام أداة "إدارة العلامات من Google" بخيارات موافقة الزوّار. يضمن ذلك الأداء الأمثل لعلامات Google والعلامات التابعة لجهات خارجية التي تتيح وضع الموافقة.

بصفتك صانع نماذج، يمكنك تنفيذ نماذج وضع الموافقة للاستخدام الداخلي أو نشرها في معرض نماذج المنتدى لإتاحتها للجميع. تتاح لموفّري "منصّة إدارة الموافقة" (CMP) الذين يقدّمون نماذج "وضع الموافقة" فرصة إدراجهم في مستندات "وضع الموافقة" والسماح لـ "أداة اختيار معرض النماذج" بعرض النماذج الخاصة بهم.

تعدِّل علامات Google والعلامات التابعة لجهات خارجية سلوك التخزين استنادًا إلى حالة الموافقة التي تكون إما granted أو denied. يمكن أن تتضمّن عمليات مدمجة للتحقّق من الموافقة لأيّ من أنواع الموافقة التالية:

نوع الموافقة الوصف
ad_storage لتفعيل مساحة التخزين، مثل ملفات تعريف الارتباط، المرتبطة بالإعلانات
ad_user_data لضبط الموافقة على إرسال بيانات المستخدِمين إلى Google لأغراض إعلانية على الإنترنت
ad_personalization لضبط الموافقة على الإعلانات المخصّصة
analytics_storage لتفعيل مساحة التخزين، مثل ملفات تعريف الارتباط، المرتبطة بالإحصاءات (على سبيل المثال، مدّة الزيارة)
functionality_storage لتفعيل مساحة التخزين التي تتيح وظائف الموقع الإلكتروني أو التطبيق، مثل إعدادات اللغة
personalization_storage لتفعيل عملية تخزين المعلومات المرتبطة بالتخصيص، مثل اقتراحات الفيديو
security_storage لتفعيل مساحة التخزين المتعلقة بالأمان، مثل وظيفة المصادقة ومنع الاحتيال ووسائل حماية المستخدم الأخرى

تتتبّع ميزة "وضع الموافقة" خيارات الموافقة التي يختارها الزوّار وعمليات التحقّق من الموافقة على العلامات، بهدف ضمان تعديل سلوك العلامة وفقًا لذلك. عند إنشاء نموذج موافقة جديد، اتّبِع أفضل الممارسات التالية:

  • استخدِم واجهتَي برمجة التطبيقات لميزة "وضع الموافقة" في "إدارة العلامات من Google"، وهما setDefaultConsentState و updateConsentState بدلاً من gtag consent.

  • اضبط حالات الموافقة التلقائية على الفور عند التنشيط باستخدام مشغِّل إعداد الموافقة - جميع الصفحات.

  • يجب أن تطلب "منصّة إدارة الموافقة" من الزائر في أقرب وقت ممكن منح الموافقة أو رفضها على جميع أنواع الموافقة السارية.

  • عندما يشير الزائر إلى اختياره بشأن الموافقة، على منصّة إدارة الموافقة ضبط حالة الموافقة المعدَّلة.

1. إنشاء نموذج جديد

يستخدم نهج التنفيذ هذا حقلًا واحدًا في النموذج لتخزين حالة الموافقة التلقائية. يقرأ رمز التنفيذ هذا الحقل لضبط حالة الموافقة التلقائية في وقت التشغيل. بالنسبة إلى الأمر update، يحاول الرمز قراءة ملف تعريف ارتباط تم ضبطه من خلال حلّ الموافقة لتخزين خيارات موافقة الزائر. يجب أيضًا إعداد معاودة الاتصال لـ updateConsentState للتعامل مع الحالة التي لم يحدد فيها الزائر بعد اختيارات موافقته أو يقرر تغيير موافقته.

  1. سجِّل الدخول إلى حسابك على إدارة العلامات من Google.
  2. في شريط التنقّل الأيمن، انقر على النماذج.
  3. في لوحة نماذج العلامات، انقر على جديد.
  1. اختَر علامة التبويب الحقول، ثم انقر على إضافة حقل > جدول المَعلمات.
  2. غيِّر الاسم إلى defaultSettings.
  3. وسِّع الحقل.
  4. عدِّل الاسم المعروض إلى Default settings.
  5. انقر على إضافة عمود، ثم على إدخال النص، وغيِّر الاسم إلى region، ثم ضَع علامة في المربّع اشتراط أن تكون قيم الأعمدة فريدة.
  6. وسِّع العمود، وغيِّر الاسم المعروض إلى Region (leave blank to have consent apply to all regions). العبارة بين قوسين هي مستندات لمستخدمي النموذج. مزيد من المعلومات حول إعداد القيم التلقائية للموافقة في مناطق مختلفة
  7. انقر على إضافة عمود، ثم على إدخال النص، ثم غيِّر الاسم إلى granted.
  8. وسِّع العمود وغيِّر الاسم المعروض إلى Granted Consent Types (comma separated).
  9. انقر على إضافة عمود، واختَر إدخال نص، وغيِّر الاسم إلى denied.
  10. وسِّع العمود وغيِّر الاسم المعروض إلى Denied Consent Types (comma separated).

اختياري: لإضافة ميزة إخفاء بيانات الإعلانات:

  1. انقر على إضافة حقل، واختَر مربّع اختيار، وغيِّر اسم الحقل إلى ads_data_redaction.
  2. عدِّل الاسم المعروض إلى Redact Ads Data.

اطّلِع على مزيد من المعلومات عن سلوك ملفات تعريف الارتباط في ما يتعلّق بإخفاء بيانات الإعلانات.

اختياري: لإضافة إمكانية تمرير مَعلمات عناوين URL:

  1. انقر على إضافة حقل، واختَر مربّع اختيار، وغيِّر اسم الحقل إلى url_passthrough.
  2. عدِّل الاسم المعروض إلى Pass through URL parameters.

مزيد من المعلومات عن تمرير مَعلمات عناوين URL

لإضافة رمز التنفيذ:

  1. افتح علامة التبويب الرمز في محرِّر النماذج.
  2. في نموذج الرمز البرمجي أدناه، عدِّل حقول العنصر النائب.
  3. انسخ الرمز واستبدله بشفرة نموذجية في محرِّر النماذج.
  4. احفظ النموذج.
// The first two lines are optional, use if you want to enable logging
const log = require('logToConsole');
log('data =', data);
const setDefaultConsentState = require('setDefaultConsentState');
const updateConsentState = require('updateConsentState');
const getCookieValues = require('getCookieValues');
const callInWindow = require('callInWindow');
const gtagSet = require('gtagSet');
const COOKIE_NAME = 'Your_cookie_name';
/*
 *   Splits the input string using comma as a delimiter, returning an array of
 *   strings
 */
const splitInput = (input) => {
  return input.split(',')
      .map(entry => entry.trim())
      .filter(entry => entry.length !== 0);
};
/*
 *   Processes a row of input from the default settings table, returning an object
 *   which can be passed as an argument to setDefaultConsentState
 */
const parseCommandData = (settings) => {
  const regions = splitInput(settings['region']);
  const granted = splitInput(settings['granted']);
  const denied = splitInput(settings['denied']);
  const commandData = {};
  if (regions.length > 0) {
    commandData.region = regions;
  }
  granted.forEach(entry => {
    commandData[entry] = 'granted';
  });
  denied.forEach(entry => {
    commandData[entry] = 'denied';
  });
  return commandData;
};
/*
 *   Called when consent changes. Assumes that consent object contains keys which
 *   directly correspond to Google consent types.
 */
const onUserConsent = (consent) => {
  const consentModeStates = {
    ad_storage: consent['adConsentGranted'] ? 'granted' : 'denied',
    ad_user_data: consent['adUserDataConsentGranted'] ? 'granted' : 'denied',
    ad_personalization: consent['adPersonalizationConsentGranted'] ? 'granted' : 'denied',
    analytics_storage: consent['analyticsConsentGranted'] ? 'granted' : 'denied',
    functionality_storage: consent['functionalityConsentGranted'] ? 'granted' : 'denied',
    personalization_storage: consent['personalizationConsentGranted'] ? 'granted' : 'denied',
    security_storage: consent['securityConsentGranted'] ? 'granted' : 'denied',
  };
  updateConsentState(consentModeStates);
};
/*
 *   Executes the default command, sets the developer ID, and sets up the consent
 *   update callback
 */
const main = (data) => {
  /*
   * Optional settings using gtagSet
   */
  gtagSet('ads_data_redaction', data.ads_data_redaction);
  gtagSet('url_passthrough', data.url_passthrough);
  gtagSet('developer_id.your_developer_id', true);
  // Set default consent state(s)
  data.defaultSettings.forEach(settings => {
    const defaultData = parseCommandData(settings);
  // wait_for_update (ms) allows for time to receive visitor choices from the CMP
    defaultData.wait_for_update = 500;
    setDefaultConsentState(defaultData);
  });

  // Check if cookie is set and has values that correspond to Google consent
  // types. If it does, run onUserConsent().
  const settings = getCookieValues(COOKIE_NAME);
  if (typeof settings !== 'undefined') {
    onUserConsent(settings);
  }
  /**
   *   Add event listener to trigger update when consent changes
   *
   *   References an external method on the window object which accepts a
   *   function as an argument. If you do not have such a method, you will need
   *   to create one before continuing. This method should add the function
   *   that is passed as an argument as a callback for an event emitted when
   *   the user updates their consent. The callback should be called with an
   *   object containing fields that correspond to the five built-in Google
   *   consent types.
   */
  callInWindow('addConsentListenerExample', onUserConsent);
};
main(data);
data.gtmOnSuccess();

بعد ذلك، عليك ضبط الأذونات للوصول إلى حالة الموافقة والوصول إلى ملفات تعريف الارتباط.

  1. انقر على علامة التبويب الأذونات ثم على حالة الموافقة على أذونات الوصول.
  2. انقر على إضافة نوع الموافقة.
  3. انقر على المربّع واختَر ad_storage من القائمة المنسدلة.
  4. ضَع علامة في المربّع بجانب الكتابة.
  5. انقر على إضافة.
  6. كرِّر الخطوات من 2 إلى 5 لكلٍّ من ad_user_data وad_personalization و analytics_storage. إذا كنت بحاجة إلى أنواع موافقة إضافية، أضِفها بالطريقة نفسها.
  7. انقر على حفظ.

لإضافة أذونات للوصول إلى ملفات تعريف الارتباط:

  1. اختَر علامة التبويب الأذونات وانقر على قراءة قيم ملفات تعريف الارتباط.
  2. ضمن محدّد، أدخِل أسماء ملفات تعريف الارتباط التي يحتاج رمزك إلى قراءة محتوياتها لتحديد خيارات موافقة المستخدم، اسم واحد في كل سطر.
  3. انقر على حفظ.

2. إنشاء اختبارات للوحدات

راجِع قسم الاختبارات للحصول على معلومات حول إنشاء اختبارات للنموذج.

يعرض الرمز البرمجي التالي مثالاً واحدًا على كيفية دمج هذا النموذج مع رمز حلّ إدارة الموافقة من خلال إضافة مستمع:

// Array of callbacks to be executed when consent changes
const consentListeners = [];

/**
 *   Called from GTM template to set callback to be executed when user consent is provided.
 *   @param {function} Callback to execute on user consent
 */
window.addConsentListenerExample = (callback) => {
  consentListeners.push(callback);
};

/**
 *   Called when user grants/denies consent.
 *   @param {Object} Object containing user consent settings.
 */
const onConsentChange = (consent) => {
  consentListeners.forEach((callback) => {
    callback(consent);
  });
};

بعد أن يشير زائر الموقع الإلكتروني إلى خيارات الموافقة، عادةً من خلال التفاعل مع بانر الموافقة، من المفترض أن يعدّل رمز النموذج حالات الموافقة وفقًا لذلك باستخدام واجهة برمجة التطبيقات updateConsentState.

يعرض المثال التالي طلب updateConsentState لزائر أشار إلى موافقته على جميع أنواع التخزين. مرة أخرى، يستخدم هذا المثال قيمًا برمجية ثابتة لـ "granted"، ولكن من الناحية العملية، يجب تحديد هذه القيم أثناء التشغيل باستخدام موافقة الزائر التي تجمعها منصّة إدارة الموافقة.

const updateConsentState = require('updateConsentState');

updateConsentState({
  'ad_storage': 'granted',
  'ad_user_data': 'granted',
  'ad_personalization': 'granted',
  'analytics_storage': 'granted',
  'functionality_storage': 'granted',
  'personalization_storage': 'granted',
  'security_storage': 'granted'
});

لمحة عن السلوك الخاص بمناطق معيّنة

لضبط حالات الموافقة التلقائية التي تنطبق على الزوّار من مناطق معيّنة، حدِّد منطقة (وفقًا لمعيار ISO 3166-2) في النموذج. يتيح استخدام قيم المناطق لمستخدمي النماذج الامتثال للوائح الإقليمية بدون فقدان معلومات الزوّار من خارج تلك المناطق. عندما لا يتم تحديد منطقة في الأمر setDefaultConsentState، تنطبق القيمة على جميع المناطق الأخرى.

على سبيل المثال، يضبط الإجراء التالي الحالة التلقائية لـ analytics_storage على denied للزوار من إسبانيا وألاسكا، ويضبط analytics_storage على granted لجميع المستخدمين الآخرين:

const setDefaultConsentState = require('setDefaultConsentState');

setDefaultConsentState({
  'analytics_storage': 'denied',
  'region': ['ES', 'US-AK']
});
setDefaultConsentState({
  'analytics_storage': 'granted'
});

الأكثر تحديدًا تكون الأولوية

إذا كان هناك أمران تلقائيان للموافقة في الصفحة نفسها يتضمّنان قيمًا لمنطقة ومنطقة فرعية، سيسري الأمر الذي يتضمّن منطقة أكثر تحديدًا. على سبيل المثال، إذا تم ضبط ad_storage على 'granted' للمنطقة US وad_storage على 'denied' للمنطقة US-CA، سيتم تطبيق الإعداد US-CA الأكثر تحديدًا على زائر من كاليفورنيا.

المنطقة ad_storage السلوك
الولايات المتحدة 'granted' تنطبق على المستخدمين في الولايات المتحدة الذين لا يقيمون في كندا
الولايات المتحدة-كندا 'denied' يسري على المستخدمين المقيمين في الولايات المتحدة.
غير محدّد 'granted' يتم استخدام القيمة التلقائية 'granted'. في هذا المثال، تنطبق هذه القيمة على المستخدِمين الذين لا يقيمون في الولايات المتحدة أو الولايات المتحدة وكندا.

البيانات الوصفية الإضافية

يمكنك استخدام واجهة برمجة التطبيقات gtagSet لضبط المَعلمات الاختيارية التالية:

لا تتوفّر واجهات برمجة التطبيقات هذه إلا في بيئة وضع الحماية لنموذج "إدارة العلامات من Google".

تمرير معلومات النقرة على الإعلان ورقم تعريف العميل ورقم تعريف الجلسة في عناوين URL

عندما يصل زائر إلى موقع إلكتروني خاص بمعلِن بعد النقر على إعلان، قد يتم إلحاق معلومات عن الإعلان بعناوين URL للصفحات المقصودة كمَعلمة طلب بحث. لتحسين دقة الإحالات الناجحة، تخزِّن علامات Google عادةً هذه المعلومات في ملفات تعريف الارتباط الخاصة بالطرف الأول على نطاق المعلِن.

ومع ذلك، إذا كان ad_storage هو denied، لن تحفظ علامات Google هذه المعلومات على الجهاز. لتحسين جودة قياس النقرات على الإعلانات في هذه الحالة، يمكن للمعلِنين اختياريًا تمرير معلومات النقرات على الإعلانات من خلال مَعلمات عناوين URL على مستوى الصفحات باستخدام ميزة تُعرف باسم "تمرير عنوان URL".

وبالمثل، إذا تم ضبط السمة analytics_storage على "مرفوضة"، يمكن استخدام ميزة عبور عنوان URL لإرسال الإحصاءات المستندة إلى الأحداث والجلسات (بما في ذلك الإحالات الناجحة) بدون ملفات تعريف الارتباط على جميع الصفحات.

يجب استيفاء الشروط التالية لاستخدام ميزة "تمرير عنوان URL":

  • تتوفّر علامات Google المتوافقة مع موافقة المستخدِم على الصفحة.
  • فعَّل الموقع الإلكتروني ميزة تمرير عنوان URL.
  • تم تنفيذ "وضع الموافقة" على الصفحة.
  • يشير الرابط الصادر إلى النطاق نفسه الذي يشير إليه نطاق الصفحة الحالية.
  • توفُّر معرّف النقرة من Google ‏(gclid) أو معرّف النقرة من Floodlight ‏(dclid) في عنوان URL (علامات "إعلانات Google" وFloodlight فقط)

يجب أن يسمح النموذج لمستخدمه بضبط ما إذا كان يريد تفعيل هذا الإعداد أم لا. يتم استخدام رمز النموذج التالي لضبط url_passthrough على true:

gtagSet('url_passthrough', true);

إخفاء بيانات الإعلانات

عند رفض ad_storage، لا يتم ضبط ملفات تعريف ارتباط جديدة للأغراض الإعلانية. بالإضافة إلى ذلك، لن يتم استخدام ملفات تعريف الارتباط التابعة لجهات خارجية التي تم إعدادها سابقًا على google.com و doubleclick.net. ستظل البيانات المُرسَلة إلى Google تتضمّن عنوان URL الكامل للصفحة، بما في ذلك أي معلومات عن النقر على الإعلان في مَعلمات عنوان URL.

لمزيد من إخفاء بيانات إعلاناتك عند رفض ad_storage، اضبط ads_data_redaction على true.

عندما يكون ads_data_redaction صحيحًا ويتم رفض ad_storage، سيتم إخفاء معرّفات النقرات على الإعلانات التي يتم إرسالها في طلبات الشبكة من خلال علامات "إعلانات Google" وFloodlight.

gtagSet('ads_data_redaction', true);

معرّف المطوّر

إذا كنت موفِّر منصّة إدارة موافقة (CMP) وتملك معرّف مطوّر صادرًا عن Google، استخدِم الخطوات التالية لضبط هذا الإعداد في أقرب وقت ممكن في النموذج.

لن تحتاج إلى رقم تعريف المطوّر إلا عندما يتم استخدام عملية التنفيذ على مستوى مواقع إلكترونية متعددة من قِبل شركات أو كيانات غير مرتبطة ببعضها. إذا كان سيتم استخدام التنفيذ من قِبل موقع إلكتروني أو كيان واحد، لا تتقدم بطلب للحصول على رقم تعريفي لمطوّر البرامج.

gtagSet('developer_id.<your_developer_id>', true);

تقديم مستندات للمستخدمين

سيستخدم المستخدمون نموذج الموافقة لإعداد علامة تجمع موافقة المستخدم. يجب تقديم مستندات للمستخدمين توضّح أفضل الممارسات التالية:

  • كيفية ضبط الإعدادات التلقائية للموافقة في جدول الإعدادات
  • كيفية ضبط القيم التلقائية للموافقة لمناطق مختلفة من خلال إضافة صفوف جدول إضافية
  • شغِّل العلامة من خلال مشغِّل إعداد الموافقة - كل الصفحات.

الخطوات التالية

إذا كنت تريد توفير النموذج لجميع مستخدمي أداة "إدارة العلامات من Google"، حمِّله إلى معرض النماذج الخاص بالمنتدى.