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

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

Zgodnie z polityką Google w zakresie zgody użytkownika z UE musisz udzielać odpowiednich informacji użytkownikom z Europejskiego Obszaru Gospodarczego (EOG) 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 do uzyskiwania zgody użytkowników na wykorzystanie danych. SDK do uzyskiwania zgody użytkownika to biblioteka open source, która udostępnia funkcje związane z zbieraniem zgody od użytkowników. Pełny kod źródłowy jest dostępny w usłudzeGitHub.

Reklamy wyświetlane przez Google mogą być klasyfikowane jako spersonalizowane lub niespersonalizowane. Obie te kategorie wymagają zgody użytkowników z EOG. Domyślnie żądania reklam wysyłane do Google powodują wyświetlenie reklam spersonalizowanych, które są wybierane na podstawie zebranych wcześniej danych użytkownika. Google obsługuje też konfigurowanie żądań reklam pod kątem wyświetlania reklam niespersonalizowanych. Więcej informacji o reklamach spersonalizowanych i niespersonalizowanych

Z tego przewodnika dowiesz się, jak używać pakietu SDK do uzyskiwania zgody użytkowników na wykorzystanie danych, aby uzyskać zgodę użytkowników. oraz jak przekazywać zgodę na pakiet SDK do reklam mobilnych Google po uzyskaniu zgody użytkownika.

Wymagania wstępne

CocoaPods (preferowane)

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 'PersonalizedAdConsent'

Następnie z poziomu wiersza poleceń:

pod install --repo-update

Jeśli dopiero zaczynasz korzystać z CocoaPods, zajrzyj do ich oficjalnej dokumentacji, aby dowiedzieć się, jak tworzyć i używać podPodów.

Pobieranie ręczne

Możesz też pobrać lub skopiować źródło SDK bezpośrednio i wykonać te instrukcje, aby uwzględnić go w projekcie:

  1. Z wyszukiwarki przeciągnij plik PersonalizedAdConsent.xcodeproj do swojego projektu.

  2. Otwórz kartę Etapy kompilacji. W sekcji Zależności docelowe kliknij przycisk + i dodaj cel Spersonalizowanereklamy.

  3. Kliknij projekt prawym przyciskiem myszy i wybierz Dodaj pliki do projektu „Mój projekt”. Otwórz PersonalizedAdConsent.bundle. Zaznacz Utwórz odwołania do folderów.

    Gdy to zrobisz, PersonalizedAdConsent.bundle będzie widoczny na karcie Etapy kompilacji w sekcji Kopiuj zasoby pakietu.

Zanim skorzystasz z innych metod pakietu SDK do uzyskiwania zgody użytkowników, musisz zaktualizować stan zgody użytkownika, aby mieć pewność, że zawiera on najnowsze informacje o dostawcach technologii reklamowych wybranych przez Ciebie wAdMob interfejsie użytkownika. Jeśli od ostatniej zgody użytkownika lista dostawców technologii reklamowych uległa zmianie, stan zgody zmieni się na nieznany.

Jeśli nie używasz zapośredniczenia

Jeśli nie korzystasz z zapośredniczenia, do uzyskiwania zgody użytkowników możesz wdrożyć pakiet SDK na 2 sposoby.

Możesz na przykład skorzystać z pakietu SDK do uzyskiwania zgody użytkowników, aby zaprezentować użytkownikom formularz zgody renderowany przez Google. Formularz zgody wyświetla listę dostawców technologii reklamowych wybranych przez Ciebie w interfejsie. AdMobPakiet SDK do uzyskiwania zgody użytkownika przechowuje odpowiedź użytkownika.

Innym sposobem jest użycie pakietu SDK do uzyskiwania zgody użytkownika dynamicznie do pobierania pełnej listy dostawców technologii reklamowych z usługi AdMobzgodnie z opisem w artykule z prośbą o zgodę na wykorzystanie danych zarządzanym przez wydawcę. W takim przypadku musisz jednak określić sposób udostępniania listy dostawców użytkownikom i przedstawić im własny formularz zgody.

