API JavaScript về quyền riêng tư và thông báo

Giới thiệu

API này cung cấp các công cụ để tương tác với những thông báo do thẻ Quyền riêng tư và thông báo cung cấp. Với công cụ này, bạn có thể:

và hơn thế nữa.

Bạn cũng có thể sử dụng các công cụ này để thu thập sự đồng ý của người dùng bằng cách sử dụng các giao thức theo tiêu chuẩn ngành:

Trong những trường hợp này, trạng thái đồng ý được truyền đạt thông qua các API đó.

Bạn có thể triển khai chức năng thông báo cho người dùng này trên trang web của mình theo một số cách:

  1. Trong hầu hết các trường hợp, bạn không cần gắn lại thẻ – Thẻ nhà xuất bản của Google hoặc thẻ AdSense hiện có sẽ triển khai thông báo cho người dùng sau khi thông báo được xuất bản trong sản phẩm có liên quan.
  2. Nếu đang sử dụng thông báo khôi phục quảng cáo bị chặn, bạn cần thêm thẻ chặn quảng cáo vào trang một cách rõ ràng. Hãy xem hướng dẫn gắn thẻ Ad ManagerAdSense để biết thêm thông tin.

googlefc là không gian tên chung mà chức năng nhắn tin cho người dùng sử dụng cho API của chức năng này trên Window JavaScript.

Tóm tắt trường

Tên Loại Định nghĩa
googlefc.controlledMessagingFunction function(!Object) Một hàm xác định xem có tiếp tục gửi thông báo hay không. Chức năng này được hỗ trợ cho tất cả các loại thông báo.
googlefc.callbackQueue !Array<!Object<string, function()>> | !Array<function()> | !googlefc.CallbackQueue Tham chiếu đến hàng đợi gọi lại để thực thi không đồng bộ các truy vấn thông báo cho người dùng.
googlefc.CallbackQueue !Đối tượng Loại đối tượng hàng đợi lệnh gọi lại.
googlefc.AdBlockerStatusEnum !Object<string, number> Một enum để biểu thị trạng thái trình chặn quảng cáo của người dùng.
googlefc.AllowAdsStatusEnum !Object<string, number> Một enum để biểu thị trạng thái cho phép quảng cáo của người dùng.
googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum !Object<string, number> Một enum để biểu thị trạng thái chọn không áp dụng ban đầu của người dùng ở các tiểu bang tại Hoa Kỳ. Điều này có tính đến tiểu bang ở Hoa Kỳ nơi người dùng sinh sống.
googlefc.GoogleFcConsentModeUserStatus !Đối tượng Loại dữ liệu trả về cho googlefc.getGoogleConsentModeValues.
googlefc.ConsentModePurposeStatusEnum !Object<string, number> Một enum để biểu thị quyết định của người dùng cuối cho một mục đích của chế độ đồng ý.
googlefc.usstatesoptout.overrideDnsLink undefined|boolean Giá trị boolean có thể được đặt thành true để sử dụng đường liên kết Không bán hoặc chia sẻ tuỳ chỉnh của riêng bạn.
googlefc.ccpa.InitialCcpaStatusEnum

Cũ. Ưu tiên googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum.
!Object<string, number> Một enum để biểu thị trạng thái ban đầu của người dùng theo quy định của các tiểu bang ở Hoa Kỳ.
googlefc.ccpa.overrideDnsLink

Cũ. Ưu tiên googlefc.usstatesoptout.overrideDnsLink.
undefined|boolean Giá trị boolean có thể được đặt thành true để sử dụng đường liên kết Không bán hoặc chia sẻ tuỳ chỉnh của riêng bạn.

Tóm tắt phương thức

Tên Kiểu dữ liệu trả về Định nghĩa
googlefc.showRevocationMessage() chưa xác định Xoá bản ghi về sự đồng ý và tải lại tập lệnh googlefc để hiển thị thông báo yêu cầu đồng ý áp dụng cho người dùng.
googlefc.getAdBlockerStatus() số Trả về một giá trị trong AdBlockerStatusEnum tuỳ thuộc vào trạng thái chặn quảng cáo của người dùng.
googlefc.getAllowAdsStatus() số Trả về một giá trị trong AllowAdsStatusEnum tuỳ thuộc vào trạng thái cho phép quảng cáo của người dùng.
googlefc.usstatesoptout.getInitialUsStatesOptOutStatus() số Trả về một giá trị trong InitialUsStatesOptOutStatusEnum tuỳ thuộc vào trạng thái chọn không áp dụng ban đầu theo quy định của tiểu bang ở Hoa Kỳ của người dùng. Điều này có tính đến quy định áp dụng cho người dùng dựa trên vị trí hiện tại của họ.
googlefc.usstatesoptout.openConfirmationDialog(function(boolean)) chưa xác định Mở hộp thoại xác nhận từ chối theo quy định của các tiểu bang ở Hoa Kỳ nếu bạn ghi đè đường liên kết Đừng bán hoặc chia sẻ mặc định.
googlefc.getGoogleConsentModeValues() !Đối tượng Trả về một đối tượng googlefc.GoogleFcConsentModeUserStatus chứa các giá trị hiện tại của chế độ đồng ý cho người dùng, một giá trị cho mỗi mục đích có sẵn của chế độ đồng ý.
googlefc.ccpa.getInitialCcpaStatus()

