Yêu cầu sự đồng ý của người dùng ở Châu Âu

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

Hoàn thành các bước Bắt đầu với phiên bản 1.3.0 của trình bổ trợ GMA Flutter. Phiên bản này hỗ trợ SDK Nền tảng thông báo cho người dùng.

Hãy đọc 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.

Giới thiệu

SDK UMP cung cấp cho nhà xuất bản các công cụ để yêu cầu sự đồng ý đối với quảng cáo được cá nhân hoá, cũng như để xử lý các yêu cầu về Minh bạch về việc theo dõi ứng dụng (App Tracking Transparency, viết tắt là ATT) của Apple. Nhà xuất bản có thể sử dụng UMP SDK để xử lý một hoặc cả hai yêu cầu này bằng cách hiển thị một biểu mẫu duy nhất, vì tất cả cấu hình đều diễn ra trong Quyền riêng tư và thông báo của Ad Manager.

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 đưa ra một số thông tin công bố nhất định cho người dùng của mình ở Khu vực kinh tế Châu Âu (EEA) cùng với Vương quốc Anh và 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 (nếu pháp luật yêu cầu) và để sử dụng dữ liệu cá nhân (chẳng hạn như mã nhận dạng cho quảng cáo (AdID)) để 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).

Để giúp các nhà xuất bản đáp ứng các nghĩa vụ của họ theo chính sách này, Google cung cấp SDK Nền tảng thông báo cho người dùng (UMP). UMP SDK đã được cập nhật để hỗ trợ các tiêu chuẩn mới nhất của IAB. Chúng tôi cũng đã đơn giản hoá quy trình thiết lập biểu mẫu đồng ý và liệt kê các đối tác quảng cáo. Giờ đây, bạn có thể xử lý thuận tiện tất cả các cấu hình này trong Quyền riêng tư và thông báo của Ad Manager.

Hướng dẫn này sẽ chỉ cho bạn cách cài đặt SDK, triển khai các giải pháp IAB và bật các tính năng thử nghiệm.

Minh bạch về việc theo dõi ứng dụng (chỉ iOS)

Nếu bạn dự định sử dụng UMP SDK để xử lý các yêu cầu về Minh bạch về việc theo dõi ứng dụng của Apple, hãy đảm bảo rằng bạn đã tạo, định cấu hình và xuất bản thông báo ATT bằng cách sử dụng Quyền riêng tư và thông báo của Ad Manager.

Để SDK UMP hiển thị thông báo cảnh báo tuỳ chỉnh, hãy cập nhật Info.plist để thêm khoá NSUserTrackingUsageDescription có chuỗi thông báo tuỳ chỉnh mô tả mức sử dụng của bạn.

<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>

Nội dung mô tả về việc sử dụng sẽ xuất hiện trong hộp thoại ATT khi bạn hiển thị biểu mẫu đồng ý:

Tiếp theo, bạn sẽ cần liên kết khung AppTrackingTransparency:

Trong khi thử nghiệm, hãy lưu ý rằng theo yêu cầu của Apple, hộp thoại ATT về IDFA sẽ chỉ xuất hiện một lần vì requestTrackingAuthorization: là yêu cầu một lần. Để cảnh báo xuất hiện lần thứ hai, bạn phải gỡ cài đặt rồi cài đặt lại ứng dụng trên thiết bị kiểm thử.

Sử dụng SDK

SDK được thiết kế để sử dụng theo kiểu tuyến tính. Các bước sử dụng SDK như sau:

  1. Yêu cầu thông tin mới nhất về sự đồng ý.
  2. Kiểm tra xem có bắt buộc phải có sự đồng ý hay không.
  3. Kiểm tra xem biểu mẫu có sẵn hay không và nếu có, hãy tải biểu mẫu.
  4. Hiển thị biểu mẫu.
  5. Cung cấp cho người dùng cách thay đổi sự đồng ý của họ.

Bạn nên yêu cầu cập nhật thông tin về sự đồng ý mỗi khi khởi chạy ứng dụng. Điều này sẽ xác định xem người dùng có cần đồng ý hay không.