Gdy użytkownik dokona wyboru związanego z wyrażeniem zgody, możesz poprosić go o przechowywanie wyboru w sposób opisany w artykule Przechowywanie zgody zarządzanej przez wydawcę.

Jeśli użytkownik wyraził zgodę na wyświetlanie tylko reklam niespersonalizowanych, musisz przekazać zgodę na pakiet SDK do reklam mobilnych Google.

Jeśli korzystasz AdMob z zapośredniczenia

Aby dynamicznie pobierać pełną listę dostawców technologii reklamowych z usługi AdMob, możesz użyć pakietu SDK do uzyskiwania zgody użytkownika zgodnie z instrukcjami dotyczącymi zbierania zgód zarządzanych przez wydawcę. Musisz określić, którzy dostawcy technologii reklamowych z innych sieci reklamowych muszą uzyskać zgodę użytkowników.

Deweloperzy aplikacji muszą uzyskać zgodę użytkowników tych dostawców technologii reklamowych, którzy otrzymali pakiet SDK do uzyskiwania zgody na przetwarzanie danych, oraz dostawców z innych sieci reklamowych. Musisz też ręcznie zapisywać odpowiedzi użytkowników na wykorzystanie danych i przekazywać zgodę na pakiet SDK do reklam mobilnych Google, jeśli użytkownik zgodził się na otrzymywanie tylko reklam niespersonalizowanych.

Google nie jest obecnie w stanie uzyskać ani obsługiwać zgody w przypadku sieci zapośredniczeń, dlatego musisz oddzielnie uzyskać zgodę i zmienić ją w przypadku każdej sieci reklamowej. Szczegóły implementacji znajdziesz w przewodniku po integracji każdego partnera zapośredniczenia.

Zaktualizuj stan zgody

Jeśli używasz pakietu SDK do uzyskiwania zgody, zalecamy określenie stanu zgody użytkownika przy każdym uruchomieniu aplikacji. Aby to zrobić, wywołaj metodę requestConsentInfoUpdateForPublisherIdentifiers:completionHandler: w instancji PACConsentInformation.

Swift

import PersonalizedAdConsent
...
class ViewController: UIViewController {

  override func viewDidLoad() {
    super.viewDidLoad()
    PACConsentInformation.sharedInstance.
    requestConsentInfoUpdate(
    forPublisherIdentifiers: ["pub-0123456789012345"])
    {(_ error: Error?) -> Void in
      if let error = error {
        // Consent info update failed.
      } else {
        // Consent info update succeeded. The shared PACConsentInformation
        // instance has been updated.
      }
    }
  }

Objective-C

#import <PersonalizedAdConsent/PersonalizedAdConsent.h>
...
@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  [PACConsentInformation.sharedInstance
      requestConsentInfoUpdateForPublisherIdentifiers:@[ @"pub-0123456789012345" ]
          completionHandler:^(NSError *_Nullable error) {
            if (error) {
              // Consent info update failed.
            } else {
              // Consent info update succeeded. The shared PACConsentInformation
              // instance has been updated.
            }
          }];
}

Wywołanie requestConsentInfoUpdateForPublisherIdentifiers:completionHandler: wymaga 2 argumentów:

  • Tablica prawidłowych, w pełni aktywnych identyfikatorów wydawców, z których aplikacja żąda reklam. Znajdź swój identyfikator wydawcy.

  • Blok, który akceptuje NSError jako parametr wejściowy, który dostarcza informacje o nieudanej prośbie o aktualizację zgody.

Jeśli informacje o zgodzie zostaną zaktualizowane, PACConsentInformation.sharedInstance.consentStatus zmieni stan zgody. Może zawierać wartości wymienione poniżej:

Stan zgody użytkownika Definicja
PACConsentStatusPersonalized użytkownik wyraził zgodę na wyświetlanie reklam spersonalizowanych.
PACConsentStatusNonPersonalized użytkownik wyraził zgodę na reklamy niespersonalizowane.
PACConsentStatusUnknown użytkownik nie wyraził zgody na reklamy spersonalizowane ani niespersonalizowane.

