Prośba o zgodę europejskich użytkowników

Wymagania wstępne

Rozpocznij, korzystając z wersji 1.3.0 wtyczki GMA Flutter, która obsługuje pakiet SDK platformy do personalizowania wiadomości wyświetlanych użytkownikom.

Przeczytaj artykuł Jak wymagania IAB wpływają na wiadomości z prośbą o zgodę na wykorzystanie danych (zgodnie z wytycznymi UE).

Wstęp

Pakiet UMP SDK zapewnia wydawcom narzędzia do zgłaszania próśb o zgodę na wyświetlanie reklam spersonalizowanych oraz spełnia wymagania firmy Apple dotyczące App Tracking Transparency (ATT). Wydawcy mogą używać pakietu UMP SDK do obsługi jednego lub obu tych żądań, wyświetlając jeden formularz, ponieważ cała konfiguracja odbywa się na stronie AdMob „Prywatność i wyświetlanie wiadomości”.

Zgodnie z polityką Google w zakresie zgody użytkownika z UE musisz udzielać odpowiednich informacji użytkownikom z Europejskiego Obszaru Gospodarczego (EOG) i Wielkiej Brytanii oraz uzyskać ich zgodę na stosowanie plików cookie lub innych środków do lokalnego przechowywania danych, jeśli jest to wymagane prawnie. Musisz też uzyskać ich zgodę na wykorzystywanie danych osobowych (np. AdID) do wyświetlania reklam. Polityka ta odzwierciedla wymagania UE zawarte w dyrektywie o prywatności i łączności elektronicznej oraz w Ogólnym rozporządzeniu o ochronie danych (RODO).

Aby pomóc wydawcom w wypełnieniu obowiązków, jakie nakłada na nich ta polityka, Google oferuje pakiet SDK User Messaging Platform (UMP). Zaktualizowaliśmy pakiet UMP SDK, aby obsługiwał najnowsze standardy IAB. Uprościliśmy też proces konfigurowania formularzy zgody i wyświetlania informacji o partnerach reklamowych. Wszystkimi tymi konfiguracjami możesz teraz wygodnie obsługiwać na stronie Prywatność i wyświetlanie wiadomości w AdMob.

Ten przewodnik zawiera informacje o tym, jak zainstalować pakiet SDK, wdrożyć rozwiązania IAB i włączyć funkcje testowania.

App Tracking Transparency (tylko iOS)

Jeśli planujesz używać pakietu UMP SDK w celu spełniania wymagań firmy Apple dotyczących App Tracking Transparency, pamiętaj, aby utworzyć, skonfigurować i opublikować wiadomość ATT, korzystając z narzędzia AdMob Prywatność i wyświetlanie wiadomości.

Aby pakiet UMP SDK wyświetlał niestandardowy komunikat z alertem, zaktualizuj Info.plist i dodaj klucz NSUserTrackingUsageDescription z niestandardowym ciągiem tekstowym opisującym użycie.

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

Opis użycia pojawia się w oknie ATT po wyświetleniu formularza zgody:

Następnie musisz połączyć platformę AppTrackingTransparency:

Podczas testowania pamiętaj, że zgodnie z wymaganiami Apple okno ATT dotyczące identyfikatora IDFA wyświetla się tylko raz, ponieważ requestTrackingAuthorization: jest żądaniem jednorazowym. Aby alert pojawił się po raz drugi, musisz odinstalować i ponownie zainstalować aplikację na urządzeniu testowym.

Przy użyciu pakietu SDK

Pakiet SDK jest przeznaczony do użytku liniowo. Aby korzystać z pakietu SDK:

  1. Poproś o najnowsze informacje dotyczące zgody.
  2. Sprawdź, czy zgoda jest wymagana.
  3. Sprawdź, czy formularz jest dostępny, a jeśli tak, załaduj go.
  4. Zaprezentuj formularz.
  5. Zapewnij użytkownikom możliwość zmiany zgody.

Zalecamy aktualizowanie informacji dotyczących zgody przy każdym uruchomieniu aplikacji. Zależy to od tego, czy użytkownik będzie musiał wyrazić zgodę.

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
  },
);

Wczytaj formularz, jeśli jest dostępny

Formularze do uzyskania zgody tworzy się AdMob w interfejsie użytkownika. Gdy zdecydujesz, że będziesz prosić użytkownika o zgodę, następnym krokiem będzie określenie, czy formularz jest dostępny. Formularz może być niedostępny z różnych powodów, na przykład:

  • Użytkownik ma włączone ograniczenie śledzenia reklam.
  • Użytkownik został przez Ciebie oznaczony jako niepełnoletni.

Aby sprawdzić, czy formularz jest dostępny, użyj metody isConsentFormAvailable() w instancji ConsentInformation. Dodaj metodę wczytywania formularza:

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

Aby wczytać formularz, użyj statycznej metody loadConsentForm() w klasie ConsentForm. Zmień metodę loadForm() w ten sposób:

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

W razie potrzeby przedstaw formularz.

Aby wyświetlić formularz zgody, użyj metody show() w klasie ConsentForm. Musisz ustalić, czy użytkownik wymaga zgody przed wyświetleniem formularza. Aby sprawdzić, czy zgoda użytkownika jest wymagana, wywołaj w obiekcie ConsentInformation metodę getConsentStatus(), która zwraca wyliczenie typu ConsentStatus. Parametr ConsentStatus może mieć 4 wartości:

  • unknown: nieznany stan zgody.
  • required: wymagana jest zgoda użytkownika, ale jeszcze jej nie uzyskano.
  • notRequired: zgoda użytkownika nie jest wymagana. np. użytkownik nie znajduje się w Europejskim Obszarze Gospodarczym ani w Wielkiej Brytanii.
  • obtained: uzyskano zgodę użytkownika. Nie zdefiniowano personalizacji.