Cũ. Ưu tiên googlefc.usstatesoptout.getInitialUsStatesOptOutStatus().
số Trả về một giá trị trong InitialCcpaStatusEnum tuỳ thuộc vào trạng thái chọn không áp dụng ban đầu theo quy định của tiểu bang ở Hoa Kỳ của người dùng.
googlefc.ccpa.openConfirmationDialog(function(boolean))

Cũ. Ưu tiên googlefc.usstatesoptout.openConfirmationDialog().
chưa xác định Mở hộp thoại xác nhận từ chối theo quy định của các tiểu bang ở Hoa Kỳ nếu bạn ghi đè đường liên kết Đừng bán hoặc chia sẻ mặc định.

Kiểm thử và gỡ lỗi trên trang web của bạn

Công cụ Quyền riêng tư và thông báo cung cấp chức năng gỡ lỗi và kiểm thử cho phép bạn xem thông báo cụ thể, loại phụ của thông báo hoặc tổ hợp thông báo trông như thế nào trên trang web thực tế của bạn.

Điều kiện tiên quyết:

  • (Các) thông báo mà bạn muốn xem trước phải được xuất bản trên trang web mà bạn đang thử nghiệm

Bạn có thể xem bản xem trước trực tiếp trên trang web của mình bằng cách sử dụng các tham số URL gỡ lỗi sau:

Thông số gỡ lỗi Giá trị cho phép
fc alwaysshow (để kích hoạt chế độ gỡ lỗi/xem trước)
fctype ab (Thông báo chặn quảng cáo), ccpa (Thông báo về lựa chọn từ chối theo quy định của các tiểu bang ở Hoa Kỳ), gdpr (Thông báo yêu cầu đồng ý theo Quy định chung về việc bảo vệ dữ liệu (GDPR)), monetization (Thông báo về tường phí), usfl (Thông báo về lựa chọn từ chối theo quy định của các tiểu bang ở Hoa Kỳ, dành riêng cho Florida), usnat (Thông báo về lựa chọn từ chối theo quy định của các tiểu bang ở Hoa Kỳ, dành cho tất cả các tiểu bang được hỗ trợ, ngoại trừ Florida; tương đương với ccpa)

Một số ví dụ về cách sử dụng tham số này để xem trước trên trang web của bạn (foo.com):

  • Kiểm thử thông báo chọn không áp dụng theo quy định của các tiểu bang tại Hoa Kỳ – http://foo.com/?fc=alwaysshow&fctype=ccpa
  • Thử nghiệm thông báo theo GDPR – http://foo.com/?fc=alwaysshow&fctype=gdpr

Các trường: nội dung giải thích và ví dụ

googlefc.controlledMessagingFunction {function(!Object)}

Một hàm xác định xem có nên hiển thị thông báo hay không. Bạn có thể dùng điều kiện này để kiểm soát việc hiển thị thông báo theo các điều kiện do nhà xuất bản chỉ định, chẳng hạn như trạng thái người đăng ký hoặc URL của trang.

Khi bạn xác định googlefc.controlledMessagingFunction trên Cửa sổ trước khi tải các tập lệnh khác, thông báo sẽ không hiển thị cho đến khi bạn gọi message.proceed(boolean). Việc gọi message.proceed(true) cho phép hoạt động gửi tin nhắn diễn ra như bình thường, trong khi việc gọi message.proceed(false) ngăn mọi tin nhắn xuất hiện cho lượt xem trang.

Ví dụ: giả sử bạn có tập lệnh này trên trang, tập lệnh này xác định một hàm async determineIfUserIsSubscriber() để kiểm tra xem người dùng đã đăng nhập có phải là người đăng ký hay không.

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

Đây là ví dụ về cách bạn có thể sử dụng googlefc.controlledMessagingFunction để chỉ hiển thị thông báo cho người không đăng ký.

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

Ngoài ra, tính năng này còn có một phần mở rộng cho phép nhà xuất bản chỉ định rằng chỉ Offerwall mới bị chặn. Sử dụng tiện ích này để chặn Offerwall mà không chặn các loại thông báo khác.