Po zaktualizowaniu informacji o zgodzie możesz też sprawdzić w PACConsentInformation.sharedInstance.requestLocationInEEAOrUnknown, czy użytkownik znajduje się w Europejskim Obszarze Gospodarczym, czy lokalizacja prośby jest nieznana.

Jeśli właściwość requestLocationInEEAOrUnknown ma wartość NO, użytkownik nie znajduje się w Europejskim Obszarze Gospodarczym, a zgodnie z polityką w zakresie zgody użytkownika z UE nie jest wymagana zgoda użytkownika. Żądania reklam możesz wysyłać do pakietu SDK do reklam mobilnych Google.

Jeśli właściwość requestLocationInEEAOrUnknown ma wartość YES:

  • Jeśli PACConsentStatus to PACConsentStatusPersonalized lub PACConsentStatusNonPersonalized, użytkownik wyraził już zgodę. Teraz możesz przekazywać zgodę na pakiet SDK do reklam mobilnych Google.

  • Jeśli użytkownik wyraził zgodę na wykorzystanie danych w ramach PACConsentStatusUnknown, zapoznaj się z sekcją Uzyskiwanie zgody poniżej, która zawiera opis metod uzyskiwania zgody użytkowników za pomocą narzędzi.

Pakiet SDK do uzyskiwania zgody użytkowników. umożliwia uzyskanie zgody użytkownika na 2 sposoby:

Pamiętaj, aby umożliwić użytkownikom zmianę lub wycofanie zgody.

Formularz zgody renderowany przez Google to pełnoekranowy, konfigurowalny formularz, który wyświetla się nad zawartością aplikacji. Możesz skonfigurować formularz, aby wyświetlić użytkownikowi kombinacje tych opcji:

  • Zgoda na wyświetlanie reklam spersonalizowanych
  • Zgoda na wyświetlanie reklam niespersonalizowanych
  • Korzystanie z płatnej wersji aplikacji zamiast wyświetlania reklam

Uważnie przeczytaj tekst zgody i wyświetli się komunikat, że za pomocą Google możesz zarabiać na swojej aplikacji, ale nie możemy udzielić Ci porady prawnej. Aby zaktualizować tekst zgody w formularzu zgody wygenerowanym przez Google, w razie potrzeby zmodyfikuj plik consentform.html w pakiecie SDK do uzyskiwania zgody użytkownika.

Formularz zgody renderowany przez Google jest skonfigurowany i wyświetlany za pomocą klasy PACConsentForm. Poniższy kod pokazuje, jak utworzyć PACConsentForm z użyciem wszystkich 3 opcji formularza:

Swift

// TODO: Replace with your app's privacy policy url.
guard let privacyUrl = URL(string: "https://www.your.com/privacyurl"),
  let form = PACConsentForm(applicationPrivacyPolicyURL: privacyUrl) else {
    print("incorrect privacy URL.")
    return
}
form.shouldOfferPersonalizedAds = true
form.shouldOfferNonPersonalizedAds = true
form.shouldOfferAdFree = true

Objective-C

// TODO: Replace with your app's privacy policy url.
NSURL *privacyURL = [NSURL URLWithString:@"https://www.your.com/privacyurl"];
PACConsentForm *form = [[PACConsentForm alloc] initWithApplicationPrivacyPolicyURL:privacyURL];
form.shouldOfferPersonalizedAds = YES;
form.shouldOfferNonPersonalizedAds = YES;
form.shouldOfferAdFree = YES;

Właściwości obiektu PACConsentForm zostały szczegółowo opisane poniżej:

shouldOfferPersonalizedAds
Wskazuje, czy formularz zgody powinien wyświetlać opcję reklamy spersonalizowanej. Domyślna wartość to YES.
shouldOfferNonPersonalizedAds
Wskazuje, czy formularz zgody powinien wyświetlać opcję reklamy niespersonalizowanej. Domyślna wartość to YES.
shouldOfferAdFree
Określa, czy formularz zgody powinien wyświetlać opcję aplikacji bez reklam. Domyślna wartość to NO.

