Premiers pas

Le SDK Google User Messaging Platform (UMP) est un outil permettant vous aider à gérer les paramètres de confidentialité. Pour en savoir plus, consultez À propos de l'outil Confidentialité et messagerie.

Créer un type de message

Créez des messages destinés aux utilisateurs avec l'une des Types de messages disponibles pour les utilisateurs dans la section Confidentialité l'onglet "Messages" de votre AdMob de service. Le SDK UMP tente d'afficher un message sur la confidentialité créé à partir de AdMob l'identifiant de l'application dans votre projet.

Pour en savoir plus, consultez À propos de la confidentialité et des messages

Importer le SDK

CocoaPods (à privilégier)

Le moyen le plus simple d'importer le SDK dans un projet iOS consiste à utiliser CocoaPods : Ouvrez le fichier Podfile et ajoutez cette ligne à la cible de votre application:

pod 'GoogleUserMessagingPlatform'

Exécutez ensuite la commande suivante :

pod install --repo-update

Si vous ne connaissez pas CocoaPods, consultez la section Utiliser CocoaPods CocoaPods pour savoir comment créer et utiliser des fichiers Podfiles.

Gestionnaire de paquets Swift

Le SDK UMP est également compatible avec le gestionnaire de packages Swift. Suivez ces étapes pour importer le package Swift.

  1. Dans Xcode, installez le package Swift du SDK UMP en accédant à Fichier > Ajouter des packages...

  2. Dans l'invite qui s'affiche, recherchez le package GitHub du package Swift du SDK UMP. dépôt:

    https://github.com/googleads/swift-package-manager-google-user-messaging-platform.git
    
  3. Sélectionnez la version du package Swift du SDK UMP que vous souhaitez utiliser. Neuf nous vous recommandons d'utiliser l'option Jusqu'à la prochaine version majeure.

Xcode résout ensuite vos dépendances de package et les télécharge dans le en arrière-plan. Pour plus de détails sur la façon d'ajouter des dépendances de package, consultez le guide d'Apple pour en savoir plus.

Téléchargement manuel

L'autre façon d'importer le SDK consiste à le faire manuellement.

Télécharger le SDK

Ensuite, faites glisser le framework dans votre projet Xcode, en veillant à sélectionner Copier éléments si nécessaire.

Vous pouvez ensuite inclure le framework dans les fichiers dont vous avez besoin à l'aide de la commande suivante:

Swift

import UserMessagingPlatform

Objective-C

#include <UserMessagingPlatform/UserMessagingPlatform.h>

Ajouter l'ID application

Vous trouverez l'ID de votre application dans le Interface utilisateur d'AdMob. Ajoutez la pièce d'identité à votre Info.plist à l'aide de l'extrait de code suivant:

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

Vous devez demander la mise à jour des informations sur le consentement de l'utilisateur pour chaque application lancer, à l'aide de requestConsentInfoUpdateWithParameters:completionHandler:. Cette demande vérifie les éléments suivants:

  • Le consentement est-il requis ? Par exemple, le consentement est requis pour ou que la précédente décision de consentement a expiré.
  • Indique si un point d'entrée pour les options de confidentialité est requis. Certains messages sur la confidentialité exiger que les applications autorisent les utilisateurs à modifier leurs options de confidentialité à tout moment.

Voici un exemple de vérification de l'état à partir d'un UIViewController dans le viewDidLoad().

Swift

override func viewDidLoad() {
  super.viewDidLoad()

  // Request an update for the consent information.
  UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: nil) {
    [weak self] requestConsentError in
    guard let self else { return }

    if let consentError = requestConsentError {
      // Consent gathering failed.
      return print("Error: \(consentError.localizedDescription)")
    }

    // TODO: Load and present the privacy message form.
  }
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];

  // Request an update for the consent information.
  [UMPConsentInformation.sharedInstance
      requestConsentInfoUpdateWithParameters:nil
          completionHandler:^(NSError *_Nullable requestConsentError) {
            if (requestConsentError) {
              // Consent gathering failed.
              NSLog(@"Error: %@", requestConsentError.localizedDescription);
              return;
            }

            // TODO: Load and present the privacy message form.
          }];
}