Bạn có thể đạt được thông báo có kiểm soát dành riêng cho Offerwall bằng cách truyền một tham số bổ sung đến message.proceed(), một Array thuộc loại googlefc.MessageTypeEnum.

Ví dụ: Đây là ví dụ về cách sử dụng googlefc.controlledMessagingFunction để chỉ chặn việc phân phát Offerwall cho người đăng ký mà không chặn các loại thông báo khác:

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

Tham chiếu đến hàng đợi gọi lại chung để thực thi không đồng bộ các lệnh gọi liên quan đến việc nhắn tin. Cách duy nhất được hỗ trợ để gọi bất kỳ hàm nào là thêm hàm đó vào callbackQueue.

Vì các loại dữ liệu khác nhau sẽ có sẵn tại các thời điểm khác nhau, nên bạn cần thêm một hàm dưới dạng bản đồ, với một trong các chuỗi sau làm khoá và hàm cần thực thi làm giá trị.

Các khoá được hỗ trợ:

Tên khoá Cách sử dụng Độ trễ tương đối
CONSENT_API_READY Các hàm được chuyển đến hàng đợi lệnh gọi lại bằng khoá CONSENT_API_READY sẽ được thực thi khi các API cho các khuôn khổ được hỗ trợ về sự đồng ý được xác định và có thể gọi. Từ thời điểm này trở đi, việc thực thi mọi hàm có khoá CONSENT_API_READY được thêm sau đó sẽ diễn ra đồng bộ. Hãy xem các phần về khuôn khổ của IAB để biết thông tin chi tiết cụ thể về từng khuôn khổ. Thấp
CONSENT_DATA_READY Các hàm được chuyển đến hàng đợi lệnh gọi lại bằng khoá CONSENT_DATA_READY sẽ được thực thi khi bạn biết được sự đồng ý của người dùng theo một khuôn khổ được hỗ trợ về sự đồng ý (từ lần thực thi trước hoặc sau khi người dùng tương tác với thông báo yêu cầu đồng ý). Từ thời điểm này trở đi, việc thực thi mọi hàm có khoá CONSENT_DATA_READY được thêm sau đó sẽ diễn ra đồng bộ. Cao
AD_BLOCK_DATA_READY Các hàm được chuyển đến hàng đợi callback bằng khoá AD_BLOCK_DATA_READY sẽ được thực thi khi dữ liệu chặn quảng cáo có sẵn trong luồng. Kể từ thời điểm này, việc thực thi mọi hàm có khoá AD_BLOCK_DATA_READY được thêm sau đó đều đồng bộ. Cao
CONSENT_MODE_DATA_READY Các hàm được chuyển đến hàng đợi lệnh gọi lại bằng khoá CONSENT_MODE_DATA_READY sẽ được thực thi khi dữ liệu [chế độ đồng ý](https://support.google.com/google-ads/answer/10000067) của Google (để sử dụng với thẻ Google Ads và Analytics) có sẵn trong luồng. Sau khi dữ liệu chế độ đồng ý sẵn sàng, bạn có thể truy cập vào các giá trị chế độ đồng ý bất cứ lúc nào bằng cách sử dụng googlefc.getGoogleConsentModeValues. Phương tiện
INITIAL_US_STATES_OPT_OUT_DATA_READY Các hàm được chuyển đến hàng đợi lệnh gọi lại bằng khoá INITIAL_US_STATES_OPT_OUT_DATA_READY sẽ được thực thi khi dữ liệu theo quy định của các tiểu bang ở Hoa Kỳ có sẵn trong luồng. Xin lưu ý rằng mọi yêu cầu tiếp theo về dữ liệu theo quy định của các bang ở Hoa Kỳ đều phải được thực hiện bằng cách gọi trực tiếp API Nền tảng quyền riêng tư trên toàn cầu (GPP) (__gpp). Phương tiện
INITIAL_CCPA_DATA_READY Khoá cũ cho quy định của các tiểu bang ở Hoa Kỳ. Ưu tiên INITIAL_US_STATES_OPT_OUT_DATA_READY.

Các hàm được chuyển đến hàng đợi lệnh gọi lại bằng khoá INITIAL_CCPA_DATA_READY sẽ được thực thi khi dữ liệu theo quy định của các tiểu bang ở Hoa Kỳ có trong luồng. Xin lưu ý rằng mọi yêu cầu tiếp theo về dữ liệu theo quy định của các bang ở Hoa Kỳ đều phải được thực hiện bằng cách gọi trực tiếp API Nền tảng quyền riêng tư trên toàn cầu (GPP) (__gpp).
Phương tiện

googlefc.CallbackQueue {!Object}

Tóm tắt phương thức:

Tên Loại Thông số Kiểu dữ liệu trả về Vai trò
push(data) số data: Một cặp khoá-giá trị, trong đó khoá là một trong các loại tính sẵn có của dữ liệu và giá trị là một hàm JavaScript sẽ được thực thi. Các khoá chấp nhận được về tính sẵn có của dữ liệu là CONSENT_API_READY, CONSENT_DATA_READY, AD_BLOCK_DATA_READY, INITIAL_US_STATES_OPT_OUT_DATA_READY, CONSENT_MODE_DATA_READY và (cũ) INITIAL_CCPA_DATA_READY. Số lượng lệnh đã thêm cho đến nay. Thao tác này sẽ trả về độ dài hiện tại của mảng. Thực thi hàm được truyền vào, theo thứ tự dữ liệu có sẵn, sau đó theo thứ tự các hàm này được thêm vào hàng đợi.

Ví dụ:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.usstatesoptout = window.googlefc.usstatesoptout || {};
  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>}