final params = ConsentRequestParameters();
ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () async {
    // The consent information state was updated.
    // You are now ready to check if a form is available.
  },
  (FormError error) {
    // Handle the error
  },
);

Tải một biểu mẫu (nếu có)

Các biểu mẫu để lấy sự đồng ý được tạo trong giao diện người dùng Ad Manager. Sau khi bạn xác định rằng bạn sẽ yêu cầu người dùng đồng ý, bước tiếp theo là xác định xem có biểu mẫu nào không. Có nhiều lý do khiến biểu mẫu có thể không sử dụng được, chẳng hạn như:

  • Người dùng đã bật tính năng theo dõi quảng cáo giới hạn.
  • Bạn đã gắn thẻ người dùng là dưới độ tuổi hợp pháp để tự quản lý tài khoản.

Để kiểm tra xem có biểu mẫu nào không, hãy sử dụng phương thức isConsentFormAvailable() trên thực thể ConsentInformation. Thêm phương thức bao bọc để tải biểu mẫu:

final params = ConsentRequestParameters();
ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () async {
    if (await ConsentInformation.instance.isConsentFormAvailable()) {
      loadForm();
    }
  },
  (FormError error) {
    // Handle the error
  },
);

Để tải biểu mẫu, bạn sẽ sử dụng phương thức loadConsentForm() tĩnh cho lớp ConsentForm. Thay đổi phương thức loadForm() của bạn như sau:

void loadForm() {
  ConsentForm.loadConsentForm(
    (ConsentForm consentForm) async {
      // Present the form
    },
    (FormError formError) {
      // Handle the error
    },
  );
}

Hiển thị biểu mẫu (nếu bắt buộc)

Để hiển thị biểu mẫu đồng ý, hãy sử dụng phương thức show() trên lớp ConsentForm. Bạn phải xác định xem người dùng có cần sự đồng ý trước khi hiển thị biểu mẫu hay không. Để kiểm tra xem có cần sự đồng ý hay không, hãy gọi getConsentStatus() trên đối tượng ConsentInformation. Đối tượng này sẽ trả về một enum thuộc loại ConsentStatus. Có thể có 4 giá trị cho ConsentStatus:

  • unknown: Trạng thái đồng ý không xác định.
  • required: Cần có sự đồng ý của người dùng nhưng chưa được thu thập.
  • notRequired: Không bắt buộc phải có sự đồng ý của người dùng. Ví dụ: người dùng không ở Khu vực kinh tế Châu Âu (EEA) hoặc Vương quốc Anh.
  • obtained: Đã nhận được sự đồng ý của người dùng. Chưa xác định chế độ cá nhân hoá.

Thay đổi phương thức loadForm của bạn như sau:

void loadForm() {
  ConsentForm.loadConsentForm(
    (ConsentForm consentForm) async {
      var status = await ConsentInformation.instance.getConsentStatus();
      if (status == ConsentStatus.required) {
        consentForm.show(
          (FormError formError) {
            // Handle dismissal by reloading form
            loadForm();
          },
        );
      }
    },
    (formError) {
      // Handle the error
    },
  );
}

Nếu không bắt buộc phải có sự đồng ý, bạn có thể duy trì tham chiếu đến biểu mẫu để người dùng có thể thay đổi trạng thái đồng ý của họ.

Kiểm thử

Chỉ định một vị trí địa lý

SDK UMP cung cấp một cách để kiểm thử hành vi của ứng dụng như thể thiết bị được đặt ở Khu vực kinh tế Châu Âu (EEA) bằng cách sử dụng ConsentDebugSettings.debugGeography.

Bạn sẽ cần cung cấp mã nhận dạng đã băm của thiết bị thử nghiệm trong chế độ cài đặt gỡ lỗi của ứng dụng để sử dụng chức năng gỡ lỗi. Nếu bạn gọi requestConsentInfoUpdate() mà không đặt giá trị này, ứng dụng sẽ ghi lại hàm băm của mã nhận dạng cần thiết khi chạy.

