Privacy & Messaging JavaScript API

מבוא

ה-API הזה מספק כלים לאינטראקציה עם ההודעות שבכרטיסייה 'פרטיות והודעות'. איתו אפשר:

  • ביטול הודעות לכל משתמש נתון
  • שליחת שאילתה לגבי סטטוס חסימת המודעות של משתמש
  • לאפשר למשתמש לבטל את ההסכמה (אם רלוונטי)

אפשר גם להשתמש בכלים הבאים כדי לאסוף אישורי הסכמה מהמשתמשים באמצעות פרוטוקולים מסוימים המקובלים בתחום:

במקרים כאלה, סטטוס ההסכמה מועבר באמצעות ממשקי ה-API האלה.

אפשר לפרוס באתר שלכם את הפונקציונליות הזו של העברת הודעות למשתמשים בשתי דרכים:

  1. ברוב המקרים אין צורך בתיוג מחדש – תג Google Publisher הקיים או תג AdSense פורס את ההודעות למשתמשים אחרי פרסום ההודעה במוצר הרלוונטי.
  2. אם אתם משתמשים בהודעה למשתמשים עם חסימת מודעות, עליכם להוסיף לדף את התג לחסימת מודעות באופן מפורש. למידע נוסף, ראו Ad Manager ו-AdSense הוראות לתיוג.

googlefc הוא מרחב השמות הגלובלי שבו הפונקציונליות של העברת ההודעות למשתמשים משתמשת ב-API שלה ב-Window של JavaScript.

סיכומי שדות

שם סוג הגדרה
googlefc.controlledMessagingFunction function(!Object) פונקציה שקובעת אם להמשיך בהעברת הודעות. הפונקציונליות הזו נתמכת בכל סוגי ההודעות.
googlefc.callbackQueue !Array<!Object<string, function()>> | !Array<function()> | !googlefc.CallbackQueue הפניה לתור להתקשרות חזרה להפעלה אסינכרונית של שאילתות להעברת הודעות משתמשים.
googlefc.CallbackQueue !Object סוג האובייקט של תור הקריאה החוזרת (callback).
googlefc.AdBlockerStatusEnum !Object<string, number> 'טיפוסים בני מנייה (enum)' לייצוג מצב חסימת המודעות של המשתמש.
googlefc.AllowAdsStatusEnum !Object<string, number> 'טיפוסים בני מנייה (enum)' שמייצג את מצב הצגת המודעות של המשתמש.
googlefc.ccpa.InitialCcpaStatusEnum !Object<string, number> 'טיפוסים בני מנייה (enum)' שמייצג את הסטטוס הראשוני של ה-CPRA של המשתמש.
googlefc.ccpa.overrideDnsLink undefined|boolean ערך בוליאני שאפשר להגדיר כ-true כדי להשתמש בקישור 'לא למכירה' בהתאמה אישית.

סיכומי שיטה

שם סוג הערך שמוחזר הגדרה
googlefc.showRevocationMessage() undefined יתבצע ניקוי של רשומת ההסכמה וטעינה מחדש של הסקריפט googlefc כדי להציג את ההודעה בנושא הסכמה שרלוונטית למשתמש.
googlefc.getAdBlockerStatus() number מחזירה ערך ב-AdBlockerStatusEnum בהתאם לסטטוס חסימת המודעות של המשתמש.
googlefc.getAllowAdsStatus() number מחזירה ערך ב-AllowAdsStatusEnum בהתאם לסטטוס 'התרת מודעות' של המשתמש.
googlefc.ccpa.getInitialCcpaStatus() number מחזירה ערך ב-InitialCcpaStatusEnum בהתאם לסטטוס ה-CPRA הראשוני של המשתמש.
googlefc.ccpa.openConfirmationDialog(function(boolean)) undefined אם ביטלתם את הקישור 'לא למכירה' שמוגדר כברירת מחדל, תיפתח תיבת הדו-שיח לאישור לפי חוק CPRA.

בדיקה וניפוי באגים באתר

הכלי 'פרטיות והודעות' מספק פונקציונליות של ניפוי באגים ובדיקה שמאפשרת לראות איך הודעות ספציפיות (או שילובי הודעות) נראות באתר שלכם בפועל.