Biểu thị các trạng thái chặn quảng cáo khác nhau của người dùng. Các trạng thái có thể có là:

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

Biểu thị các trạng thái cho phép quảng cáo khi chặn quảng cáo của người dùng. Các trạng thái có thể là:

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.usstatesoptout.InitialUsStatesOptOutStatusEnum{!Object<string, number>}

Thể hiện các trạng thái chọn không áp dụng theo quy định của các tiểu bang ở Hoa Kỳ đối với người dùng. Các trạng thái khác nhau là:

googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum = {
  // Something failed, status unknown.
  UNKNOWN: 0,
  // No US state regulation applies to this user.
  DOES_NOT_APPLY: 1,
  // A US state regulation applies to this user, and the user has not opted out yet.
  NOT_OPTED_OUT: 2,
  // A US state regulation applies to this user, and the user has opted out.
  OPTED_OUT: 3,
};

googlefc.GoogleFcConsentModeUserStatus{!Object}

Loại đối tượng do googlefc.getGoogleConsentModeValues trả về.

interface GoogleFcConsentModeUserStatus {

  // End user consent decision value for the ad_storage consent mode purpose.
  adStoragePurposeConsentStatus: number;

  // End user consent decision value for the ad_user_data consent mode purpose.
  adUserDataPurposeConsentStatus: number;

  // End user consent decision value for the ad_personalization consent mode purpose.
  adPersonalizationPurposeConsentStatus: number;

  // End user consent decision value for the analytics_storage consent mode purpose.
  analyticsStoragePurposeConsentStatus: number;
}

Giá trị của mỗi trường là một số tương ứng với giá trị enum googlefc.ConsentModePurposeStatusEnum.


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

Biểu thị các giá trị đồng ý có thể có của người dùng cuối cho một mục đích của chế độ đồng ý. Các giá trị khác nhau là:

googlefc.ConsentModePurposeStatusEnum = {
  // Indicates either an error state, or that consent mode data is not ready
  // yet.
  UNKNOWN: 0,
  // Consent is granted for the given consent mode purpose.
  GRANTED: 1,
  // Consent is denied for the given consent mode purpose.
  DENIED: 2,
  // Consent is not applicable for the given consent mode purpose.
  NOT_APPLICABLE: 3,
  // The consent mode purpose has not been configured for use in the Privacy &
  // messaging UI.
  NOT_CONFIGURED: 4
};

googlefc.usstatesoptout.overrideDnsLink{undefined|boolean}

Đặt trường này thành true để ẩn đường liên kết mặc định Không bán hoặc chia sẻ và sử dụng đường liên kết tuỳ chỉnh của riêng bạn cho lựa chọn Không bán hoặc chia sẻ.

Ví dụ:

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

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

Thể hiện các trạng thái chọn không áp dụng theo quy định của các tiểu bang ở Hoa Kỳ đối với người dùng. Các trạng thái khác nhau là:

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

googlefc.ccpa.overrideDnsLink{undefined|boolean}

Đặt trường này thành true để ẩn đường liên kết mặc định Không bán hoặc chia sẻ và sử dụng đường liên kết tuỳ chỉnh của riêng bạn cho lựa chọn Không bán hoặc chia sẻ. Xin lưu ý rằng nếu đặt trường này thành true, bạn có trách nhiệm hiển thị đường liên kết Không bán hoặc chia sẻ trên trang web của mình. Bạn nên dùng trường này cùng với openConfirmationDialog.

Ví dụ:

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

Phương thức: nội dung giải thích và ví dụ

googlefc.getConsentStatus(): {number}


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

  1. Giờ đây, phương thức này luôn trả về một danh sách trống khi được gọi.

