Tutoriel: Optimiser la fréquence des annonces dans AdMob

Étape 3: Gérez les valeurs de paramètre Remote Config dans le code de votre application


Introduction: Optimiser AdMob la fréquence des annonces avec Firebase
Étape 1 : Utilisez AdMob pour créer des variantes de blocs d'annonces à des fins de test
Étape 2 : Configurez un test A/B dans la console Firebase

Étape 3 : gérer les valeurs de paramètre Remote Config dans le code de votre application

Étape 4: Début le test A/B et examiner les résultats dans la console Firebase.
Étape 5: Décider ou non le nouveau format d'annonce


À la fin de la dernière étape, vous avez créé un paramètre Remote Config. (INTERSTITIAL_AD_KEY). Au cours de cette étape, vous allez ajouter la logique au code de votre application de ce que votre application doit afficher en fonction de la valeur de ce paramètre.

Ajouter les SDK requis

Avant d'utiliser Remote Config dans le code de votre application, ajoutez les deux SDK Remote Config et le SDK Firebase pour Google Analytics afin de les fichiers de compilation de votre projet.

Swift

Ajoutez et installez les pods suivants dans votre fichier Podfile :

pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'

Objective-C

Ajoutez et installez les pods suivants dans votre fichier Podfile :

pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'

Android

Ajoutez les dépendances de bibliothèque suivantes à votre fichier build.gradle:

implementation 'com.google.android.gms:play-services-ads:23.3.0'
implementation 'com.google.firebase:firebase-analytics:22.1.0'
implementation 'com.google.firebase:firebase-config:22.0.0'

Unity

Téléchargez et installez le SDK Unity Firebase, puis ajoutez l'unité Unity suivante : packages à votre projet:

  • FirebaseAnalytics.unitypackage
  • FirebaseRemoteConfig.unitypackage

Configurer l'instance Remote Config

Pour utiliser les valeurs de paramètre Remote Config, configurez Remote Config afin qu'elle soit configurée pour extraire les nouvelles valeurs pour l'objet l'instance d'application cliente.

Dans cet exemple, Remote Config est configuré pour rechercher un nouveau paramètre. 1 fois par heure.

Swift

remoteConfig = RemoteConfig.remoteConfig()
let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 3600
remoteConfig.configSettings = settings

Objective-C

self.remoteConfig = [FIRRemoteConfig remoteConfig];
FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init];
remoteConfigSettings.minimumFetchInterval = 3600;
self.remoteConfig.configSettings = remoteConfigSettings;

Java

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

Kotlin+KTX

remoteConfig = Firebase.remoteConfig
val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
}
remoteConfig.setConfigSettingsAsync(configSettings)

Unity

var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
var configSettings = new ConfigSettings {
  MinimumFetchInternalInMilliseconds =
        (ulong)(new TimeSpan(1, 0, 0).TotalMilliseconds)
};
remoteConfig.SetConfigSettingsAsync(configSettings)
        .ContinueWithOnMainThread(task => {
          Debug.Log("Config settings confirmed");
}

Récupérer et activer Remote Config

Récupérez et activez les paramètres Remote Config pour qu'il puisse commencer à utiliser les nouvelles valeurs de paramètres.

Vous devez effectuer cet appel le plus tôt possible dans la phase de chargement de votre application car cet appel est asynchrone et vous avez besoin de la valeur Remote Config préchargées pour que votre application sache quelle annonce diffuser.

Swift

remoteConfig.fetch() { (status, error) -> Void in
  if status == .success {
    print("Config fetched!")
    self.remoteConfig.activate() { (changed, error) in
      // ...
    }
  } else {
    print("Config not fetched")
    print("Error: \(error?.localizedDescription ?? "No error available.")")
  }
  self.loadAdUnit()
}

Objective-C

[self.remoteConfig fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError *error) {
    if (status == FIRRemoteConfigFetchStatusSuccess) {
        NSLog(@"Config fetched!");
      [self.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) {
        // ...
      }];
    } else {
        NSLog(@"Config not fetched");
        NSLog(@"Error %@", error.localizedDescription);
    }
    [self loadAdUnit];
}];

Java

mFirebaseRemoteConfig.fetchAndActivate()
        .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
            @Override
            public void onComplete(@NonNull Task<Boolean> task) {
                if (task.isSuccessful()) {
                    boolean updated = task.getResult();
                    Log.d(TAG, "Config params updated: " + updated);
                } else {
                    Log.d(TAG, "Config params failed to update");
                }
                loadAdUnit();
            }
        });

Kotlin+KTX

remoteConfig.fetchAndActivate()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val updated = task.result
                Log.d(TAG, "Config params updated: $updated")
            } else {
                Log.d(TAG, "Config params failed to update")
            }
            loadAdUnit()
        }