Charger et présenter un formulaire de message sur la confidentialité si nécessaire

Une fois que vous avez reçu les toutes dernières informations concernant l'état de votre consentement, appelez loadAndPresentIfRequiredFromViewController:completionHandler: pour charger les formulaires nécessaires recueillir le consentement des utilisateurs. Une fois le chargement terminé, les formulaires s'affichent immédiatement.

Swift

override func viewDidLoad() {
  super.viewDidLoad()

  // Request an update for the consent information.
  UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: nil) {
    [weak self] requestConsentError in
    guard let self else { return }

    if let consentError = requestConsentError {
      // Consent gathering failed.
      return print("Error: \(consentError.localizedDescription)")
    }

    UMPConsentForm.loadAndPresentIfRequired(from: self) {
      [weak self] loadAndPresentError in
      guard let self else { return }

      if let consentError = loadAndPresentError {
        // Consent gathering failed.
        return print("Error: \(consentError.localizedDescription)")
      }

      // Consent has been gathered.
    }
  }
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];

  __weak __typeof__(self) weakSelf = self;
  // Request an update for the consent information.
  [UMPConsentInformation.sharedInstance
      requestConsentInfoUpdateWithParameters:nil
          completionHandler:^(NSError *_Nullable requestConsentError) {
            if (requestConsentError) {
              // Consent gathering failed.
              NSLog(@"Error: %@", requestConsentError.localizedDescription);
              return;
            }

            __strong __typeof__(self) strongSelf = weakSelf;
            if (!strongSelf) {
              return;
            }

            [UMPConsentForm loadAndPresentIfRequiredFromViewController:strongSelf
                completionHandler:^(NSError *loadAndPresentError) {
                  if (loadAndPresentError) {
                    // Consent gathering failed.
                    NSLog(@"Error: %@", loadAndPresentError.localizedDescription);
                    return;
                  }

                  // Consent has been gathered.
                }];
          }];
}

Si vous devez effectuer des actions après que l'utilisateur a choisi ou ignoré dans le formulaire, placez cette logique dans completion handler pour votre formulaire.

Options de confidentialité

Certains formulaires de message sur la confidentialité sont présentés à partir d'une interface qui permet aux utilisateurs de gérer leurs options de confidentialité à tout moment. Pour en savoir plus sur le message que voient vos utilisateurs dans les options de confidentialité point d'entrée, consultez Types de messages disponibles pour les utilisateurs

Pour implémenter un point d'entrée pour les options de confidentialité, procédez comme suit:

  1. Vérifiez UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus.
  2. Si un point d'entrée des options de confidentialité est ajoutez un élément d'interface utilisateur visible et interactif à votre application.
  3. Déclenchez le formulaire des options de confidentialité à l'aide de presentPrivacyOptionsFormFromViewController:completionHandler:

L'exemple de code suivant illustre ces étapes:

Swift

@IBOutlet weak var privacySettingsButton: UIBarButtonItem!

var isPrivacyOptionsRequired: Bool {
  return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus == .required
}

override func viewDidLoad() {
  // ...

  // Request an update for the consent information.
  UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
    // ...

    UMPConsentForm.loadAndPresentIfRequired(from: self) {
      //...

      // Consent has been gathered.

      // Show the button if privacy options are required.
      self.privacySettingsButton.isEnabled = isPrivacyOptionsRequired
    }
  }
  // ...
}

// Present the privacy options form when a user interacts with the
// privacy settings button.
@IBAction func privacySettingsTapped(_ sender: UIBarButtonItem) {
  UMPConsentForm.presentPrivacyOptionsForm(from: self) {
    [weak self] formError in
    guard let self, let formError else { return }

    // Handle the error.
  }
}