googlefc.showRevocationMessage(): {undefined}

Xoá bản ghi hiện tại về sự đồng ý theo quy định của Liên minh Châu Âu (nếu có) và hiện lại thông báo theo quy định của Liên minh Châu Âu để cho phép người dùng thay đổi quyết định đồng ý của họ.

Ví dụ 1: Ví dụ đơn giản về cách thiết lập một đường liên kết sẽ hiển thị thông báo thu hồi khi được nhấp vào:

<a href="javascript:window.googlefc.showRevocationMessage();">Privacy and cookie settings</a>
<a href="javascript:window.googlefc.showRevocationMessage();" style="display: none;" id="revocation-link">Privacy and cookie settings</a>
<script>
  window.googlefc = window.googlefc || {};
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];
  window.googlefc.callbackQueue.push({
    'CONSENT_API_READY':
    () => {
      // Update the revocation link so that it shows on the page.
      const revocationLink = document.getElementById('revocation-link');
      revocationLink.style.display = 'block';
    }
  });
</script>

Ví dụ 2: Nếu chỉ muốn đường liên kết xuất hiện khi quy định của Liên minh Châu Âu áp dụng cho người dùng hiện tại, bạn có thể sử dụng hàng đợi gọi lại googlefc với TCF API để cập nhật có điều kiện trạng thái hiển thị của nút dựa trên giá trị gdprApplies sau khi xác định. Để làm việc này, hãy sử dụng khoá API CONSENT_API_READY.

<a href="javascript:window.googlefc.showRevocationMessage();" style="display: none;" id="revocation-link">Privacy and cookie settings</a>
<script>
  window.googlefc = window.googlefc || {};
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];
  window.googlefc.callbackQueue.push({
    'CONSENT_API_READY':
    // Specifying "0" for the version parameter will result in the API call
    // using the latest version of the TCF spec.
    () => __tcfapi('addEventListener', 0, (tcdata, success) => {
      const revocationLink = document.getElementById('revocation-link');
      if (!success || !tcdata) {
        // Something went wrong, don't show the revocation link.
        revocationLink.style.display = 'none';
      }
      else if (tcdata.gdprApplies) {
        revocationLink.style.display = 'block';
      } else {
        // GDPR does not apply so don't show the revocation link.
        revocationLink.style.display = 'none';
      }
    })
  });
</script>

googlefc.getAdBlockerStatus(): {number}

Trả về một giá trị trong AdBlockerStatusEnum, tuỳ thuộc vào trạng thái chặn quảng cáo của người dùng. Khoá cần chỉ định cho hàm này là AD_BLOCK_DATA_READY.

Ví dụ:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.usstatesoptout = window.googlefc.usstatesoptout || {};
  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}

Trả về một giá trị trong AllowAdsStatusEnum tuỳ thuộc vào trạng thái cho phép quảng cáo của người dùng. Khoá cần chỉ định cho hàm này là AD_BLOCK_DATA_READY.

Ví dụ:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.usstatesoptout = window.googlefc.usstatesoptout || {};
  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.usstatesoptout.getInitialUsStatesOptOutStatus(): {number}

Trả về một giá trị trong InitialUsStatesOptOutStatusEnum tuỳ thuộc vào trạng thái không đồng ý theo quy định của tiểu bang ở Hoa Kỳ của người dùng. Khoá cần chỉ định cho hàm này là INITIAL_US_STATES_OPT_OUT_DATA_READY. Xin lưu ý rằng mọi yêu cầu tiếp theo về dữ liệu theo quy định của các tiểu bang tại Hoa Kỳ đều phải được lấy bằng cách gọi trực tiếp API GPP (__gpp).

Nếu đang ghi đè đường liên kết Không bán hoặc chia sẻ, bạn có thể sử dụng phương thức này để xác định thời điểm đưa đường liên kết đó vào trang web của mình.

Ví dụ:

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

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'INITIAL_US_STATES_OPT_OUT_DATA_READY':
    () => {
      switch (googlefc.usstatesoptout.getInitialUsStatesOptOutStatus()) {
        case googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum.DOES_NOT_APPLY:
          // Insert handling for cases where no US state regulation applies to
          // the user.
          break;
        case googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum.NOT_OPTED_OUT:
          // Insert handling for cases where a US state regulation applies to
          // the user, and the user has not opted out.
          break;
        case googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum.OPTED_OUT:
          // Insert handling for cases where a US state regulation applies to the
          // user, and the user has opted out.
          break;
      }
    }
  });
</script>

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