Po utworzeniu i skonfigurowaniu obiektu PACConsentForm załaduj formularz zgody PACConsentForm, wywołując metodę loadWithCompletionHandler: w sposób podany poniżej:

Swift

form.load {(_ error: Error?) -> Void in
  print("Load complete.")
  if let error = error {
    // Handle error.
    print("Error loading form: \(error.localizedDescription)")
  } else {
    // Load successful.
  }
}

Objective-C

[form loadWithCompletionHandler:^(NSError *_Nullable error) {
  NSLog(@"Load complete. Error: %@", error);
  if (error) {
    // Handle error.
  } else {
    // Load successful.
  }
}];

Aby zaprezentować użytkownikowi formularz zgody renderowany przez Google, wywołaj metodę presentFromViewController:dismissCompletion: na wczytanym elemencie PACConsentForm, jak pokazano poniżej:

Swift

form.present(from: self) { (error, userPrefersAdFree) in
      if let error = error {
        // Handle error.
      } else if userPrefersAdFree {
        // User prefers to use a paid version of the app.
      } else {
        // Check the user's consent choice.
        let status =
             PACConsentInformation.sharedInstance.consentStatus
      }
    }

Objective-C

 [form presentFromViewController:self
     dismissCompletion:^(NSError *_Nullable error, BOOL userPrefersAdFree) {
       if (error) {
         // Handle error.
       } else if (userPrefersAdFree) {
         // The user prefers to use a paid version of the app.
       } else {
         // Check the user's consent choice.
         PACConsentStatus status =
             PACConsentInformation.sharedInstance.consentStatus;
       }
     }];

Wywołanie presentFromViewController:dismissCompletion: wymaga dwóch argumentów:

  • UIViewController, od którego należy zacząć prezentację.

  • Blok, który akceptuje parametry NSError i BOOL jako parametry wejściowe. NSError podaje informacje, jeśli wystąpił błąd podczas wyświetlania formularza zgody. userPrefersAdFree BOOL ma wartość YES, gdy użytkownik zdecyduje się na używanie płatnej wersji aplikacji zamiast oglądania reklam.

Gdy użytkownik wybierze opcję i zamknie formularz, pakiet SDK dotyczący zgody użytkownika zapisze wybór użytkownika i wywoła blok dismissCompletion:. Możesz zapoznać się z wyborami użytkownika i przekazać dalej zgodę na pakiet SDK do reklam mobilnych Google.

Zgoda użytkowników zarządzana przez wydawcę

Jeśli chcesz samodzielnie uzyskać zgodę użytkowników, możesz użyć właściwości adProviders klasy PACConsentInformation, by uzyskać listę dostawców technologii reklamowych powiązanych z identyfikatorami wydawców używanymi w Twojej aplikacji. Pełna lista dostawców technologii reklamowych skonfigurowanych dla Twoich identyfikatorów wydawców jest wymagana.

Zanim otworzysz właściwość adProviders PACConsentInformation, musisz poczekać na udaną aktualizację stanu zgody użytkownika zgodnie z opisem w sekcji Aktualizowanie stanu zgody.

Swift

let adProviders = PACConsentInformation.sharedInstance.adProviders

Objective-C

NSArray *adProviders = PACConsentInformation.sharedInstance.adProviders;

Jeśli chcesz samodzielnie uzyskać zgodę użytkowników, skorzystaj z listy dostawców reklam.

Po uzyskaniu zgody zarejestruj PACConsentStatus odpowiadający odpowiedzi użytkownika za pomocą właściwości status klasy PACConsentInformation.

Swift

PACConsentInformation.sharedInstance.consentStatus = .personalized

Objective-C

PACConsentInformation.sharedInstance.consentStatus = PACConsentStatusPersonalized;

Po zgłoszeniu zgody na pakiet SDK do uzyskiwania zgody możesz przekazać zgodę na pakiet SDK do reklam mobilnych Google.

Aby umożliwić użytkownikom aktualizowanie ich zgody, powtórz czynności opisane w sekcji Uzyskiwanie zgody, gdy użytkownik zdecyduje się zaktualizować stan zgody.