ConsentDebugSettings debugSettings = ConsentDebugSettings(
  debugGeography: DebugGeography.debugGeographyEea,
  testIdentifiers: ['TEST-DEVICE-HASHED-ID']);

ConsentRequestParameters params = ConsentRequestParameters(
  consentDebugSettings: debugSettings);

ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () {},
  (error) {});

Để buộc SDK xử lý thiết bị như thể thiết bị không nằm trong Khu vực kinh tế Châu Âu (EEA) hoặc Vương quốc Anh, hãy sử dụng DebugGeography.debugGeographyNotEea. Xin lưu ý rằng các chế độ cài đặt gỡ lỗi chỉ hoạt động trên thiết bị thử nghiệm. Bạn không cần thêm trình mô phỏng vào danh sách mã thiết bị vì chúng được bật tính năng kiểm thử theo mặc định.

Khi kiểm thử ứng dụng bằng UMP SDK, bạn nên đặt lại trạng thái của SDK để có thể mô phỏng trải nghiệm cài đặt lần đầu của người dùng. SDK cung cấp phương thức reset để thực hiện việc này.

ConsentInformation.instance.reset();

Bạn cũng nên gọi lệnh đặt lại nếu quyết định xoá hoàn toàn SDK UMP khỏi dự án của mình.

Dàn xếp

Nếu sử dụng tính năng dàn xếp, bạn sẽ cần xử lý sự đồng ý cho các đối tác dàn xếp theo những cách khác nhau dựa trên khuôn khổ về sự đồng ý mà bạn chọn sử dụng trên ứng dụng của mình. Google hỗ trợ Khuôn khổ về sự đồng ý của IAB nhưng cũng cho phép bạn sử dụng giải pháp yêu cầu sự đồng ý tuỳ chỉnh của riêng mình. Dưới đây là thông tin chi tiết về cách xử lý hoạt động dàn xếp theo từng phương án. Tìm hiểu thêm về giải pháp yêu cầu sự đồng ý của chúng tôi.

Cả SDK UMP và SDK quảng cáo trên thiết bị di động đều không chuyển tiếp thông tin về sự đồng ý cho các đối tác dàn xếp. Thay vào đó, khi sử dụng giải pháp IAB, SDK UMP sẽ ghi thông tin trạng thái đồng ý vào bộ nhớ cục bộ và trách nhiệm của từng đối tác dàn xếp là đọc các khoá thích hợp. Hãy nhớ kiểm tra với từng mạng bên thứ ba để xác định xem họ có hỗ trợ giải pháp IAB hay không.

Nếu sử dụng một giải pháp yêu cầu sự đồng ý tuỳ chỉnh, thì bạn có trách nhiệm thông báo cho SDK bên thứ ba về trạng thái đồng ý của ứng dụng. Mỗi mạng dàn xếp đều có các API riêng để xử lý sự đồng ý, được ghi lại cho AndroidiOS.

Xem bài viết Sử dụng API dành riêng cho mạng để tìm hiểu cách gọi các API này từ Dart.

Hoạt động mặc định của SDK quảng cáo trên thiết bị di động của Google là phân phát quảng cáo được cá nhân hoá. Nếu người dùng đã đồng ý chỉ nhận quảng cáo không được cá nhân hoá, bạn có thể định cấu hình đối tượng AdManagerAdRequest bằng mã sau đây để xác định rằng chỉ nên yêu cầu quảng cáo không được cá nhân hoá:

final AdManagerAdRequest = AdManagerAdRequest(nonPersonalizedAds: true);

Chính sách về sự đồng ý của người dùng ở Liên minh Châu Âu của Google yêu cầu bạn thu thập sự đồng ý cho toàn bộ danh sách nhà cung cấp công nghệ quảng cáo được thiết lập cho mã nhà xuất bản của bạn trước khi hiển thị quảng cáo được cá nhân hoá, ngay cả khi bạn đang sử dụng giải pháp dàn xếp của bên thứ ba để gửi yêu cầu quảng cáo đến Google.