Mở hộp thoại xác nhận chọn không áp dụng theo quy định của tiểu bang tại Hoa Kỳ nếu đường liên kết mặc định Không bán bị ghi đè. Sau khi người dùng tương tác với hộp thoại xác nhận, hàm gọi lại được cung cấp sẽ được gọi bằng true nếu người dùng quyết định chọn không tham gia và false nếu không.

Ví dụ:

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

googlefc.getGoogleConsentModeValues(): {!Object}

Trả về một đối tượng googlefc.GoogleFcConsentModeUserStatus chứa các giá trị hiện tại của từng mục đích ở chế độ đồng ý, dựa trên quyết định đồng ý của người dùng.

Hãy xem phần Sử dụng các giải pháp quản lý sự đồng ý của Google có hỗ trợ chế độ đồng ý theo quy định của Liên minh Châu Âu để biết cách sử dụng dự kiến.


googlefc.ccpa.getInitialCcpaStatus(): {number}

Trả về một giá trị trong InitialCcpaStatusEnum tuỳ thuộc vào trạng thái chọn không áp dụng quy định của tiểu bang tại Hoa Kỳ đối với người dùng. Khoá cần được chỉ định cho hàm này là INITIAL_CCPA_DATA_READY. Xin lưu ý rằng mọi yêu cầu tiếp theo về dữ liệu theo quy định của tiểu bang tại Hoa Kỳ đều phải được lấy bằng cách gọi trực tiếp API GPP (__gpp).

Ví dụ:

<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 no US state regulation applies to
          // the user.
          break;
        case googlefc.ccpa.InitialCcpaStatusEnum.NOT_OPTED_OUT:
          // Insert handling for cases where a US state regulation applies to
          // the user, and the user has not opted out.
          break;
        case googlefc.ccpa.InitialCcpaStatusEnum.OPTED_OUT:
          // Insert handling for cases where a US state regulation applies to the
          // user, and the user has opted out.
          break;
      }
    }
  });
</script>

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

Mở hộp thoại xác nhận chọn không áp dụng theo quy định của tiểu bang tại Hoa Kỳ nếu đường liên kết mặc định Không bán bị ghi đè. Sau khi người dùng tương tác với hộp thoại xác nhận, hàm gọi lại được cung cấp sẽ được gọi bằng true nếu người dùng quyết định chọn không tham gia và false nếu không.

Ví dụ:

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

Nếu đang sử dụng các giải pháp quản lý sự đồng ý của Google để thu thập sự đồng ý theo Quy định chung về việc bảo vệ dữ liệu (GDPR) trong khuôn khổ TCF phiên bản 2 của IAB, bạn nên sử dụng API TCF phiên bản 2 của IAB.

Bạn có thể sử dụng khoá hàng đợi lệnh gọi lại CONSENT_API_READY để đảm bảo rằng các lệnh gọi lại tương ứng chỉ được gọi khi API TCF phiên bản 2 của IAB được xác định trên trang. Bạn nên dùng thuộc tính này cùng với lệnh 'addEventListener' của API TCF phiên bản 2 của IAB.

Ví dụ:

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

Bạn có thể sử dụng khoá hàng đợi lệnh gọi lại CONSENT_DATA_READY để đảm bảo rằng các lệnh gọi lại tương ứng chỉ được gọi khi sự đồng ý của người dùng được thu thập và có thể truy cập bằng API TCF phiên bản 2 của IAB. Bạn có thể sử dụng lệnh này cùng với lệnh 'addEventListener'. Dữ liệu được cung cấp trong lần gọi đầu tiên của lệnh gọi lại mà bạn cung cấp sẽ chứa lựa chọn đồng ý của người dùng (miễn là TCF phiên bản 2 áp dụng cho người dùng này). Xin lưu ý rằng với việc phát hành TCF phiên bản 2.2, lệnh 'getTCData' hiện không còn được dùng nữa.

Ví dụ:

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

Các giải pháp quản lý sự đồng ý của Google có thể diễn giải lựa chọn đồng ý của người dùng theo quy định của Liên minh Châu Âu cho chế độ đồng ý của Google (tìm hiểu thêm trong Trung tâm trợ giúp).

Bạn có thể triển khai chế độ đồng ý ở chế độ cơ bản hoặc chế độ nâng cao, như mô tả trong tài liệu của Google Ads và Analytics. Bạn nên tham khảo ý kiến của bộ phận pháp chế về chế độ đồng ý cần triển khai để đáp ứng các yêu cầu pháp lý.

Chế độ đồng ý nâng cao được hỗ trợ theo mặc định; sau khi bạn bật Chế độ đồng ý trong giao diện người dùng Quyền riêng tư và thông báo, bạn không cần làm gì thêm.

