Uzyskiwanie Zgody z Użytkownikiem Platformy Komunikacyjnej

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Wymagania wstępne

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

Wprowadzenie

Pakiet UMP SDK udostępnia wydawcom narzędzia, które umożliwiają im wysyłanie próśb o zgodę na reklamy spersonalizowane, a także spełnianie wymagań Apple dotyczących przejrzystości śledzenia aplikacji (ATT). Wydawcy mogą korzystać z pakietu UMP SDK do obsługi obu tych żądań, wyświetlając tylko jeden formularz, ponieważ cała konfiguracja odbywa się w sekcjiPrywatność i wyświetlanie wiadomości w AdMob.

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 wyświetlanie danych osobowych (takich jak AdID). 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 platformy do komunikacji użytkowników (UMP), który zastępuje poprzedni pakiet SDK typu open source. Zaktualizowaliśmy pakiet UMP SDK, aby był zgodny z najnowszymi standardami IAB. Uprościliśmy też proces konfigurowania formularzy uzyskiwania zgody na wykorzystanie danych oraz wyświetlania informacji o partnerach reklamowych. Wszystkie te konfiguracje można teraz wygodnie obsługiwać w sekcjiPrywatność i wyświetlanie wiadomości w AdMob.

Z tego przewodnika dowiesz się, jak zainstalować pakiet SDK, wdrożyć rozwiązania IAB i włączyć funkcje testowe.

Zaimportuj pakiet SDK

CocoaPods (preferowane)

Pakiet UMP SDK wchodzi w skład zależności pakietu SDK do reklam mobilnych Google od pakietu SDK do reklam mobilnych Google w wersji 7.64.0.

Najprostszym sposobem zaimportowania pakietu SDK do projektu iOS jest użycie CocoaPods. Otwórz plik Podfile projektu i dodaj ten wiersz do elementu docelowego aplikacji:

pod 'Google-Mobile-Ads-SDK'

Następnie z poziomu wiersza poleceń:

pod install --repo-update

Jeśli dopiero zaczynasz korzystać z CocoaPods, zapoznaj się z ich oficjalną dokumentacją, aby dowiedzieć się, jak tworzyć i używać podPodów.

Pobieranie ręczne

Pobieranie pakietu SDK

Następnie przeciągnij platformę do projektu Xcode i wybierz Kopiuj elementy w razie potrzeby.

Następnie możesz dodać platformę do dowolnego pliku za pomocą:

Swift

import UserMessagingPlatform

Objective-C

#include <UserMessagingPlatform/UserMessagingPlatform.h>

Zaktualizuj plik Info.plist

Dodaj identyfikator aplikacji do: Info.plist

Uzyskaj identyfikator aplikacji, postępując zgodnie z instrukcjami w Centrum pomocy.

Dodaj identyfikator aplikacji do: Info.plist

<key>GADApplicationIdentifier</key>
<string>YOUR-APP-ID</string>

Przejrzystość śledzenia aplikacji

Jeśli zamierzasz używać pakietu SDK UMP do obsługi wymagań Apple dotyczących funkcji App Tracking Transparency, dopilnuj, aby wiadomość ATT została utworzona, skonfigurowana i opublikowana w sekcjiPrywatność i wyświetlanie wiadomości AdMob.

Aby pakiet UMP SDK mógł wyświetlać niestandardowy alert, zaktualizuj klucz Info.plist, dodając do klucza NSUserTrackingUsageDescription niestandardowy ciąg komunikatu opisujący użycie.

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

Opis wykorzystania jest wyświetlany jako część okna ATT podczas prezentowania formularza zgody:

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

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

Korzystanie z pakietu SDK

Pakiet SDK jest zaprojektowany do używania w postaci liniowej. Aby korzystać z pakietu SDK:

  1. Poproś o najnowsze informacje o zgodzie.
  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 przesłanie prośby o zaktualizowanie informacji o zgodzie za każdym razem, gdy aplikacja jest uruchamiana. To zdecyduje, czy użytkownik musi wyrazić zgodę.

Ta metoda powinna być wywoływana tylko z poziomu wątku głównego.

Swift

// Create a UMPRequestParameters object.
let parameters = UMPRequestParameters()
// Set tag for under age of consent. Here false means users are not under age.
parameters.tagForUnderAgeOfConsent = false

// Request an update to the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
    with: parameters,
    completionHandler: { error in
      if error != nil {
        // Handle the error.
      } else {
        // The consent information state was updated.
        // You are now ready to check if a form is
        // available.
      }
    })

Objective-C

// Create a UMPRequestParameters object.
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
// Set tag for under age of consent. Here NO means users are not under age.
parameters.tagForUnderAgeOfConsent = NO;

// Request an update to the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error) {
                           if (error) {
                             // Handle the error.
                           } else {
                             // The consent information state was updated.
                             // You are now ready to check if a form is
                             // available.
                           }
                         }];

Wczytywanie formularza, jeśli jest dostępny

