Podziel się opinią i pomóż nam opracować harmonogram rozwoju pakietu SDK do reklam mobilnych Google. Wypełnij roczną ankietę dotyczącą pakietu SDK do reklam mobilnych Google na 2023 r., aby została zakończona 5 maja 2023 roku.

Rozpocznij

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) 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 User Messaging Platform (UMP). Zaktualizowaliśmy pakiet UMP SDK, aby był zgodny z najnowszymi standardami IAB. Wszystkie te konfiguracje 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

Więcej informacji znajdziesz w artykuleTypy wiadomości od użytkowników. Szczegółowe instrukcje wdrażania poszczególnych typów wiadomości znajdziesz na pasku nawigacyjnym po lewej stronie.

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 uruchom to polecenie:

pod install --repo-update

Jeśli dopiero zaczynasz korzystać z CocoaPods, zobacz Korzystanie z CocoaPods, aby dowiedzieć się, jak tworzyć i używać PodPodów.

Pobieranie ręczne

Innym sposobem importowania pakietu SDK jest wykonanie go ręcznie.

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

Znajdowanie identyfikatora aplikacji i dodaj ją do Info.plist:

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

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

Przy każdym uruchomieniu aplikacji należy poprosić o zaktualizowanie informacji z prośbą o zgodę użytkownika, korzystając z requestConsentInfoUpdateWithParameters:completionHandler: tego ustawienia. Pozwala to określić, czy użytkownik musi wyrazić zgodę na wykorzystanie danych, jeśli jeszcze tego nie zrobił lub czy jego zgoda wygasła.

W razie potrzeby możesz później wyświetlić formularz.

Oto przykład, jak sprawdzić stan przy uruchomieniu 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ą wynikać z tego, że użytkownik włączył ograniczone śledzenie reklam lub jeśli otagowano je jako dotyczące wieku świadomego wyrażenia zgody.

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

Następnie dodaj kod towarzyszący, 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 polecenia 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 określeniu dostępności i wczytaniu formularza użyj metodypresentFromViewController:completionHandler: w instancjiUMPConsentForm , aby go przedstawić.

Użyj obiektuUMPConsentInformation z poprzedniego okresu, 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 wykonać jakąś czynność po dokonaniu przez użytkownika 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 w taki sposób, jakby urządzenie znajdowało się w Europejskim Obszarze Gospodarczym lub Wielkiej Brytanii przy użyciu the debugGeography property of type UMPDebugGeography on UMPDebugSettings.

Aby korzystać z funkcji debugowania, musisz podać zaszyfrowany identyfikator urządzenia testowego w ustawieniach debugowania aplikacji. Jeśli wywołasz funkcjęrequestConsentInfoUpdateWithParameters:completionHandler: bez ustawienia tej wartości, po uruchomieniu aplikacja zapisze 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){
                           ...
}];

W narzędziu UMPDebugGeographymożesz wymusić mapowanie geograficzne na jedną z tych opcji:

Debugowanie geograficzne Opis
UMPDebugGeographyDisabled Debugowanie geograficzne debugowania jest wyłączone.
UMPDebugGeographyEEA Dane geograficzne są wyświetlane na potrzeby debugowania na podstawie danych takich jak w EOG.
UMPDebugGeographyNotEEA Dane geograficzne są wyświetlane na potrzeby debugowania urządzenia jako spoza EOG.

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 mają już domyślnie włączone.

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. SDK udostępnia do tego metodę reset .

Swift

UMPConsentInformation.sharedInstance.reset()

Objective-C

[UMPConsentInformation.sharedInstance reset];

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