Để triển khai chế độ đồng ý cơ bản bằng các giải pháp quản lý sự đồng ý của Google, bạn có thể sử dụng khoá hàng đợi lệnh gọi lại CONSENT_MODE_DATA_READY để tải có điều kiện thẻ Google Ads và Analytics sau khi có dữ liệu chế độ đồng ý. Dữ liệu chế độ đồng ý sẽ có sẵn sau khi Funding Choices xác định rằng chế độ đồng ý không áp dụng cho yêu cầu này (ví dụ: vì các quy định của Liên minh Châu Âu không áp dụng cho yêu cầu này) hoặc sau khi người dùng đưa ra quyết định về sự đồng ý theo các quy định của Liên minh Châu Âu. Bạn nên tham khảo ý kiến của bộ phận pháp chế về các tiêu chí cần sử dụng để xác định xem thẻ của bạn có thể được tải hay không sau khi chế độ đồng ý được cung cấp.

Ví dụ: để tải thẻ của bạn khi có dữ liệu về chế độ đồng ý, bất kể quyết định đồng ý của người dùng cuối:

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

// Helper function to load Google Ads/Analytics tags once consent mode data is
// ready.
const loadGtagScript = () => {
  // Load gtag.js script - code taken from
  // https://developers.google.com/tag-platform/security/guides/consent?consentmode=basic#set_up_consent_mode
  var gtagScript = document.createElement('script');
  gtagScript.async = true;
  gtagScript.src = 'https://www.googletagmanager.com/gtag/js?id=<Google tag ID>';

  var firstScript = document.getElementsByTagName('script')[0];
  firstScript.parentNode.insertBefore(gtagScript,firstScript);
}

// Queue the callback using the CONSENT_MODE_DATA_READY key on the callbackQueue.
window.googlefc.callbackQueue.push({
  'CONSENT_MODE_DATA_READY':
  () => {
      loadGtagScript();
  },
});
</script>

Bạn cũng có thể sử dụng API googlefc.getGoogleConsentModeValues() để lấy các giá trị của từng mục đích trong chế độ đồng ý khi có dữ liệu chế độ đồng ý. API này trả về một đối tượng GoogleFcConsentModeUserStatus chứa một trường cho mỗi mục đích của chế độ đồng ý được hỗ trợ và giá trị của mỗi trường là một giá trị enum cho biết giá trị của mục đích đó trong chế độ đồng ý.

Ví dụ: bạn có thể sử dụng googlefc.getGoogleConsentModeValues() để bỏ chặn thẻ Google Ads và Analytics chỉ khi:

  • người dùng cuối đưa ra quyết định đồng ý theo quy định của Liên minh Châu Âu, dẫn đến việc cấp sự đồng ý cho tất cả các mục đích của chế độ đồng ý, hoặc
  • tất cả các mục đích của chế độ đồng ý đều không áp dụng cho yêu cầu hiện tại (điều này có thể xảy ra nếu quy định của Liên minh Châu Âu không áp dụng hoặc chế độ đồng ý không được định cấu hình cho một hoặc nhiều mục đích trong phần Quyền riêng tư và thông báo).
<script>
// Make sure that the properties exist on the window.
window.googlefc = window.googlefc || {};
window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

// Helper function to determine whether Google Ads and Analytics tags can be
// unblocked. Returns true if all consent mode purposes are set to GRANTED,
// NOT_APPLICABLE, or NOT_CONFIGURED.
const shouldUnblockConsentTags = (googleFcConsentModeStatus) => {
  const allConsentModeValues = [
    googleFcConsentModeStatus.adStoragePurposeConsentStatus,
    googleFcConsentModeStatus.adUserDataPurposeConsentStatus,
    googleFcConsentModeStatus.adPersonalizationPurposeConsentStatus,
    googleFcConsentModeStatus.analyticsStoragePurposeConsentStatus
  ];
  for (const consentModeValue of allConsentModeValues) {
    switch (consentModeValue) {
      case googlefc.ConsentModePurposeStatusEnum.CONSENT_MODE_PURPOSE_STATUS_UNKNOWN:
        // Indicates either an error case or that consent mode data is not
        // ready yet. Cannot unblock tags until consent data is ready and valid,
        // so return false.
        return false;
      case googlefc.ConsentModePurposeStatusEnum.CONSENT_MODE_PURPOSE_STATUS_GRANTED:
        // Consent is granted for this consent mode purpose.
        break;
      case googlefc.ConsentModePurposeStatusEnum.CONSENT_MODE_PURPOSE_STATUS_DENIED:
        // Consent is denied for this consent mode purpose. Do not unblock tags.
        return false;
      case googlefc.ConsentModePurposeStatusEnum.CONSENT_MODE_PURPOSE_STATUS_NOT_APPLICABLE:
        // Consent mode does not apply for this purpose.
        break;
      case googlefc.ConsentModePurposeStatusEnum.CONSENT_MODE_PURPOSE_STATUS_NOT_CONFIGURED:
        // Consent mode not configured for this purpose.
        // If you configured support for Ads purposes but not Analytics purposes in the
        // Privacy & messaging UI, the value of `analyticsStoragePurposeConsentStatus` will
        // always be set to NOT_CONFIGURED. If you do not enable any Consent Mode support
        // in the Privacy & messaging UI, the values of all purposes will always be set to
        // NOT_CONFIGURED.
        break;
      default:
        console.log("Unexpected consent mode value encountered");
    }
  }
  // If all prior checks pass, all consent mode values are either GRANTED,
  // NOT_APPLICABLE, or NOT_CONFIGURED.
  return true;
};