Najlepiej jest ładować formularz za każdym razem, gdy użytkownik uruchamia Twoją aplikację, nawet jeśli uznasz, że zgoda nie jest wymagana. Dzięki temu formularz będzie gotowy do wyświetlenia, jeśli użytkownik będzie chciał zmienić ustawienia zgody.

Formularze do uzyskiwania zgody są tworzone w interfejsie AdMob. Gdy już poprosisz o zgodę użytkownika, musisz określić, 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ł oznaczony tagiem jako osoby poniżej wieku świadomego wyrażenia zgody.

Aby sprawdzić, czy formularz jest dostępny, użyj właściwości formStatus w polu UMPConsentInformation, która zwraca wyliczenie typu UMPFormStatus. UMPFormStatus może mieć te wartości:

  • UMPFormStatusUnknown: stan formularza nieznany. W tym przypadku musisz wywołać requestConsentInfoUpdateWithParameters:completionHandler:.
  • UMPFormStatusAvailable: dostępny jest formularz zgody. Można go wczytać.
  • UMPFormStatusUnavailable: formularz zgody jest niedostępny.

Dodaj metodę kodu, aby wczytać formularz:

Swift

// Request an update to the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
    withParameters: parameters,
    completionHandler: { [self] error in

      // The consent information has updated.
      if error != nil {
        // Handle the error.
      } else {
        // The consent information state was updated.
        // You are now ready to see if a form is available.
        let formStatus = UMPConsentInformation.sharedInstance.formStatus
        if formStatus == UMPFormStatus.available {
          loadForm()
        }
      }
    })
...
func loadForm() {

}

Objective-C

// Request an update to the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError* _Nullable error) {

                           // The consent information has updated.
                           if (error) {
                             // Handle the error.
                           } else {
                             // The consent information state was updated.
                             // You are now ready to see if a form is available.
                             UMPFormStatus formStatus =
                                 UMPConsentInformation.sharedInstance
                                     .formStatus;
                             if (formStatus == UMPFormStatusAvailable) {
                               [self loadForm];
                             }
                           }
                         }];
...
- (void) loadForm {

}

Aby wczytać formularz, użyj statycznej metody loadWithCompletionHandler: w klasie UMPConsentForm. Ta metoda może być wywoływana tylko z poziomu wątku głównego. Zmień metodę loadForm w ten sposób:

Swift

func loadForm() {
  UMPConsentForm.load(
      withCompletionHandler: { form, loadError in
        if loadError != nil {
          // Handle the error
        } else {
          // Present the form
        }
      })
}

Objective-C

- (void)loadForm {
  [UMPConsentForm
      loadWithCompletionHandler:^(UMPConsentForm *form, NSError *loadError) {
        if (loadError) {
          // Handle the error
        } else {
          // Present the form
        }
      }];
}

W razie potrzeby pokaż formularz

Aby zaprezentować formularz zgody, użyj metody presentFromViewController:completionHandler: w klasie UMPConsentForm. Przed zaprezentowaniem formularza musisz określić, czy użytkownik wymaga zgody. Aby sprawdzić, czy wymagane jest uzyskanie zgody, zbadaj właściwość consentStatus obiektu UMPConsentInformation, która zwraca wyliczenie typu UMPConsentStatus. UMPConsentStatus może mieć te wartości:

  • UMPConsentStatusUnknown: nieznany stan zgody użytkownika.
  • UMPConsentStatusRequired: wymagana jest zgoda użytkownika, ale nie została jeszcze uzyskana.
  • UMPConsentStatusNotRequired: zgoda użytkownika nie jest wymagana. Na przykład użytkownik nie znajduje się w Europejskim Obszarze Gospodarczym ani w Wielkiej Brytanii.
  • UMPConsentStatusObtained: uzyskanie zgody użytkownika. Personalizacja nie została zdefiniowana.

Zmień metodę loadForm w ten sposób:

Swift

