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 Wpływ wymagań IAB na wiadomości z prośbą o zgodę na wykorzystanie danych (zgodnie z wytycznymi UE).

Wstęp

Pakiet UMP SDK daje wydawcom narzędzia do zgłaszania próśb o zgodę na wyświetlanie reklam spersonalizowanych oraz obsługę wymagań App Tracking Transparency (ATT) stosowanych przez firmę Apple. Wydawcy mogą wykorzystać pakiet UMP SDK do realizacji jednego lub obu tych żądań za pomocą jednego formularza, ponieważ cała konfiguracja odbywa się na stronieprywatności i powiadomień 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 wykorzystywanie danych osobowych (takich jak 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łnianiu obowiązków wynikających z tej zasady, Google oferuje pakiet SDK platformy do personalizowania wiadomości wyświetlanych użytkownikom (UMP), który zastępuje poprzedni pakiet Consent SDK dostępny na licencji open source. Zaktualizowaliśmy pakiet UMP SDK, aby obsługiwał najnowsze standardy IAB. Uprościliśmy też proces konfigurowania formularzy z prośbą o zgodę na wykorzystanie danych oraz tworzenia list partnerów reklamowych. Wszystkie z tych konfiguracji można teraz wygodnie obsługiwać w prywatności i komunikacji AdMob.

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

Importowanie pakietu SDK

CocoaPods (preferowane)

Pakiet UMP SDK jest uwzględnione w zależności od poda pakietu SDK do reklam mobilnych Google w wersji od 7.64.0.

Najprostszym sposobem zaimportowania pakietu SDK do projektu na iOS jest użycie CocoaPods. Otwórz projekt w Podfile i dodaj ten wiersz do celu aplikacji:

pod 'Google-Mobile-Ads-SDK'

Następnie z poziomu wiersza poleceń:

pod install --repo-update

Jeśli dopiero zaczynasz korzystać z CocoaPods, w oficjalnej dokumentacji znajdziesz informacje o tym, jak utworzyć i wykorzystać pliki Podfile.

Pobieranie ręczne

Pobierz pakiet SDK

Następnie przeciągnij platformę do projektu Xcode, pamiętając o wybraniu opcji Kopiuj elementy w razie potrzeby.

W każdym z nich możesz dodać platformę:

Swift

import UserMessagingPlatform

Objective-C

#include <UserMessagingPlatform/UserMessagingPlatform.h>

Zaktualizuj plik Info.plist

Dodaj identyfikator aplikacji do: Info.plist

Aby uzyskać identyfikator aplikacji, wykonaj instrukcje opisane 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ń App Tracking Transparency firmy Apple, upewnij się, że wiadomość ATT została utworzona, skonfigurowana i opublikowana za pomocą atrybutuPrywatność w AdMob.

Aby pakiet UMP SDK mógł wyświetlać niestandardowy alert tworzenia, zaktualizuj klucz Info.plist, dodając klucz NSUserTrackingUsageDescription zawierający niestandardowy ciąg wiadomości z opisem użycia.

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

Opis użycia pojawia się w oknie ATT, gdy prezentujesz formularz zgody:

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

Podczas testu pamiętaj, że zgodnie z wymaganiami Apple identyfikator ATT pojawia się tylko raz, ponieważ zdarzenie requestTrackingAuthorization: jest żądaniem jednorazowym. Aby ponownie wyświetlić alert, musisz odinstalować aplikację i zainstalować ją ponownie na urządzeniu testowym.

Korzystanie z pakietu SDK

Pakiet SDK został zaprojektowany z myślą o liniowości. Aby z niego skorzystać:

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

Zalecamy żądanie aktualizacji informacji o zgodzie przy każdym uruchomieniu aplikacji. Określa, czy użytkownik musi wyrazić zgodę.

Tę metodę należy wywoływać tylko z głównego wątku.

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 załadować formularz po każdym uruchomieniu aplikacji przez użytkownika, 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 użytkowników tworzy się w AdMobinterfejsie. Gdy ustalisz, że poprosisz użytkownika o zgodę, 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 śledzenie śledzenia reklam.
  • Otagowano użytkownika jako niepełnoletni.

Aby sprawdzić, czy formularz jest dostępny, użyj właściwości formStatus w polu UMPConsentInformation, która zwraca wyliczenie typu UMPFormStatus. W polu UMPFormStatus mogą być dostępne 3 wartości:

  • UMPFormStatusUnknown: stan formularza nieznany. W takim przypadku użyj wywołania requestConsentInfoUpdateWithParameters:completionHandler:.
  • UMPFormStatusAvailable: formularz zgody jest dostępny i można go wczytać.
  • UMPFormStatusUnavailable: formularz zgody jest niedostępny.

Dodaj metodę kodu, która będzie służyć do wczytywania formularza:

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. Tę metodę można wywołać tylko z głównego wątku. 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 przedstawieniem formularza musisz określić, czy użytkownik potrzebuje zgody użytkownika na wykorzystanie danych. Aby sprawdzić, czy wymagana jest zgoda użytkownika, przeanalizuj właściwość consentStatus obiektu UMPConsentInformation, która zwraca wyliczenie typu UMPConsentStatus. W polu UMPConsentStatus mogą być dostępne 4 wartości:

  • UMPConsentStatusUnknown: nieznany stan zgody.
  • UMPConsentStatusRequired: wymagana, ale jeszcze nie uzyskana zgoda użytkownika.
  • UMPConsentStatusNotRequired: zgoda użytkownika nie jest wymagana. Na przykład użytkownik nie znajduje się w EOG ani w Wielkiej Brytanii.
  • UMPConsentStatusObtained: uzyskanie zgody użytkownika. Nie określono personalizacji.

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ć odniesienie do formularza, aby użytkownik mógł zmienić swój stan zgody.

Testowanie

Wymuszanie lokalizacji geograficznej

Pakiet UMP SDK zapewnia prosty sposób testowania działania aplikacji, jak gdyby urządzenie użytkownika znajdowało się w Europejskim Obszarze Gospodarczym lub Wielkiej Brytanii przy użyciu właściwości debugGeography typu UMPDebugGeography w UMPDebugSettings.

Aby skorzystać z funkcji debugowania, musisz podać zaszyfrowany identyfikator urządzenia testowego w ustawieniach debugowania aplikacji. Jeśli wywołasz requestConsentInfoUpdateWithParameters bez ustawienia tej wartości, aplikacja będzie rejestrować wymagany identyfikator.

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ć pakiet SDK tak, jakby nie był on w Europejskim Obszarze Gospodarczym ani Wielkiej Brytanii, użyj UMPDebugGeographyNotEEA. Ustawienia debugowania działają tylko na urządzeniach testowych. Nie trzeba dodawać emulatorów do listy identyfikatorów urządzeń, ponieważ testy są domyślnie włączone.

Podczas testowania aplikacji za pomocą pakietu SDK UMP może Ci się przydać to, aby zresetować stan pakietu SDK i symulować przebieg pierwszego instalacji aplikacji przez użytkownika. W tym celu pakiet SDK udostępnia metodę reset.

Swift

UMPConsentInformation.sharedInstance.reset()

Objective-C

[UMPConsentInformation.sharedInstance reset];

Jeśli chcesz całkowicie usunąć pakiet UMP SDK z projektu, musisz wywoływać resetowanie.

Opóźniaj pomiar danych w aplikacjach (opcjonalnie)

Domyślnie pakiet SDK do reklam mobilnych Google inicjuje pomiar aplikacji i wysyła dane o zdarzeniach na poziomie użytkownika od razu 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, zanim możliwe będzie wysyłanie 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 danych w aplikacji, dodaj klucz GADDelayAppMeasurementInit z wartością logiczną YES do Info.plist. Tę zmianę możesz wprowadzić automatycznie:

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

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

Mediacja

Jeśli korzystasz z zapośredniczenia, musisz w zależności od platformy zgody wybranej w swojej aplikacji obsługiwać zgodę użytkowników w zależności od platformy do zapośredniczenia. Google obsługuje zasady uzyskiwania zgody opracowane przez organizację IAB, ale masz też własne rozwiązanie do uzyskiwania zgód. Poniżej znajdziesz szczegółowe informacje o tym, jak obsługiwać zapośredniczenie w każdej z tych opcji. Więcej informacji o naszym rozwiązaniu do uzyskiwania zgody

Ani pakiet UMP SDK, ani pakiet SDK do reklam mobilnych nie przekazuje informacji o zgodzie do partnerów zapośredniczenia. W przypadku korzystania z tego rozwiązania pakiet UMP SDK zapisuje informacje o stanie zgody użytkownika w pamięci lokalnej i odpowiada za czytanie odpowiednich kluczy przez każdego partnera zapośredniczenia. Sprawdź, czy dana sieć zewnętrzna obsługuje rozwiązanie IAB.

Jeśli używasz niestandardowego rozwiązania do uzyskiwania zgody, musisz poinformować te pakiety SDK o stanie zgody użytkownika. Szczegółowe informacje o tym, jak przekazywać informacje z prośbą o zgodę na wykorzystanie danych osobom trzecim, znajdziesz w przewodniku po integracji dla 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.