דרישות מוקדמות:

  • ההודעות שרוצים לראות בתצוגה מקדימה חייבות להתפרסם באתר שבודקים

אפשר לראות תצוגה מקדימה בזמן אמת באתר באמצעות הפרמטרים הבאים של כתובות URL לניפוי באגים:

פרמטר של ניפוי באגים ערכים מותרים
fc alwaysshow (כדי להפעיל מצב ניפוי באגים/תצוגה מקדימה)
fctype ab (הודעות בנושא חסימת מודעות), ccpa (הודעות לביטול הסכמה ל-CPRA), gdpr (הודעות בנושא הסכמה ל-GDPR), monetization (הודעות Offerwall)

כמה דוגמאות לאופן שבו אפשר להציג תצוגה מקדימה באתר שלכם (foo.com):

  • בדיקה של הודעת ה-CPRA – http://foo.com/?fc=alwaysshow&fctype=ccpa
  • בדיקה של הודעת ה-GDPR – http://foo.com/?fc=alwaysshow&fctype=gdpr

שדות: הסברים ודוגמאות

googlefc.controlledMessagingFunction {function(!Object)}

פונקציה שקובעת אם הודעות יוצגו או לא. אפשר להשתמש בו כדי להגביל רינדור של הודעות בתנאים שצוינו על ידי בעל התוכן הדיגיטלי, כמו סטטוס המנוי או כתובת ה-URL של הדף.

כשמגדירים את השדה googlefc.controlledMessagingFunction בחלון, לפני שסקריפטים אחרים נטענות, ההודעות לא מוצגות עד שמפעילים את message.proceed(boolean). הקריאה ל-message.proceed(true) מאפשרת לשלוח הודעות כרגיל, בעוד שהקריאה ל-message.proceed(false) מונעת מההודעות להופיע במהלך הצפייה בדף.

דוגמה: נניח שיש לכם בדף את הסקריפט הזה שמגדיר פונקציית אסינכרונית determineIfUserIsSubscriber() שבודקת אם המשתמש המחובר הוא מנוי.

<head>
  <script>
    window.isSubscriber = undefined;
    function determineIfUserIsSubscriber() {
      if (isSubscriber !== undefined) {
        return isSubscriber;
      }
      return new Promise(resolve => {
        setTimeout(() => {
          // Change this to true if you want to test what subscribers would see.
          window.isSubscriber = false;
          resolve(window.isSubscriber);
        }, 1000);
      });
    }
  </script>
</head>

זוהי דוגמה לאופן שבו אפשר להשתמש ב-googlefc.controlledMessagingFunction כדי להציג את ההודעה רק למשתמשים שאינם מנויים.

<head>
  <script>
    // Define googlefc and the controlled messaging function on the Window.
    window.googlefc = window.googlefc || {};
    googlefc.controlledMessagingFunction = async (message) => {
      // Determine if the user is a subscriber asynchronously.
      const isSubscriber = await determineIfUserIsSubscriber();

      if (isSubscriber) {
        // If the user is a subscriber, don't show any messages.
        message.proceed(false);
      } else {
        // Otherwise, show messages as usual.
        message.proceed(true);
      }
    }
  </script>
</head>

יש גם תוסף של התכונה הזו, שמאפשר לבעלי אפליקציות כחלק מגרסת הבטא הסגורה של Offerwall לציין שצריך לבטל רק את הודעת ה-Offerwall. סוגים אחרים של הודעות לא מושפעים כשהתכונה הזו פועלת.

כדי לקבל הודעות מבוקרות ספציפיות ל-Offerwall, צריך להעביר פרמטר נוסף אל message.proceed(), Array מסוג googlefc.MessageTypeEnum.

דוגמה: דוגמה לשימוש ב-googlefc.controlledMessagingFunction כדי להסתיר רק את הצגת הודעת ה-Offerwall למנויים, בלי להסתיר סוגי הודעות אחרים:

<head>
  <script>
    // Define googlefc and the controlled messaging function on the Window.
    window.googlefc = window.googlefc || {};
    googlefc.controlledMessagingFunction = async (message) => {
     // Determine if the Offerwall should display or not.
     const shouldDisplayOfferwall = await determineIfUserIsSubscriber();
     const applicableMessageTypes = [];

     if (!shouldDisplayOfferwall) {
       // Do not show the Offerwall, but allow other message types to display.
       applicableMessageTypes.push(window.googlefc.MessageTypeEnum.OFFERWALL);
       message.proceed(false, applicableMessageTypes);
     } else {
       // Otherwise, show messages as usual.
       message.proceed(true);
     }
    }
  </script>
</head>

googlefc.callbackQueue {!Array<!Object<string, function()>> | !Array<function()> | !googlefc.CallbackQueue}

הפניה לתור הגלובלי להתקשרות חזרה לביצוע אסינכרוני של קריאות שקשורות להעברת הודעות. הדרך הנתמכת היחידה להפעיל פונקציה היא להוסיף אותה ל-callbackQueue.

סוגים שונים של נתונים הופכים לזמינים בזמנים שונים, לכן צריך להוסיף פונקציה כמפה, כשאחת מהמחרוזות הבאות היא המפתח, ואת הפונקציה שצריך לבצע בתור הערך.

מפתחות נתמכים:

שם מפתח Usage זמן אחזור יחסי
CONSENT_API_READY פונקציות שנדחפו לתור הקריאה החוזרת באמצעות המפתח CONSENT_API_READY מבוצעות כשממשקי ה-API עבור מסגרות הסכמה נתמכות מוגדרים ואפשר להפעיל אותן. מנקודה זו ואילך, הביצוע של פונקציות עם קידוד מ-CONSENT_API_READY שיתווספו לאחר מכן הוא סינכרוני. לקבלת פרטים ספציפיים למסגרת, אפשר לעיין בקטעים על מסגרות של IAB. נמוך
CONSENT_DATA_READY פונקציות שנדחפו לתור הקריאה החוזרת באמצעות המפתח CONSENT_DATA_READY מבוצעות כשידועה ההסכמה של המשתמש שנאספה במסגרת מסגרת הסכמה נתמכת (מביצוע קודם או לאחר אינטראקציה של המשתמש עם ההודעה בנושא הסכמה). מנקודה זו ואילך, הביצוע של פונקציות עם קידוד מ-CONSENT_DATA_READY שיתווספו לאחר מכן הוא סינכרוני. גבוה
AD_BLOCK_DATA_READY פונקציות שנדחפו לתור הקריאה החוזרת באמצעות המפתח AD_BLOCK_DATA_READY מתבצעות כשנתונים לגבי חסימת מודעות הופכים לזמינים בתהליך. מנקודה זו ואילך, הביצוע של פונקציות עם קידוד מ-AD_BLOCK_DATA_READY שיתווספו לאחר מכן הוא סינכרוני. גבוה
INITIAL_CCPA_DATA_READY פונקציות שנדחפו לתור הקריאה החוזרת עם ה-INITIAL_CCPA_DATA_READY מבוצעות כשנתוני CPRA הופכים לזמינים בתהליך. הערה: כדי לשלוח בקשה נוספת לנתוני CPRA, צריך לקרוא ישירות ל-US Privacy API (__uspapi). אמצעי הגעה לאתר

googlefc.CallbackQueue {!Object}

סיכום השיטה:

שם סוג פרמטר סוג הערך שמוחזר תפקיד
push(data) number data: צמד מפתח/ערך עם המפתח כאחד מסוגי הזמינות של הנתונים, והערך כפונקציית JavaScript שצריך להריץ. המפתחות הקבילים לזמינות הנתונים הם CONSENT_API_READY, CONSENT_DATA_READY, AD_BLOCK_DATA_READY ו- INITIAL_CCPA_DATA_READY. מספר הפקודות שנוספו עד כה. פעולה זו מחזירה את האורך הנוכחי של המערך. מפעילה את הפונקציה שהועברה, לפי הסדר שבו הנתונים הופכים לזמינים, ואז לפי הסדר שבו הפונקציות נוספו לתור.