Jeśli wydawca wie, że użytkownik nie osiągnął wieku świadomego wyrażenia zgody, wszystkie żądania reklam muszą mieć ustawienie TFUA (tagi dotyczące użytkowników, którzy nie osiągnęli wieku świadomego wyrażenia zgody w Europie). Aby uwzględnić ten tag w przypadku wszystkich żądań reklamy wysyłanych z aplikacji, Ustaw właściwość tagForUnderAgeOfConsent na YES. To ustawienie obowiązuje w przypadku wszystkich przyszłych żądań reklamy.

Swift

PACConsentInformation.sharedInstance.isTaggedForUnderAgeOfConsent = true

Objective-C

PACConsentInformation.sharedInstance.tagForUnderAgeOfConsent = YES;

Po włączeniu ustawienia TFUA formularz zgody renderowany przez Google nie zostanie wczytany. Wszystkie żądania reklam, które zawierają TFUA, nie będą kwalifikować się do wyświetlania reklam spersonalizowanych ani remarketingowych. TFUA wyłącza żądania wysyłane do zewnętrznych dostawców technologii reklamowych, np. piksele do śledzenia reklam lub serwery reklamowe firm zewnętrznych.

Aby usunąć TFUA z żądań reklamy, ustaw właściwość tagForUnderAgeOfConsent na NO.

Testowanie

Działanie pakietu SDK do uzyskiwania zgody na przetwarzanie danych różni się w zależności od wartości ustawieniaPACConsentInformation.sharedInstance.requestLocationInEEAOrUnknown. Na przykład formularz zgody nie wczytuje się, jeśli użytkownik nie znajduje się w Europejskim Obszarze Gospodarczym.

Aby ułatwić testowanie aplikacji zarówno w Europejskim Obszarze Gospodarczym, jak i poza nim, pakiet SDK do uzyskiwania zgody użytkownika obsługuje opcje debugowania, które można ustawić przed wywołaniem innych metod w pakiecie SDK do uzyskiwania zgody użytkowników.

  1. Pobierz identyfikator wyświetlania reklam z urządzenia. Aby zarejestrować swój identyfikator wyświetlania reklam, możesz użyć tego kodu:

    #import <AdSupport/AdSupport.h>
    // ...
    
    NSLog(@"Advertising ID: %@",
          ASIdentifierManager.sharedManager.advertisingIdentifier.UUIDString);

    Następnie sprawdź konsolę, aby ją pobrać:

    Advertising ID: 41E538F6-9C98-4EF2-B3EE-D7BD8CAF8339
  2. Wskaż urządzenie jako testowe, używając identyfikatora wyświetlania reklam w konsoli:

    PACConsentInformation.sharedInstance.debugIdentifiers =
        @[ @"41E538F6-9C98-4EF2-B3EE-D7BD8CAF8339" ];
  3. Na koniec ustaw w polu debugGeography preferowaną lokalizację geograficzną do celów testowych.

    // Geography appears as in EEA for debug devices.
    PACConsentInformation.sharedInstance.debugGeography = PACDebugGeographyEEA;
    // Geography appears as not in EEA for debug devices.
    PACConsentInformation.sharedInstance.debugGeography = PACDebugGeographyNotEEA;

Po wykonaniu tych czynności połączenia o zaktualizowaniu stanu zgody będą uwzględniać Twój region debugowania.

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.

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:

Najczęstsze pytania

Ilu dostawców technologii reklamowych obsługuje pakiet SDK do uzyskiwania zgody?
Pakiet SDK do uzyskiwania zgody na wykorzystanie danych nie ogranicza liczby dostawców technologii reklamowych, którzy wydawca włączy.
Czy lista dostawców technologii reklamowych zwróconych przez pakiet SDK zostanie automatycznie zaktualizowana, jeśli zmienię wybór w AdMob interfejsie?
Tak, jeśli zmodyfikujesz listę dostawców technologii reklamowych w interfejsieAdMob , zmiany zostaną wprowadzone na serwerach reklamowych Google w ciągu około godziny.