Objective-C

@interface ViewController ()
@property(weak, nonatomic) IBOutlet UIBarButtonItem *privacySettingsButton;
@end

- (BOOL)isPrivacyOptionsRequired {
  return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus ==
         UMPPrivacyOptionsRequirementStatusRequired;
}

- (void)viewDidLoad {
  // ...

  __weak __typeof__(self) weakSelf = self;
  // Request an update for the consent information.
  [UMPConsentInformation.sharedInstance
      requestConsentInfoUpdateWithParameters:parameters
          completionHandler:^(NSError *_Nullable requestConsentError) {
            // ...

            [UMPConsentForm loadAndPresentIfRequiredFromViewController:strongSelf
                completionHandler:^(NSError *loadAndPresentError) {
                  // ...

                  // Consent has been gathered.

                  // Show the button if privacy options are required.
                  strongSelf.privacySettingsButton.enabled = isPrivacyOptionsRequired;
                }];
          }];
}

// Present the privacy options form when a user interacts with your
// privacy settings button.
- (IBAction)privacySettingsTapped:(UIBarButtonItem *)sender {
  [UMPConsentForm presentPrivacyOptionsFormFromViewController:self
                                completionHandler:^(NSError *_Nullable formError) {
                                  if (formError) {
                                    // Handle the error.
                                  }
                                }];
}

Demander des annonces

Avant de demander des annonces dans votre application, vérifiez si vous avez obtenu le consentement des utilisateurs de l'utilisateur via UMPConsentInformation.sharedInstance.canRequestAds. Il y a deux endroits où vérifier le consentement des utilisateurs:

  • Une fois que le consentement a été obtenu lors de la session en cours.
  • Immédiatement après avoir appelé requestConsentInfoUpdateWithParameters:completionHandler:. Il est possible que le consentement ait été obtenu lors de la session précédente. En tant que latence nous vous recommandons de ne pas attendre la fin du rappel commencer à charger des annonces dès que possible après le lancement de votre application.

Si une erreur se produit lors du processus de collecte du consentement, vous devez pour tenter de demander des annonces. Le SDK UMP utilise l'état de consentement de l'autorisation session.

Swift

class ViewController: UIViewController {

  // Use a boolean to initialize the Google Mobile Ads SDK and load ads once.
  private var isMobileAdsStartCalled = false

  override func viewDidLoad() {
    super.viewDidLoad()

    // Request an update for the consent information.
    UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: nil) {
      [weak self] requestConsentError in
      guard let self else { return }

      if let consentError = requestConsentError {
        // Consent gathering failed.
        return print("Error: \(consentError.localizedDescription)")
      }

      UMPConsentForm.loadAndPresentIfRequired(from: self) {
        [weak self] loadAndPresentError in
        guard let self else { return }

        if let consentError = loadAndPresentError {
          // Consent gathering failed.
          return print("Error: \(consentError.localizedDescription)")
        }

        // Consent has been gathered.
        if UMPConsentInformation.sharedInstance.canRequestAds {
          self.startGoogleMobileAdsSDK()
        }
      }
    }
    
    // Check if you can initialize the Google Mobile Ads SDK in parallel
    // while checking for new consent information. Consent obtained in
    // the previous session can be used to request ads.
    if UMPConsentInformation.sharedInstance.canRequestAds {
      startGoogleMobileAdsSDK()
    }
  }
  
  private func startGoogleMobileAdsSDK() {
    DispatchQueue.main.async {
      guard !self.isMobileAdsStartCalled else { return }

      self.isMobileAdsStartCalled = true

      // Initialize the Google Mobile Ads SDK.
      GADMobileAds.sharedInstance().start()

      // TODO: Request an ad.
      // GADInterstitialAd.load(...)
    }
  }
}