דוגמה:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'AD_BLOCK_DATA_READY':
    () => {
      if (googlefc.getAdBlockerStatus() == googlefc.AdBlockerStatusEnum.NO_AD_BLOCKER) {
        // Handle a non-ad blocking user.
      }
    }
  });
</script>

googlefc.AdBlockerStatusEnum {!Object<string, number>}

זהו המצבים השונים של חסימת מודעות של המשתמש. המצבים השונים הם:

googlefc.AdBlockerStatusEnum = {
  // Something failed, in an unknown state.
  UNKNOWN: 0,
  // The user was running an extension level ad blocker.
  EXTENSION_AD_BLOCKER: 1,
  // The user was running a network level ad blocker.
  NETWORK_LEVEL_AD_BLOCKER: 2,
  // The user was not blocking ads.
  NO_AD_BLOCKER: 3,
};

googlefc.AllowAdsStatusEnum {!Object<string, number>}

המדד הזה מייצג את המצבים השונים של המשתמשים שהפעילו חסימת מודעות. המצבים השונים הם:

googlefc.AllowAdsStatusEnum = {
  // Something failed, in an unknown state.
  UNKNOWN: 0,
  // User is currently using an ad blocker, was never using an ad blocker, or
  // allowed ads, but not because they saw the Privacy & messaging message.
  ADS_NOT_ALLOWED: 1,
  // User is no longer using an ad blocker after seeing the ad blocking message.
  ADS_ALLOWED: 2,
};

googlefc.ccpa.InitialCcpaStatusEnum{!Object<string, number>}

המדד הזה מייצג את המצבים השונים של המשתמשים שהפעילו חסימת מודעות. המצבים השונים הם:

googlefc.ccpa.InitialCcpaStatusEnum = {
  // Something failed, in an unknown state.
  UNKNOWN: 0,
  // CPRA does not apply to this user.
  CCPA_DOES_NOT_APPLY: 1,
  // CPPA applies to this user, and the user has not opted out yet.
  NOT_OPTED_OUT: 2,
  // CPPA applies to this user, and the user has opted out.
  OPTED_OUT: 3,
};

googlefc.ccpa.overrideDnsLink{undefined|boolean}

צריך להגדיר את השדה הזה כ-True כדי להסתיר את קישור ברירת המחדל 'לא למכור' ולהשתמש בקישור בהתאמה אישית 'לא למכירה'.

דוגמה:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  // Signals that the default DNS link will be overridden.
  googlefc.ccpa.overrideDnsLink = true;
</script>

שיטות: הסברים ודוגמאות

googlefc.getConsentStatus(): {number}


googlefc.getConsentedProviderIds(): {!Array<string>}

  1. פעולה זו תחזיר תמיד רשימה ריקה כאשר היא תקרא.

googlefc.showRevocationMessage(): {undefined}

ניקוי רשומת ההסכמה הנוכחית והצגת ההודעה בנושא הסכמה שחלה על המשתמש. המפתח שצריך לציין בפונקציה הזו הוא CONSENT_DATA_READY.

דוגמה:

<button type="button" onclick="googlefc.callbackQueue.push({'CONSENT_DATA_READY': () => googlefc.showRevocationMessage()});">
  Click here to revoke
</button>

googlefc.getAdBlockerStatus(): {number}

מחזירה ערך ב-AdBlockerStatusEnum בהתאם לסטטוס חסימת המודעות של המשתמש. המפתח שצריך לציין בפונקציה הזו הוא AD_BLOCK_DATA_READY.

דוגמה:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'AD_BLOCK_DATA_READY':
    () => {
      switch (googlefc.getAdBlockerStatus()) {
          case googlefc.AdBlockerStatusEnum.EXTENSION_LEVEL_AD_BLOCKER:
          case googlefc.AdBlockerStatusEnum.NETWORK_LEVEL_AD_BLOCKER:
            // Insert handling for cases where the user is blocking ads.
            break;
          case googlefc.AdBlockerStatusEnum.NO_AD_BLOCKER:
            // Insert handling for cases where the user is not blocking ads.
            break;
          case googlefc.AdBlockerStatusEnum.UNKNOWN:
            // Insert handling for unknown cases.
            break;
      }
    }
  });
