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
- Przeczytaj wprowadzenie.
- Skonfiguruj wiadomości na karcie Prywatność i wyświetlanie wiadomości na koncieAdMob . Aby dowiedzieć się więcej, przeczytaj te artykuły: Prywatność i wyświetlanie wiadomości,
- Jeśli pracujesz nad wymaganiami związanymi z RODO, przeczytaj artykuł Jak wymagania IAB wpływają na wiadomości z prośbą o zgodę na wykorzystanie danych (zgodnie z wytycznymi UE).
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.
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.
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 UMPDebugGeography
moż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.
Zresetuj stan zgody
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.