Objective-C

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  __weak __typeof__(self) weakSelf = self;
  // Request an update for the consent information.
  [UMPConsentInformation.sharedInstance
      requestConsentInfoUpdateWithParameters:nil
          completionHandler:^(NSError *_Nullable requestConsentError) {
            if (requestConsentError) {
              // Consent gathering failed.
              NSLog(@"Error: %@", requestConsentError.localizedDescription);
              return;
            }
            __strong __typeof__(self) strongSelf = weakSelf;
            if (!strongSelf) {
              return;
            }

            [UMPConsentForm loadAndPresentIfRequiredFromViewController:strongSelf
                completionHandler:^(NSError *loadAndPresentError) {
                  if (loadAndPresentError) {
                    // Consent gathering failed.
                    NSLog(@"Error: %@", loadAndPresentError.localizedDescription);
                    return;
                  }

                  // Consent has been gathered.
                  __strong __typeof__(self) strongSelf = weakSelf;
                  if (!strongSelf) {
                    return;
                  }

                  if (UMPConsentInformation.sharedInstance.canRequestAds) {
                    [strongSelf startGoogleMobileAdsSDK];
                  }
                }];
          }];

  // Check if you can initialize the Google Mobile Ads SDK in parallel
  // while checking for new consent information. Consent obtained in
  // the previous session can be used to request ads.
  if (UMPConsentInformation.sharedInstance.canRequestAds) {
    [self startGoogleMobileAdsSDK];
  }
}

- (void)startGoogleMobileAdsSDK {
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    // Initialize the Google Mobile Ads SDK.
    [GADMobileAds.sharedInstance startWithCompletionHandler:nil];

    // TODO: Request an ad.
    // [GADInterstitialAd loadWithAdUnitID...];
  });
}

Tests

Si vous souhaitez tester l'intégration dans votre application pendant le développement, suivez suivez ces étapes pour enregistrer votre appareil de test de manière programmatique. Veillez à supprimer le qui définit ces ID d'appareils de test avant de publier votre application.

  1. Appelez le requestConsentInfoUpdateWithParameters:completionHandler:.
  2. Recherchez dans la sortie du journal un message semblable à l'exemple suivant, affiche l'ID de votre appareil et explique comment l'ajouter en tant qu'appareil de test:

    <UMP SDK>To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]
    
  3. Copiez l'ID de votre appareil de test dans votre presse-papiers.

  4. Modifiez votre code pour appeler UMPDebugSettings().testDeviceIdentifiers et transmettre la liste de vos ID d'appareils de test.

    Swift

    let parameters = UMPRequestParameters()
    let debugSettings = UMPDebugSettings()
    debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
    parameters.debugSettings = debugSettings
    // Include the UMPRequestParameters in your consent request.
    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" ];
    parameters.debugSettings = debugSettings;
    // Include the UMPRequestParameters in your consent request.
    [UMPConsentInformation.sharedInstance
        requestConsentInfoUpdateWithParameters:parameters
                            completionHandler:^(NSError *_Nullable error){
                              ...
    }];
    

Forcer une zone géographique

Le SDK UMP permet de tester le comportement de votre application comme si l'appareil était situées dans l'EEE ou au Royaume-Uni par le biais de the debugGeography property of type UMPDebugGeography on UMPDebugSettings. Notez que Les paramètres de débogage ne fonctionnent que sur les appareils de test.

Swift

let parameters = UMPRequestParameters()
let debugSettings = UMPDebugSettings()
debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = .EEA
parameters.debugSettings = debugSettings
// Include the UMPRequestParameters in your consent request.
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;
// Include the UMPRequestParameters in your consent request.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error){
                           ...
}];

Lorsque vous testez votre application avec le SDK UMP, il peut être utile de réinitialiser le l'état du SDK afin de simuler la première expérience d'installation d'un utilisateur. Pour ce faire, le SDK fournit la méthode reset .

Swift

UMPConsentInformation.sharedInstance.reset()

Objective-C

[UMPConsentInformation.sharedInstance reset];

Exemples sur GitHub

Exemples d'intégration du SDK UMP: Swift | Objective-C