func loadForm() {
  UMPConsentForm.load(withCompletionHandler: { form, loadError in
    if loadError != nil {
      // Handle the error.
    } else {
      // Present the form. You can also hold on to the reference to present
      // later.
      if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.required {
        form?.present(
            from: self,
            completionHandler: { dismissError in
              if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.obtained {
                // App can start requesting ads.
              }

            })
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  })
}

Objective-C

- (void)loadForm {
  [UMPConsentForm loadWithCompletionHandler:^(UMPConsentForm *form,
                                              NSError *loadError) {
    if (loadError) {
      // Handle the error.
    } else {
      // Present the form. You can also hold on to the reference to present
      // later.
      if (UMPConsentInformation.sharedInstance.consentStatus ==
          UMPConsentStatusRequired) {
        [form
            presentFromViewController:self
                    completionHandler:^(NSError *_Nullable dismissError) {
                      if (UMPConsentInformation.sharedInstance.consentStatus ==
                          UMPConsentStatusObtained) {
                        // App can start requesting ads.
                      }

                    }];
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  }];
}

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

Testowanie

Wymuś położenie geograficzne

Pakiet SDK UMP umożliwia prosty sposób przetestowania działania aplikacji tak, jakby urządzenie znajdowało się w EOG lub Wielkiej Brytanii przy użyciu właściwości debugGeography typu UMPDebugGeography w UMPDebugSettings.

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

Swift

let parameters = UMPRequestParameters()
let debugSettings = UMPDebugSettings()
debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = UMPDebugGeography.EEA
parameters.debugSettings = debugSettings
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
    with: parameters,
    completionHandler: { error in
      ...
    })

Objective-C

UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
debugSettings.testDeviceIdentifiers = @[ @"TEST-DEVICE-HASHED-ID" ];
debugSettings.geography = UMPDebugGeographyEEA;
parameters.debugSettings = debugSettings;
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error){
                           ...
}];

Aby wymusić traktowanie urządzenia jako pakietu SDK poza EOG lub Wielką Brytanię, użyj UMPDebugGeographyNotEEA. Pamiętaj, że ustawienia debugowania działają tylko na urządzeniach testowych. Nie trzeba dodawać emulatorów do listy identyfikatorów urządzeń, ponieważ mają one włączone domyślnie testy.

Testowanie aplikacji za pomocą pakietu SDK UMP może okazać się przydatne do zresetowania stanu pakietu SDK, co zapewnia symulację pierwszego działania użytkownika. Pakiet SDK udostępnia w tym celu metodę reset.

Swift

UMPConsentInformation.sharedInstance.reset()

Objective-C

[UMPConsentInformation.sharedInstance reset];

Musisz też wywołać resetowanie, jeśli postanowisz całkowicie usunąć pakiet UMP SDK z projektu.

Opóźniony pomiar aplikacji (opcjonalnie)

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

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

Aby opóźnić pomiar aplikacji, dodaj klucz GADDelayAppMeasurementInit z wartością logiczną YES do Info.plist. Możesz automatycznie wprowadzić tę zmianę:

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

Możesz go też edytować w edytorze listy usług:

Mediacja

Jeśli korzystasz z zapośredniczenia, musisz dostosować sposób uzyskiwania zgody w imieniu partnerów zapośredniczenia na podstawie wybranych przez Ciebie zasad dotyczących uzyskiwania zgody w aplikacji. Google obsługuje zasady IAB dotyczące uzyskiwania zgody na przetwarzanie danych, ale możesz też mieć własne rozwiązanie do uzyskiwania zgody użytkownika. Poniżej znajdziesz szczegółowe informacje o tym, jak obsługiwać zapośredniczenie w przypadku każdej z tych opcji. Więcej informacji o naszym rozwiązaniu do uzyskiwania zgody użytkownika

Ani pakiet UMP SDK, ani pakiet SDK do reklam mobilnych nie przekazuje informacji o zgodzie do partnerów zapośredniczenia. Zamiast tego podczas korzystania z rozwiązania IAB pakiet UMP zapisuje informacje o stanie zgody w pamięci lokalnej i odpowiada za odczytanie odpowiednich kluczy każdemu partnerowi zapośredniczenia. Skontaktuj się z każdą siecią zewnętrzną, by ustalić, czy obsługuje ona rozwiązanie IAB.

Jeśli korzystasz z niestandardowego rozwiązania do uzyskiwania zgody użytkownika, musisz poinformować te pakiety SDK o stanie zgody innych firm. Szczegółowe informacje o przekazywaniu informacji o zgodzie odpowiednim osobom trzecim znajdziesz w przewodniku po integracji każdego partnera zapośredniczenia.

Kodu z tej sekcji możesz użyć w dowolnej wersji pakietu SDK do reklam mobilnych Google. Możesz go też użyć bez względu na to, czy pakiet do uzyskiwania zgody użytkownika został użyty do uzyskania zgody.

Domyślnym działaniem pakietu SDK do reklam mobilnych Google jest wyświetlanie reklam spersonalizowanych. Jeśli użytkownik wyraził zgodę na otrzymywanie tylko reklam niespersonalizowanych, możesz skonfigurować obiekt GADRequest, aby wskazać, że mają być wysyłane tylko reklamy niespersonalizowane. Ten kod powoduje wyświetlanie żądań reklam niespersonalizowanych niezależnie od tego, czy użytkownik znajduje się w EOG:

Swift

let request = GADRequest()
let extras = GADExtras()
extras.additionalParameters = ["npa": "1"]
request.register(extras)

Objective-C

GADRequest *request = [GADRequest request];
GADExtras *extras = [[GADExtras alloc] init];
extras.additionalParameters = @{@"npa": @"1"};
[request registerAdNetworkExtras:extras];

Jeśli żądanie dotyczy reklam niespersonalizowanych, adres URL żądania reklamy obejmuje obecnie właściwość &npa=1. Pamiętaj jednak, że jest to wewnętrzny szczegół implementacji pakietu SDK do reklam mobilnych Google i może on ulec zmianie.