ממשק API של JavaScript והודעות פרטיות

מבוא

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

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

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

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

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

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

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

תקצירי שדות

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

תקצירי השיטות

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

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

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

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

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

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

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

הנה כמה דוגמאות לשימוש בתצוגה מקדימה באתר (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 סגורה יכולים לציין שרק חומת התשלום צריכה להיסגר על ידי הזנת פרמטר נוסף ל-message.proceed(). הפרמטר הזה הוא Array מסוג googlefc.MessageTypeEnum. מספר הטיפוסים היחיד שנתמך היום הוא OFFERWALL, אבל יכול להיות שיתווספו סוגי הודעות נוספים בעתיד.

דוגמה: נניח שיש לכם את אותה פונקציה determineIfUserIsSubscriber() שלמעלה. זאת דוגמה לשימוש ב-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}

סיכום השיטה:

שם Type פרמטר סוג הערך המוחזר תפקיד
push(data) מספר טלפון 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 אם המשתמש מחליט לבטל את ההצטרפות, ואם לא – 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, עליכם להשתמש ב-IAB TCF v2 API.

ניתן להשתמש בCONSENT_API_READY

מפתח של תורים לקריאה חוזרת (callback) כדי לוודא שהקריאות החוזרות (callback) התואמות מופעלות רק כאשר ה-IAB TCF v2 API מוגדר בדף. יש להשתמש באפשרות הזו בשילוב עם הפקודה 'addEventListener' של IAB TCF מגרסה 2 של API, כי ייתכן שפקודת '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_API_READY key on the callbackQueue.
  window.googlefc.callbackQueue.push({
    'CONSENT_API_READY':
    () => __tcfapi('addEventListener', 2.0, (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) כדי לוודא שהקריאות החוזרות (callback) התואמות יופעלו רק כאשר מתבצעת הסכמה לאיסוף המשתמש וזמינה דרך API TCF של גרסה 2. אפשר להשתמש בערך הזה יחד עם הפקודה '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('getTCData', 2.0, (data, success) => {
      // Do something with consent data value.
    })
  });
</script>

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

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

בגלל הגדרת ביטול ההסכמה של תקנת CPRA, אפשר להשתמש במפתח של תור הקריאה החוזרת CONSENT_API_READY או CONSENT_DATA_READY כדי לוודא שה-IAB GPP API מאפשר קריאה ונתוני החזרה של בקשות הסכמה בזמן ההפעלה של קריאות חוזרות (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 לניהול הסכמה עם מסגרת IAB GPP עבור 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>