</script>

googlefc.getAllowAdsStatus(): {number}

מחזירה ערך ב-AllowAdsStatusEnum בהתאם לסטטוס ההרשאות של הצגת מודעות של המשתמש. המפתח שצריך לציין בפונקציה הזו הוא AD_BLOCK_DATA_READY.

דוגמה:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'AD_BLOCK_DATA_READY':
    () => {
      switch (googlefc.getAllowAdsStatus()) {
        case googlefc.AllowAdsStatusEnum.ADS_NOT_ALLOWED:
          // Insert handling for cases where the user has not allowed ads.
          // The user may have never been an ad blocker.
          break;
        case googlefc.AllowAdsStatusEnum.ADS_ALLOWED:
          // Insert handling for cases where the user saw the ad blocking
          // message and allowed ads on the site.
          break;
        case googlefc.AllowAdsStatusEnum.UNKNOWN:
          // Insert handling for unknown cases.
          break;
      }
    }
  });
</script>

googlefc.ccpa.getInitialCcpaStatus(): {number}

הפונקציה מחזירה ערך ב-InitialCcpaStatusEnum בהתאם לסטטוס ה-CPRA של המשתמש. המפתח שצריך לציין בפונקציה הזו הוא INITIAL_CCPA_DATA_READY. הערה: כל בקשה לאחר מכן לנתוני CPRA צריך לקבל קריאה ישירה ל-US Privacy API (__uspapi).

דוגמה:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'INITIAL_CCPA_DATA_READY':
    () => {
      switch (googlefc.ccpa.getInitialCcpaStatus()) {
        case googlefc.ccpa.InitialCcpaStatusEnum.CCPA_DOES_NOT_APPLY:
          // Insert handling for cases where the user is not CPRA eligible.
          break;
        case googlefc.ccpa.InitialCcpaStatusEnum.NOT_OPTED_OUT:
          // Insert handling for cases where the user is CPRA eligible and has
          // not opted out.
          break;
        case googlefc.ccpa.InitialCcpaStatusEnum.OPTED_OUT:
          // Insert handling for cases where the user is CPRA eligible and has
          // opted out.
          break;
      }
    }
  });
</script>

googlefc.ccpa.openConfirmationDialog(function(boolean)): {undefined}

אם הקישור 'לא למכירה' בוטל, תיפתח תיבת הדו-שיח לאישור לפי CPRA. אחרי שהמשתמש יוצר אינטראקציה עם תיבת הדו-שיח לאישור, פונקציית הקריאה החוזרת שסופקה מופעלת באמצעות true אם המשתמש מחליט לבטל את ההסכמה. אחרת, פונקציית הקריאה החוזרת (callback) false.

דוגמה:

<script>
// This callback will be called with the user CPRA decision.
const ccpaCompletionCallback = (userOptedOut) => {
  // Insert handling for user opt-out status here.
}
// Invoke the CPRA confirmation dialog when the user clicks the link.
document.getElementById("your-custom-ccpa-do-not-sell-link").addEventListener(
  "click", () => googlefc.ccpa.openConfirmationDialog(ccpaCompletionCallback));
</script>

אם אתם משתמשים בפתרונות של Google לניהול הסכמה כדי לאסוף אישורי הסכמה ל-GDPR במסגרת TCF גרסה 2 של IAB, עליכם להשתמש ב-API של TCF גרסה 2 של IAB.

אפשר להשתמש במפתח תור הקריאה החוזרת (callback) CONSENT_API_READY כדי להבטיח שהקריאות החוזרות (callback) התואמות יופעלו רק כש-IAB TCF v2 API מוגדר בדף. צריך להשתמש באפשרות הזו בשילוב עם הפקודה 'addEventListener' של IAB TCF v2 API.

דוגמה:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback using the CONSENT_API_READY key on the callbackQueue.
  window.googlefc.callbackQueue.push({
    'CONSENT_API_READY':
    () => __tcfapi('addEventListener', 2.2, (data, success) => {
      // Do something with consent data value; this callback may be invoked
      // multiple times as user completes consent flow.
    })
  });
