Rozpocznij

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 uzyskiwać 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. Wszystkie te ustawienia można teraz wygodnie obsługiwać AdMob w sekcji Prywatność i wyświetlanie wiadomości.

Wymagania wstępne

Typy wiadomości dla użytkowników

W sekcji Typy wiadomości dla użytkowników znajdziesz pełną listę obsługiwanych wiadomości. Szczegółowe instrukcje implementacji każdego typu wiadomości znajdziesz w panelu nawigacyjnym po lewej stronie.

Importowanie pakietu SDK

CocoaPods (preferowany)

Pakiet UMP SDK jest zawarty w zależności od poda SDK Google Mobile Ads, począwszy od pakietu SDK do reklam mobilnych Google w wersji 7.64.0.

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

pod 'Google-Mobile-Ads-SDK'

Następnie uruchom to polecenie:

pod install --repo-update

Jeśli nie masz doświadczenia z CocoaPods, przeczytaj sekcję o używaniu CocoaPods, aby dowiedzieć się, jak tworzyć i używać podPodów.

Pobieranie ręczne

Innym sposobem jest zaimportowanie pakietu SDK ręcznie.

Pobieranie pakietu SDK

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

Platformę możesz następnie umieścić w każdym pliku, którego potrzebujesz:

Swift

import UserMessagingPlatform

Objective-C

#include <UserMessagingPlatform/UserMessagingPlatform.h>

Zaktualizuj plik Info.plist

Znajdowanie identyfikatora aplikacji i dodaj go do: Info.plist

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>

Określ, czy wiadomość musi być wyświetlana

Przy każdym uruchomieniu aplikacji należy poprosić o aktualizację informacji z prośbą o zgodę użytkownika. Aby to zrobić, requestConsentInfoUpdateWithParameters:completionHandler: załaduj formularz. Ta opcja określa, czy użytkownik musi wyrazić zgodę, jeśli jeszcze tego nie zrobił lub czy jego ważność wygasła.

W razie potrzeby możesz później prezentować formularz.

Oto przykład sprawdzania stanu przy uruchamianiu aplikacji:

Swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
   // 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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

// 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)

Przed wyświetleniem formularza musisz określić, czy jest on dostępny. Niedostępne formularze mogą być spowodowane tym, że użytkownik włączył ograniczone śledzenie reklam lub zostały przez nie otagowane.

Aby sprawdzić dostępność formularza, użyj funkcjithe formStatus property on the UMPConsentInformation instance utworzonej wcześniej.

Następnie 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 the static loadWithCompletionHandler: method on the UMPConsentForm class.

Swift

func loadForm() {
  // Loads a consent form. Must be called on the main thread.
  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

Po sprawdzeniu dostępności i załadowaniu formularza skorzystaj z metodypresentFromViewController:completionHandler: w instancjiUMPConsentForm , aby zaprezentować formularz.

Użyj obiektuUMPConsentInformation z wcześniejszego użycia, aby sprawdzićconsent status i zaktualizować metodęloadForm :

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.
              }
                // Handle dismissal by reloading form.
                loadForm();
            })
      } 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.
                      }
                        // Handle dismissal by reloading form.
                        [self loadForm];
                    }];
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  }];
}

Jeśli chcesz coś zrobić po dokonaniu wyboru lub zamknięciu formularza, umieść tę logikę w module obsługi wypełniania lub wywołania zwrotnego formularza.

Testowanie

Wymuś położenie geograficzne

Pakiet UMP SDK umożliwia przetestowanie działania aplikacji tak, jakby urządzenie znajdowało się w Europejskim Obszarze Gospodarczym lub Wielkiej Brytanii za pomocą the debugGeography property of type UMPDebugGeography on UMPDebugSettings.

Aby użyć funkcji debugowania, musisz podać zaszyfrowany identyfikator urządzenia testowego w ustawieniach debugowania aplikacji. Jeśli wywołujesz funkcjęrequestConsentInfoUpdateWithParameters:completionHandler: bez ustawienia tej wartości, aplikacja rejestruje wymagany skrót identyfikatora po uruchomieniu.

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){
                           ...
}];

W narzędziu UMPDebugGeographymożesz wymusić położenie geograficzne na 1 z tych sposobów:

Debugowanie geograficzne Opis
UMPDebugGeographyDisabled Debugowanie geograficzne jest wyłączone.
UMPDebugGeographyEEA W przypadku urządzeń debugowania dane geograficzne są takie same jak w EOG.
UMPDebugGeographyNotEEA Obszar geograficzny jest widoczny poza EOG w przypadku urządzeń do debugowania.

Pamiętaj, że ustawienia debugowania działają tylko na urządzeniach testowych. Nie trzeba dodawać emulatorów do listy identyfikatorów urządzeń, ponieważ testy są już domyślnie włączone.

Testowanie aplikacji za pomocą pakietu UMP SDK może pomóc w zresetowaniu stanu pakietu SDK, aby można było symulować pierwsze instalacje użytkownika. SDK udostępnia w tym celu reset metodę.

Swift

UMPConsentInformation.sharedInstance.reset()

Objective-C

[UMPConsentInformation.sharedInstance reset];

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