Anleitung: AdMob-Anzeigenhäufigkeit optimieren

Schritt 3: Behandeln Sie Remote Config-Parameterwerte im Code Ihrer App


Einführung: AdMob-Anzeigenhäufigkeit mit Firebase optimieren
Schritt 1: Verwenden Sie AdMob, um neue Anzeigenblockvarianten zum Testen zu erstellen
Schritt 2: Richten Sie einen A/B-Test in der Firebase-Konsole ein

Schritt 3: Behandeln Sie Remote Config-Parameterwerte im Code Ihrer App

Schritt 4: Starten Sie den A/B-Test und überprüfen Sie die Testergebnisse in der Firebase-Konsole
Schritt 5: Entscheiden Sie, ob Sie das neue Anzeigenformat einführen möchten


Am Ende des letzten Schritts haben Sie einen Remote-Konfigurationsparameter ( INTERSTITIAL_AD_KEY ) erstellt. In diesem Schritt fügen Sie dem Code Ihrer App die Logik für das hinzu, was Ihre App basierend auf dem Wert dieses Parameters anzeigen soll.

Fügen Sie die erforderlichen SDKs hinzu

Bevor Sie Remote Config in Ihrem Anwendungscode verwenden, fügen Sie Ihren Projekt-Build-Dateien sowohl das Remote Config SDK als auch das Firebase SDK für Google Analytics hinzu.

Schnell

Fügen Sie die folgenden Pods in Ihrer Poddatei hinzu und installieren Sie sie:

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

Ziel c

Fügen Sie die folgenden Pods in Ihrer Poddatei hinzu und installieren Sie sie:

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

Java

Fügen Sie Ihrer build.gradle -Datei die folgenden Bibliotheksabhängigkeiten hinzu:

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

Kotlin+KTX

Fügen Sie Ihrer build.gradle -Datei die folgenden Bibliotheksabhängigkeiten hinzu:

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

Einheit

Laden Sie das Firebase Unity SDK herunter und installieren Sie es, und fügen Sie Ihrem Projekt dann die folgenden Unity-Pakete hinzu:

  • FirebaseAnalytics.unitypackage
  • FirebaseRemoteConfig.unitypackage

Remote Config-Instanz konfigurieren

Um die Remote Config-Parameterwerte zu verwenden, konfigurieren Sie die Remote Config-Instanz so, dass sie zum Abrufen neuer Werte für die Client-App-Instanz eingerichtet ist.

In diesem Beispiel ist Remote Config so konfiguriert, dass es einmal pro Stunde nach neuen Parameterwerten sucht.

Schnell

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

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

Einheit

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");
}

Holen und aktivieren Sie Remote Config

Rufen Sie die Remote Config-Parameter ab und aktivieren Sie sie, damit sie mit der Verwendung der neuen Parameterwerte beginnen können.

Sie sollten diesen Aufruf so früh wie möglich in der Ladephase Ihrer App tätigen, da dieser Aufruf asynchron ist und Sie den Remote Config-Wert vorab abrufen müssen, damit Ihre App weiß, welche Anzeige geschaltet werden soll.

Schnell

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

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

Einheit

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

Ihre App ist jetzt bereit, den Remote Config-Parameter zu verarbeiten, den Sie während des zuvor in diesem Tutorial eingerichteten A/B-Tests erstellt haben.

Verwenden Sie den Parameterwert Remote Config

Verwenden Sie den vorab abgerufenen Remote-Konfigurationswert in der Funktion loadAdUnit() , um zu bestimmen, welche Variante der Anzeigenhäufigkeit für diese App-Instanz angezeigt werden soll.

Schnell

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.

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

Einheit

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

Fügen Sie weitere Prüfungen für den Parameterwert hinzu

Es gibt andere Bereiche in Ihrem Anwendungscode, in denen Sie den Wert dieses Remote Config-Parameters überprüfen müssen, um festzulegen, welche Anzeige geladen wird. Beispielsweise können Sie entscheiden, ob eine Anzeige neu geladen werden soll, nachdem der Nutzer die aktuelle Anzeige beendet hat.

Die Abruf- und Aktivierungsaufrufe sollten zuerst ausgeführt werden, um Parameterwertänderungen abzurufen – beispielsweise, wenn Sie sich entscheiden, ein Experiment zu beenden oder ein neues zu erstellen.

Von dort aus können Sie den Wert für den Parameter jederzeit mit den folgenden Aufrufen überprüfen:

Schnell

remoteConfig["INTERSTITIAL_AD_KEY"].stringValue

Ziel c

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

Java

mFirebaseRemoteConfig.getString(INTERSTITIAL_AD_KEY)

Kotlin+KTX

remoteConfig.getString(INTERSTITIAL_AD_KEY)

Einheit

remoteConfig.GetValue("INTERSTITIAL_AD_KEY").StringValue

Diese Aufrufe geben immer denselben Wert für eine App-Instanz zurück, je nachdem, ob sie in die Kontrollgruppe oder in eine der neuen Anzeigenvariantengruppen platziert wurde, es sei denn, es wurden Änderungen in der Firebase-Konsole vorgenommen, die in den vorherigen Aufrufen abgerufen und aktiviert wurden.




Schritt 2 : Richten Sie einen A/B-Test in der Firebase-Konsole ein. Schritt 4 : Starten Sie den A/B-Test und überprüfen Sie die Testergebnisse