Tutoriel : Optimiser la fréquence des annonces AdMob

Étape 3 : Gérer les valeurs des paramètres de configuration à distance dans le code de votre application


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

Étape 3 : Gérer les valeurs des paramètres de configuration à distance dans le code de votre application

Étape 4 : Lancez le test A/B et examinez les résultats du test dans la console Firebase
Étape 5 : Décidez si vous souhaitez déployer le nouveau format d'annonce


À la fin de la dernière étape, vous avez créé un paramètre Remote Config ( INTERSTITIAL_AD_KEY ). Dans cette étape, vous allez ajouter la logique au code de votre application pour 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 votre code d'application, ajoutez à la fois le SDK Remote Config et le SDK Firebase pour Google Analytics aux fichiers de génération de votre projet.

Rapide

Ajoutez et installez les pods suivants dans votre podfile :

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

Objectif c

Ajoutez et installez les pods suivants dans votre podfile :

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

Java

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

implementation 'com.google.android.gms:play-services-ads:21.0.0'
implementation 'com.google.firebase:firebase-analytics:21.0.0'
implementation 'com.google.firebase:firebase-config:21.1.0'

Kotlin+KTX

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

implementation 'com.google.android.gms:play-services-ads:21.0.0'
implementation 'com.google.firebase:firebase-analytics-ktx:21.0.0'
implementation 'com.google.firebase:firebase-config-ktx:21.1.0'

Unité

Téléchargez et installez le SDK Firebase Unity, puis ajoutez les packages Unity suivants à votre projet :

  • FirebaseAnalytics.unitypackage
  • FirebaseRemoteConfig.unitypackage

Configurer l'instance de configuration à distance

Pour utiliser les valeurs du paramètre Remote Config, configurez l'instance Remote Config afin qu'elle soit configurée pour récupérer de nouvelles valeurs pour l'instance de l'application cliente.

Dans cet exemple, Remote Config est configuré pour rechercher de nouvelles valeurs de paramètre une fois par heure.

Rapide

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

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

Unité

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 la configuration à distance

Récupérez et activez les paramètres de configuration à distance afin qu'il puisse commencer à utiliser les nouvelles valeurs de paramètre.

Vous souhaiterez passer cet appel le plus tôt possible dans la phase de chargement de votre application, car cet appel est asynchrone et vous aurez besoin de la valeur de configuration à distance prérécupérée afin que votre application sache quelle annonce afficher.

Rapide

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()
}

Objectif 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()
        }

Unité

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éé lors de la configuration du test A/B précédemment dans ce didacticiel.

Utiliser la valeur du paramètre Remote Config

Utilisez la valeur Remote Config prérécupérée dans la fonction loadAdUnit() pour déterminer quelle variante de fréquence publicitaire doit être affichée pour cette instance d'application.

Rapide

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.

Objectif 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
      }
    })
}

Unité

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

Il existe d'autres zones de votre code d'application où vous devrez vérifier la valeur de ce paramètre de configuration à distance pour dicter quelle expérience publicitaire sera chargée. Par exemple, vous pouvez décider de recharger une annonce une fois que l'utilisateur a fini de visionner l'annonce en cours.

Les appels de récupération et d'activation doivent être effectués en premier pour obtenir les modifications de valeur de paramètre, par exemple, si vous décidez de terminer ou de créer une nouvelle expérience.

À partir de là, vous pouvez toujours vérifier la valeur du paramètre à l'aide des appels suivants :

Rapide

remoteConfig["INTERSTITIAL_AD_KEY"].stringValue

Objectif c

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

Java

mFirebaseRemoteConfig.getString(INTERSTITIAL_AD_KEY)

Kotlin+KTX

remoteConfig.getString(INTERSTITIAL_AD_KEY)

Unité

remoteConfig.GetValue("INTERSTITIAL_AD_KEY").StringValue

Ces appels renverront toujours la même valeur pour une instance d'application selon qu'elle a été placée dans le groupe de contrôle ou dans l'un des nouveaux groupes de variantes d'annonces, à moins que des modifications n'aient été apportées dans la console Firebase qui ont été récupérées et activées lors des appels précédents.




Étape 2 : Configurez un test A/B dans la console Firebase Étape 4 : Lancez le test A/B et examinez les résultats du test