// Helper function to load Google Ads/Analytics tags.
const loadGtagScript = () => {
  // Load gtag.js script - code taken from
  // https://developers.google.com/tag-platform/security/guides/consent?consentmode=basic#set_up_consent_mode
  var gtagScript = document.createElement('script');
  gtagScript.async = true;
  gtagScript.src = 'https://www.googletagmanager.com/gtag/js?id=<Google tag ID>';

  var firstScript = document.getElementsByTagName('script')[0];
  firstScript.parentNode.insertBefore(gtagScript,firstScript);
}

googlefc.callbackQueue.push({
  CONSENT_MODE_DATA_READY: () => {
    if (shouldUnblockConsentTags(googlefc.getGoogleConsentModeValues())) {
      loadGtagScript();
    }
  },
});
</script>

Nếu đang sử dụng các giải pháp quản lý sự đồng ý của Google để cung cấp thông báo từ chối theo quy định của tiểu bang tại Hoa Kỳ cho người dùng cuối theo khuôn khổ Nền tảng quyền riêng tư toàn cầu (GPP) của Cục Quảng cáo tương tác (IAB), thì bạn nên sử dụng API GPP của IAB.

Do bản chất của quy định cấp tiểu bang tại Hoa Kỳ là cho phép người dùng chọn không tham gia, nên bạn có thể sử dụng khoá hàng đợi lệnh gọi lại CONSENT_API_READY hoặc CONSENT_DATA_READY để đảm bảo rằng bạn có thể gọi API GPP của IAB và API này sẽ trả về dữ liệu về sự đồng ý tại thời điểm lệnh gọi lại được thực thi.

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

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

Nếu đang sử dụng các giải pháp quản lý sự đồng ý của Google để cung cấp thông báo từ chối theo quy định của tiểu bang tại Hoa Kỳ cho người dùng cuối theo khuôn khổ Nền tảng quyền riêng tư trên toàn cầu (GPP) của Cục Quảng cáo tương tác (IAB), thì bạn có thể cung cấp đường liên kết tuỳ chỉnh của riêng mình cho lựa chọn Không bán hoặc chia sẻ bằng cách đặt cờ googlefc.usstatesoptout.overrideDnsLink thành true.

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

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

  // Register the callback for the initial US state regulations data.
  window.googlefc.callbackQueue.push({
      'INITIAL_US_STATES_OPT_OUT_DATA_READY': () => {
        if (googlefc.usstatesoptout.getInitialUsStatesOptOutStatus() ===
            googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum.NOT_OPTED_OUT) {
          // TODO: Display custom Do Not Sell or Share link here.
        }
      }
    });
</script>

Điều này đảm bảo rằng đường liên kết Không bán hoặc chia sẻ mặc định không hiển thị. Sau đó, bạn cần xử lý hoạt động tương tác của người dùng với đường liên kết Đừng bán hoặc chia sẻ tuỳ chỉnh bằng cách gọi hộp thoại xác nhận từ chối theo quy định của các tiểu bang ở Hoa Kỳ.

Xin lưu ý rằng khi sử dụng đường liên kết tuỳ chỉnh Đừng bán hoặc chia sẻ của riêng mình, bạn có trách nhiệm đảm bảo rằng đường liên kết đó tuân thủ các quy định của tiểu bang ở Hoa Kỳ.

<script>
// This callback will be called when the user makes a US state regulations
// decision.
const usStateRegCompletionCallback = (userOptedOut) => {
  if (userOptedOut) {
    // TODO: Hide custom Do Not Sell or Share link here.
  }
}
// Invoke the US state regulations opt-out confirmation dialog when the user
// clicks the link.
document.getElementById("your-custom-do-not-sell-link").addEventListener(
  "click", () => googlefc.usstatesoptout.openConfirmationDialog(usStateRegCompletionCallback));
</script>