</script>

תוכלו להשתמש במפתח התור להתקשרות חזרה של CONSENT_DATA_READY כדי להבטיח שהקריאות החוזרות (callback) התואמות יופעלו רק כשאיסוף הנתונים על הסכמת המשתמש ייאסף ויהיה נגיש באמצעות TCF גרסה 2 של IAB. אפשר להשתמש בפקודה הזו יחד עם הפקודה 'addEventListener' – הנתונים שסופקו בהפעלה הראשונה של הקריאה החוזרת (callback) שתציינו יכללו את הבחירות של המשתמש בנוגע להסכמה (כל עוד גרסה 2 של TCF חלה על המשתמש הזה). שימו לב שבעקבות ההשקה של גרסה 2.2 של TCF, הפקודה 'getTCData' הוצאה משימוש.

דוגמה:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback using the CONSENT_DATA_READY key on the callbackQueue.
  window.googlefc.callbackQueue.push({
    'CONSENT_DATA_READY':
    () => __tcfapi('addEventListener', 2.2, (data, success) => {
      // Do something with consent data value; this callback may be invoked
      // multiple times if user consent selections change.
    })
  });
</script>

שימוש בפתרונות של Google לניהול הסכמה עם מסגרת GPP של IAB בנושא CPRA

אם אתם משתמשים בפתרונות של Google לניהול הסכמה כדי לאסוף ביטול הסכמה ל-CPRA במסגרת ה-GPP של IAB, כדאי לכם להשתמש ב-IAB GPP API.

תקנות ה-CPRA לא מאפשרות ביטול הסכמה, ולכן אפשר להשתמש במפתח התור לקריאה חוזרת (callback) ב-CONSENT_API_READY או ב-CONSENT_DATA_READY כדי לוודא שניתן לקרוא ל-GPP API של IAB ולהחזיר את נתוני ההסכמה בזמן ההפעלה של הקריאה החוזרת (callback).

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  window.googlefc.callbackQueue.push({
    'CONSENT_DATA_READY':
    () => __uspapi('getUSPData', 1, (data, success) => {
      // Do something with consent data value.
    })
  });
</script>

שימוש בפתרונות של Google לניהול הסכמה עם מסגרת ה-GPP של IAB בנושא CPRA עם קישור מותאם אישית בנושא 'לא למכירה'

אם אתם משתמשים בפתרונות של Google לניהול הסכמה כדי לאסוף ביטול הסכמה ל-CPRA במסגרת ה-GPP של IAB, יש לכם אפשרות לספק קישור מותאם אישית בנושא 'לא למכירה' על ידי הגדרת הדגל googlefc.ccpa.overrideDnsLink לערך true.

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Signals that the default DNS link will be overridden.
  window.googlefc.ccpa.overrideDnsLink = true;

  // Register the callback for the initial CPRA data.
  window.googlefc.callbackQueue.push({
      'INITIAL_CCPA_DATA_READY': () => {
        if (googlefc.ccpa.getInitialCcpaStatus() ===
            googlefc.ccpa.InitialCcpaStatusEnum.NOT_OPTED_OUT) {
          // TODO: Display custom CPRA Do Not Sell link here.
        }
      }
    });
</script>

כך אפשר לוודא שהקישור 'לא למכירה' שמוגדר כברירת מחדל לא מעובד. שימו לב: באחריותך ליצור קישור 'לא למכירה' משלך כדי לעמוד בדרישות של CPRA. לאחר מכן, צריך לטפל באינטראקציה של המשתמש עם הקישור המותאם אישית 'לא למכור' על ידי הפעלת תיבת הדו-שיח לאישור של חוק CPRA.

<script>
// This callback will be called with the user CPRA decision.
const ccpaCompletionCallback = (userOptedOut) => {
  if (userOptedOut) {
    // TODO: Hide custom CPRA Do Not Sell link here.
  }
}
// Invoke the CPRA confirmation dialog when the user clicks the link.
document.getElementById("your-custom-ccpa-do-not-sell-link").addEventListener(
  "click", () => googlefc.ccpa.openConfirmationDialog(ccpaCompletionCallback));
</script>