Theo Chính sách về sự đồng ý của người dùng ở Liên minh Châu Âu của Google, bạn phải công bố một số thông tin nhất định cho người dùng ở Khu vực kinh tế Châu Âu (EEA)/Vương quốc Anh và phải có được sự đồng ý của họ để sử dụng cookie hoặc phương pháp lưu trữ cục bộ khác khi pháp luật yêu cầu, cũng như để sử dụng dữ liệu cá nhân (như mã nhận dạng cho quảng cáo) nhằm mục đích phân phát quảng cáo. Chính sách này thể hiện các yêu cầu của Chỉ thị về quyền riêng tư và truyền thông điện tử của Liên minh Châu Âu và Quy định chung về việc bảo vệ dữ liệu (GDPR).
Hướng dẫn này trình bày các bước mà bạn cần thực hiện để hỗ trợ triển khai thông báo về GDPR theo TCF phiên bản 2 của IAB trong SDK UMP. Bài viết này kết hợp với bài viết Bắt đầu để cung cấp thông tin tổng quan về cách chạy ứng dụng bằng SDK UMP và các bước cơ bản để thiết lập thông báo. Hướng dẫn sau đây dành riêng cho thông báo về GDPR theo TCF phiên bản 2 của IAB. Để biết thêm thông tin, hãy xem bài viết Tác động của các yêu cầu của IAB đối với thông báo yêu cầu đồng ý ở Liên minh Châu Âu.
Điều kiện tiên quyết
Thu hồi sự đồng ý
GDPR yêu cầu thu hồi sự đồng ý để cho phép người dùng rút lại lựa chọn đồng ý của họ bất cứ lúc nào. Hãy xem phần Tuỳ chọn về quyền riêng tư để triển khai cách người dùng rút lại lựa chọn đồng ý.
Thẻ dành cho người chưa đủ độ tuổi hợp pháp để tự quản lý tài khoản
Để cho biết người dùng có đủ tuổi thành niên hay không, hãy đặt
setTagForUnderAgeOfConsent
(TFUA). Khi bạn đặt TFUA thành true
, SDK UMP sẽ không yêu cầu người dùng đồng ý. Nếu ứng dụng của bạn nhắm đến nhiều kiểu đối tượng, hãy đặt thông số này cho người dùng là trẻ em để đảm bảo không yêu cầu sự đồng ý.
Ví dụ sau đây đặt TFUA thành true trên yêu cầu đồng ý UMP:
Java
ConsentRequestParameters params = new ConsentRequestParameters
.Builder()
// Indicate the user is under age of consent.
.setTagForUnderAgeOfConsent(true)
.build();
consentInformation = UserMessagingPlatform.getConsentInformation(this);
consentInformation.requestConsentInfoUpdate(
this,
params,
(OnConsentInfoUpdateSuccessListener) () -> {
// ...
},
(OnConsentInfoUpdateFailureListener) requestConsentError -> {
// ...
});
Kotlin
val params = ConsentRequestParameters
.Builder()
// Indicate the user is under age of consent.
.setTagForUnderAgeOfConsent(true)
.build()
consentInformation = UserMessagingPlatform.getConsentInformation(this)
consentInformation.requestConsentInfoUpdate(
this,
params,
ConsentInformation.OnConsentInfoUpdateSuccessListener {
// ...
},
ConsentInformation.OnConsentInfoUpdateFailureListener {
requestConsentError ->
// ...
})
Dàn xếp
Bạn có thể làm theo các bước trong bài viết Thêm đối tác quảng cáo vào các thông báo về GDPR đã xuất bản để thêm các đối tác dàn xếp vào danh sách đối tác quảng cáo. Nếu bạn không làm việc này, các đối tác sẽ không thể phân phát quảng cáo trên ứng dụng của bạn.
Ngoài ra, các đối tác dàn xếp cũng có các công cụ khác để hỗ trợ việc tuân thủ Quy định chung về việc bảo vệ dữ liệu (GDPR). Hãy xem bài viết hướng dẫn tích hợp của một đối tác cụ thể để biết thêm thông tin.
Cách đọc lựa chọn về sự đồng ý
Sau khi thu thập sự đồng ý theo GDPR, bạn có thể đọc các lựa chọn đồng ý từ bộ nhớ cục bộ theo thông số kỹ thuật TCF phiên bản 2. Khoá IABTCF_PurposeConsents
cho biết sự đồng ý đối với từng mục đích theo TCF.
Đoạn mã sau đây cho biết cách kiểm tra sự đồng ý cho Mục đích 1:
Java
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
// Example value: "1111111111"
String purposeConsents = sharedPref.getString("IABTCF_PurposeConsents", "");
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (!purposeConsents.isEmpty()) {
String purposeOneString = purposeConsents.charAt(0);
boolean hasConsentForPurposeOne = purposeOneString.equals("1");
}
Kotlin
val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)
// Example value: "1111111111"
val purposesConsents = sharedPref.getString("IABTCF_PurposeConsents", "")
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (!purposeConsents.isEmpty()) {
val purposeOneString = purposeConsents.first()
val hasConsentForPurposeOne = purposeOneString == "1"
}
Câu hỏi thường gặp
- Điều gì sẽ xảy ra nếu tôi không làm gì cả để đáp ứng Yêu cầu đối với Nền tảng quản lý sự đồng ý khi phân phát quảng cáo ở Khu vực kinh tế Châu Âu (EEA) và Vương quốc Anh?
Kể từ ngày 16 tháng 1 năm 2024, nếu một đối tác không sử dụng CMP được Google chứng nhận, thì chỉ Quảng cáo bị hạn chế mới đủ điều kiện được phân phát cho lưu lượng truy cập ở Khu vực kinh tế Châu Âu (EEA) và Vương quốc Anh.
Chúng tôi sẽ bắt đầu thực thi từ ngày 16 tháng 1 năm 2024 cho một tỷ lệ nhỏ lưu lượng truy cập ở EEA và Vương quốc Anh, rồi tăng dần phạm vi cho đến khi chúng tôi thực thi trên tất cả lưu lượng truy cập ở EEA và Vương quốc Anh muộn nhất vào cuối tháng 2 năm 2024. Sử dụng một CMP được chứng nhận muộn nhất vào ngày 16 tháng 1 năm 2024 để đảm bảo khả năng kiếm tiền của bạn không bị ảnh hưởng.
- Làm cách nào để kiểm tra xem người dùng có đồng ý hay không?
Sự đồng ý không được biểu thị bằng một bit mà là một tập hợp các mục đích và nhà cung cấp như được xác định trong quy cách TCF của IAB. Hãy xem nội dung Chính sách về sự đồng ý: Quảng cáo được cá nhân hoá và quảng cáo không được cá nhân hoá để biết các tiêu chí cá nhân hoá của Google Ads.
Ngoài ra, các công nghệ quảng cáo trong danh sách Nhà cung cấp công nghệ quảng cáo (ATP) của Google chưa được đăng ký trong danh sách nhà cung cấp TCF sẽ sử dụng quy cách kỹ thuật về Sự đồng ý bổ sung của Google để thu thập sự đồng ý. Google công bố danh sách các nhà cung cấp công nghệ quảng cáo chưa đăng ký với IAB và mã của các nhà cung cấp này tại địa chỉ sau: https://storage.googleapis.com/tcfac/additional-consent-providers.csv.
Để gỡ lỗi một yêu cầu quảng cáo riêng lẻ, hãy sử dụng tính năng Gỡ lỗi đơn vị quảng cáo nâng cao trong công cụ kiểm tra quảng cáo để xuất chuỗi yêu cầu quảng cáo. Sau đó, hãy tìm các tham số truy vấn sau:
Thông số truy vấn Ý nghĩa gdpr
Liệu GDPR có áp dụng cho yêu cầu quảng cáo này hay không. gdpr_consent
Chuỗi về sự minh bạch và sự đồng ý. IAB cung cấp một công cụ web để bạn có thể giải mã giá trị theo cách thủ công. addtl_consent
Chuỗi AC trong Quy cách kỹ thuật về Chế độ đồng ý bổ sung của Google. Để đọc lựa chọn đồng ý theo phương thức lập trình, hãy xem phần Cách đọc lựa chọn đồng ý để biết thêm thông tin.
- Tôi có cần sử dụng SDK UMP của Google để đáp ứng yêu cầu về CMP không?
Không, bạn có thể sử dụng bất kỳ CMP nào trong Danh sách CMP được Google chứng nhận để phân phát quảng cáo.
- Làm cách nào để hiển thị lại biểu mẫu yêu cầu sự đồng ý bằng SDK UMP ngay cả khi người dùng đã đồng ý?
Nếu người dùng đã đưa ra quyết định đồng ý, thì giải pháp quản lý sự đồng ý của Google sẽ không yêu cầu thu thập sự đồng ý mới cho đến khi chuỗi TC hết hạn hoặc không hợp lệ.
GDPR yêu cầu sửa đổi nội dung về sự đồng ý để cho phép người dùng rút lại lựa chọn đồng ý bất cứ lúc nào. Hãy xem các lựa chọn về quyền riêng tư để triển khai cách người dùng rút lại lựa chọn đồng ý. Để hiển thị lại biểu mẫu đồng ý, hãy gọi
showPrivacyOptionsForm()
.- Tôi đã tích hợp một CMP được Google chứng nhận, nhưng tôi không thấy có yêu cầu quảng cáo nào được gửi đến các đối tác dàn xếp, ngay cả từ những người dùng đã đồng ý. Tại sao lại có sự thay đổi này?
Theo TCF, Google sẽ kiểm tra để đảm bảo rằng các nhà cung cấp công nghệ quảng cáo và các nguồn nhu cầu có lập trình khác không vi phạm chính sách của Google, đồng thời có ít nhất một cơ sở pháp lý để xử lý dữ liệu trước khi đưa dữ liệu này vào quy trình dàn xếp kiểu thác nước. Hãy chuyển đến phần giải pháp dàn xếp để biết thêm thông tin.
Một số đối tác dàn xếp trong danh sách Nhà cung cấp công nghệ quảng cáo (ATP) của Google chưa đăng ký trong danh sách nhà cung cấp TCF. Thay vào đó, các đối tác này sử dụng quy cách kỹ thuật về Chế độ đồng ý bổ sung của Google để thu thập sự đồng ý. Google công bố danh sách các nhà cung cấp công nghệ quảng cáo chưa đăng ký với IAB và mã của các nhà cung cấp này tại địa chỉ sau: https://storage.googleapis.com/tcfac/additional-consent-providers.csv
SDK UMP hỗ trợ lưu trữ ACString, cho phép bạn Thêm đối tác quảng cáo vào thông báo GDPR đã xuất bản mà không cần biết liệu các đối tác có được đăng ký theo TCF hay không. Khi sử dụng CMP của bên thứ ba, bạn nên làm như sau:
- Xác nhận rằng CMP của bên thứ ba hỗ trợ việc lưu trữ ACString.
- Đưa từng đối tác dàn xếp vào danh sách nhà cung cấp công nghệ quảng cáo mà CMP bên thứ ba sử dụng để thu thập sự đồng ý.
- Tôi có thể thay đổi cách ứng dụng của mình hoạt động nếu người dùng không đồng ý không? Chính sách có cho phép việc này không?
Nhà xuất bản có thể đọc chuỗi TCF của IAB trong ứng dụng của họ. Hãy xem bài viết Cách đọc lựa chọn đồng ý để biết thông tin về cách đọc lựa chọn đồng ý theo phương thức lập trình. Nhà xuất bản nên tham khảo ý kiến của cố vấn pháp lý để xem xét các nghĩa vụ của mình theo các quy định có liên quan.
- Khi chọn Quản lý các lựa chọn và đồng ý với tất cả mục đích, tôi không thấy quảng cáo nào? Tại sao lại có sự thay đổi này?
Ngoài việc thu thập sự đồng ý về mục đích thu thập, bạn cũng cần thu thập sự đồng ý của nhà cung cấp. Mọi nhà cung cấp, chẳng hạn như Google, đều phải có cả sự đồng ý về mục đích và sự đồng ý của nhà cung cấp để phân phát quảng cáo phù hợp.
- Làm cách nào để triển khai Chuỗi sự đồng ý bổ sung phiên bản 2 cho những người dùng đã đồng ý với phiên bản 1?
Kiểm tra khoá
IABTCF_AddtlConsent
trong bộ nhớ cục bộ theo Chỉ dẫn kỹ thuật về Chế độ đồng ý bổ sung của Google để xác định xem người dùng đã đồng ý với Chuỗi AC phiên bản 2 hay chưa và liệu bạn có cần hiển thị lại biểu mẫu đồng ý hay không.Java
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context); // Example value: "2~1.35.41.101~dv.9.21.81" String additionalConsent = sharedPref.getString("IABTCF_AddtlConsent", ""); // Index 0 contains information about the specification version number. if (!additionalConsent.isEmpty()) { String specACVersion = additionalConsent.charAt(0); boolean isACVersion2 = purposeOneString.equals("2"); }
Kotlin
val sharedPref = PreferenceManager.getDefaultSharedPreferences(context) // Example value: "2~1.35.41.101~dv.9.21.81" val additionalConsent = sharedPref.getString("IABTCF_AddtlConsent", "") // Index 0 contains information about the specification version number. if (!additionalConsent.isEmpty()) { val specACVersion = additionalConsent.first() val isACVersion2 = specACVersion == "2" }