Zmień metodę loadForm w ten sposób:

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
    },
  );
}

Jeśli zgoda nie jest wymagana, możesz zachować odwołanie do formularza, tak aby użytkownik mógł zmienić stan zgody.

Testowanie

Wymuś ustawienie geograficzne

Pakiet UMP SDK umożliwia testowanie działania aplikacji tak, jakby urządzenie ConsentDebugSettings.debugGeography znajdowało się w Europejskim Obszarze Gospodarczym.

Aby korzystać z funkcji debugowania, musisz podać zaszyfrowany identyfikator urządzenia testowego w ustawieniach debugowania aplikacji. Jeśli wywołasz funkcję requestConsentInfoUpdate() bez ustawiania tej wartości, po uruchomieniu aplikacja zarejestruje wymagany hasz identyfikatora.

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

ConsentRequestParameters params = ConsentRequestParameters(
  consentDebugSettings: debugSettings);

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

Aby wymusić traktowanie urządzenia przez pakiet SDK tak, jakby nie znajdowało się w Europejskim Obszarze Gospodarczym ani w Wielkiej Brytanii, użyj polecenia DebugGeography.debugGeographyNotEea. Pamiętaj, że ustawienia debugowania działają tylko na urządzeniach testowych. Emulatorów nie trzeba dodawać do listy identyfikatorów urządzeń, ponieważ testowanie jest domyślnie włączone.

Podczas testowania aplikacji za pomocą pakietu UMP SDK warto zresetować stan tego pakietu, aby zasymulować pierwszą instalację przeprowadzaną przez użytkownika. Pakiet SDK udostępnia do tego metodę reset.

ConsentInformation.instance.reset();

Jeśli zdecydujesz się całkowicie usunąć pakiet UMP SDK z projektu, wywołaj też resetowanie.

Opóźnianie pomiaru aplikacji (opcjonalne)

Domyślnie pakiet SDK do reklam mobilnych Google inicjuje pomiar aplikacji i zaczyna wysyłać do Google dane o zdarzeniach na poziomie użytkownika natychmiast po uruchomieniu aplikacji. Dzięki temu możesz włączyć dane o użytkownikach AdMob bez wprowadzania dodatkowych zmian w kodzie.

Jeśli jednak przed wysłaniem tych zdarzeń Twoja aplikacja wymaga zgody użytkownika, możesz opóźnić pomiary dotyczące aplikacji, dopóki nie zainicjujesz pakietu SDK do reklam mobilnych lub wczytasz reklamę.

Aby opóźnić pomiar skuteczności aplikacji na Androidzie, dodaj do interfejsu AndroidManifest.xml ten tag <meta-data>.

<manifest>
     <application>
        <!-- Delay app measurement until MobileAds.initialize() is called. -->
        <meta-data
            android:name="com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT"
            android:value="true"/>
    </application>
</manifest>

Aby opóźnić pomiary aplikacji na iOS, dodaj do Info.plist aplikacji klucz GADDelayAppMeasurementInit z wartością logiczną YES. Tę zmianę można wprowadzić automatycznie:

<key>GADDelayAppMeasurementInit</key>
<true/>

Możesz też zmienić ją w edytorze listy właściwości:

Mediacja

Jeśli korzystasz z zapośredniczenia, to sposób uzyskiwania zgody na potrzeby Twoich partnerów zapośredniczenia zależy od wybranego sposobu uzyskiwania zgody w aplikacji. Google obsługuje zasady IAB dotyczące zgody na przetwarzanie danych, ale umożliwia Ci również korzystanie z własnego rozwiązania do uzyskiwania zgody użytkowników. Poniżej znajdziesz szczegółowe informacje o korzystaniu z zapośredniczenia w przypadku każdej z tych opcji. Więcej informacji o naszym rozwiązaniu do uzyskiwania zgody

Pakiet UMP SDK ani pakiet SDK do reklam mobilnych nie przekazuje informacji o zgodzie do partnerów zapośredniczenia. W przypadku korzystania z rozwiązania IAB pakiet SDK UMP zapisuje informacje o stanie zgody w pamięci lokalnej i odpowiedzialność za odczytanie odpowiednich kluczy spoczywa na pakiecie SDK każdego partnera zapośredniczenia. Sprawdź, czy poszczególne sieci zewnętrzne obsługują rozwiązanie IAB.

Jeśli korzystasz z niestandardowego rozwiązania do uzyskiwania zgody, Twoim obowiązkiem jest poinformowanie zewnętrznych pakietów SDK o stanie zgody aplikacji. Każda sieć zapośredniczeń ma własne interfejsy API do obsługi zgody na wykorzystanie danych, które są udokumentowane na Androida i iOS.

Informacje o tym, jak wywoływać te interfejsy API w Dart, znajdziesz w sekcji Używanie interfejsów API związanych z siecią.

Domyślnym działaniem pakietu SDK do reklam mobilnych Google jest wyświetlanie reklam spersonalizowanych. Jeśli użytkownik zgodził się na otrzymywanie tylko reklam niespersonalizowanych, możesz skonfigurować obiekt AdRequest za pomocą poniższego kodu, aby określić, że żądania mają być wysyłane tylko na reklamy niespersonalizowane:

final AdRequest = AdRequest(nonPersonalizedAds: true);

Zgodnie z polityką Google w zakresie zgody użytkownika z UE musisz uzyskiwać zgodę użytkowników na dostęp do pełnej listy dostawców technologii reklamowych skonfigurowanych pod kątem Twoich identyfikatorów wydawców przed wyświetleniem reklam spersonalizowanych, nawet jeśli używasz zewnętrznego rozwiązania zapośredniczenia do wysyłania żądań reklamy do Google.