Privacy & Messaging JavaScript API

מבוא

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

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

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

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

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

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

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

סיכומי שדות

שם סוג הגדרה
googlefc.controlledMessagingFunction פונקציה(!Object) פונקציה שקובעת אם להמשיך עם הודעות כלשהן. הפונקציונליות הזו נתמכת בכל סוגי ההודעות.
googlefc.callbackQueue !Array<!Object<string, function()>> | !Array&lt;function()&gt; | !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 לא מוגדר|בוליאני ערך בוליאני שאפשר להגדיר כ-True כדי להשתמש בקישור מותאם אישית של 'לא למכור'.

סיכומי שיטות

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

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

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

שם מפתח שימוש זמן אחזור יחסי
CONSENT_API_READY פונקציות שנדחפות לתור הקריאה החוזרת עם המפתח CONSENT_API_READY מתבצעות כאשר ממשקי ה-API למסגרות הסכמה נתמכות מוגדרים וניתן לקרוא אותם. מנקודה זו ואילך, ההפעלה של הפונקציות עם קידוד CONSENT_API_READY שנוספו לאחר מכן היא סינכרונית. פרטים ספציפיים על ה-framework זמינים בקטעים על frameworks של 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 אם המשתמש מחליט לבטל את ההסכמה, וגם אחרת, 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 גרסה 2 API.

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

<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>