Unity

remoteConfig.FetchAndActivateAsync().ContinueWithOnMainThread(task => {
  if (task.IsFaulted) {
    Debug.LogWarning("Config params failed to update");
  } else {
    Debug.Log("Config params updated: " + task.Result);
  }
  LoadAdUnit();
});

Votre application est maintenant prête à gérer le paramètre Remote Config que vous avez créé pendant le test A/B précédemment configuré dans ce tutoriel.

Utiliser la valeur du paramètre Remote Config

Utilisez la valeur Remote Config préchargée dans la fonction loadAdUnit() pour déterminer quelle variante de fréquence d'annonce afficher pour cette instance d'application.

Swift

private func loadAdUnit() {
  let adUnitId = remoteConfig["INTERSTITIAL_AD_KEY"].stringValue;
  let request = GADRequest()
  GADInterstitialAd.load(withAdUnitID: adUnitId,
                               request: request,
                     completionHandler: { [self] ad, error in
                       if let error = error {
                         print("Failed to load: \(error.localizedDescription)")
                         return
                       }
                       interstitial = ad
                       // Register for callbacks.
                     }
  )
}

// Register for callbacks.

Objective-C

- (void)loadAdUnit {
    NSString *adUnitId =
      self.remoteConfig[@"INTERSTITIAL_AD_KEY"].stringValue;

  GADRequest *request = [GADRequest request];
  [GADInterstitialAd loadAdWithAdUnitId:adUnitId
                         request:request
                         completionHandler:^(GADInterstitialAd *ad,
                             NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@",
        [error localizedDescription]);
      return;
    }

    self.interstitial = ad;
  }];
}

Java

private void loadAdUnit() {
    String adUnitId =
      mFirebaseRemoteConfig.getString("INTERSTITIAL_AD_KEY");

    // Load Interstitial Ad (assume adUnitId not null)
    AdRequest adRequest = new AdRequest.Builder().build();

    InterstitialAd.load(this, adUnitId, adRequest, new
        InterstitialAdLoadCallback() {
          @Override
          public void onAdLoaded(@NonNull InterstitialAd intertitialAd) {
            mInterstitialAd = interstitialAd;
          }

          @Override
          public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
            mInterstitialAd = null;
          }
    });
}

Kotlin+KTX

private fun loadAdUnit() {
  String adUnitId = remoteConfig.getString("INTERSTITIAL_AD_KEY")
  var adRequest = AdRequestBuilder.Builder().build()

  AdRequestBuilder.load(this, adUnitId, adRequest, object :
    InterstitialAdLoadCallback() {
      override fun onAdFailedToLoad(adError: LoadAdError) {
        mInterstitialAd = null
      }

      override fun onAdLoaded(interstitialAd: InterstitialAd) {
        mInterstitialAd = interstitialAd
      }
    })
}

Unity

void LoadAdUnit() {

  // Note that you may want to encode and parse two sets of ad unit IDs for
  // Android / iOS in the Unity implementation.
  String adUnitId = remoteConfig.GetValue("INTERSTITIAL_AD_KEY").StringValue;
  this.interstitial = new InterstitialAd(adUnitId);
}

Ajouter d'autres vérifications pour la valeur du paramètre

Le code de votre application comporte d'autres zones où vous devrez vérifier les valeur de ce paramètre Remote Config pour déterminer quelle expérience publicitaire sera chargé. Par exemple, vous pouvez décider de recharger l'annonce une fois que l'utilisateur a a regardé la vidéo actuelle.

Les appels d'extraction et d'activation doivent être effectués en premier pour obtenir une valeur de paramètre. par exemple si vous décidez d'y mettre fin ou d'en créer un autre.

Vous pouvez alors toujours vérifier la valeur du paramètre à l'aide de la méthode appels suivants:

Swift

remoteConfig["INTERSTITIAL_AD_KEY"].stringValue

Objective-C

self.remoteConfig[@"INTERSTITIAL_AD_KEY"].stringValue;

Java

mFirebaseRemoteConfig.getString(INTERSTITIAL_AD_KEY)

Kotlin+KTX

remoteConfig.getString(INTERSTITIAL_AD_KEY)

Unity

remoteConfig.GetValue("INTERSTITIAL_AD_KEY").StringValue

Ces appels renvoient toujours la même valeur pour une instance d'application en fonction de qu'elle ait été placée dans le groupe de contrôle ou dans l'un des nouveaux groupes de variantes d'annonce, sauf si des modifications qui ont été récupérées ont été apportées dans la console Firebase activée lors des appels précédents.




Étape 2: Configurez un test A/B dans la console Firebase Étape 4: Démarrez le test A/B et examiner les résultats des tests