Samouczek: testowanie nowych formatów reklam AdMob

Krok 3. Obsługa wartości parametrów Remote Config w kodzie aplikacji


Wprowadzenie: Testowanie wdrażania nowych AdMob formatów reklam za pomocą Firebase
Krok 1.UżyjAdMob, aby utworzyć nową odmianę jednostki reklamowej do testowania
Krok 2. Skonfiguruj test A/B w konsoli Firebase

Krok 3: Obsługa Remote Config wartości parametrów w kodzie aplikacji

Krok 4. Rozpocznij test A/B i sprawdź jego wyniki w Firebase konsoli
Krok 5. Podjęcie decyzji o wdrożeniu nowego formatu reklamy


W ostatnim kroku utworzyliśmy parametr Remote Config (SHOW_NEW_AD_KEY). W tym kroku dodamy do kodu aplikacji logikę określającą, co ma się wyświetlać w aplikacji na podstawie wartości tego parametru – true (wyświetl nową reklamę) lub false (nie wyświetlaj nowej reklamy).

Dodaj wymagane pakiety SDK

Zanim użyjesz Remote Config w kodzie aplikacji, dodaj do plików kompilacji projektu zarówno pakiet SDK Remote Config, jak i pakiet SDK Firebase dla Google Analytics.

Platformy Apple

Dodaj i zainstaluj w pliku podów te pody:

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

Android

Dodaj do pliku build.gradle te zależności biblioteki:

implementation 'com.google.android.gms:play-services-ads:25.2.0'
implementation 'com.google.firebase:firebase-analytics:23.2.0'
implementation 'com.google.firebase:firebase-config:23.1.0'

Unity

Pobierz i zainstaluj pakiet Firebase Unity SDK, a następnie dodaj do projektu te pakiety Unity:

  • FirebaseAnalytics.unitypackage
  • FirebaseRemoteConfig.unitypackage

Konfigurowanie instancji Remote Config

Aby używać wartości parametru Remote Config, skonfiguruj instancję Remote Config, która umożliwi pobieranie nowych wartości przez instancję aplikacji klienta.

W tym przykładzie Remote Config jest skonfigurowana tak, aby sprawdzać nowe wartości parametrów co godzinę.

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

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

Pobierz i aktywuj Remote Config

Pobierz i aktywuj parametry Remote Config, aby mogła ona zacząć używać nowych wartości parametrów.

To wywołanie powinno pojawić się na etapie wczytywania aplikacji jak najszybciej, ponieważ jest ono asynchroniczne. Wartość Remote Config musi być pobierana z wyprzedzeniem, żeby było wiadomo, jaka reklama ma się wyświetlić w aplikacji.

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

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

Twoja aplikacja może teraz obsługiwać parametr Remote Config utworzony przez Ciebie podczas konfiguracji testu A/B, którą opisaliśmy wcześniej w tym samouczku.

Użyj wartości parametru Remote Config

Użyj pobranej z wyprzedzeniem wartości Remote Config w funkcji loadAdUnit(), aby określić, czy instancja aplikacji powinna wyświetlić nową pełnoekranową jednostkę reklamową z nagrodą (wartość parametru: true) czy nie (wartość parametru: false).

Swift

private func loadAdUnit() {
  let showNewAdFormat = remoteConfig["users"].boolValue
  if showNewAdFormat {
      // Load Rewarded Interstitial Ad.
      // This should load your new implemented ad unit
      // as per AdMob instructions (the first step of this tutorial).
  } else {
    // Show the existing ad unit.
  }
}

Objective-C

- (void)loadAdUnit {
    BOOL showAds = self.remoteConfig[@"SHOW_NEW_AD_KEY"].boolValue;
    if (showAds) {
      // Load Rewarded Interstitial Ad.
      // This should load your new implemented ad unit
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Show the existing ad unit.
    }
}

Java

private void loadAdUnit() {
    boolean showNewAdFormat =
      mFirebaseRemoteConfig.getBoolean(SHOW_NEW_AD_KEY);

    if (showNewAdFormat) {
      // Load Rewarded Interstitial Ad.
      // This should load your new implemented ad unit
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Show the existing ad unit.
    }
}

Kotlin

private fun loadAdUnit() {
  var showNewAdFormat = remoteConfig.getBoolean(SHOW_NEW_AD_KEY)

  if (showNewAdFormat) {
      // Load Rewarded Interstitial Ad.
      // This should load your new implemented ad unit
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Show the existing ad unit.
    }
}

Unity

void LoadAdUnit() {
  bool showNewAdFormat =
      remoteConfig.GetValue("SHOW_NEW_AD_KEY").BooleanValue;

  if (showNewAdFormat) {
    // Load Rewarded Interstitial Ad (new implemented ad unit)
    // per AdMob instructions (the first step of this tutorial).
  } else {
    // Show the existing ad unit.
  }
}

Dodaj inne weryfikacje wartości parametru

W kodzie aplikacji są inne obszary, w których należy sprawdzić wartość tego parametru Remote Config, aby móc wyświetlać odpowiednią jakość reklamy. Możesz np. określić, czy ponownie wczytywać reklamę po tym, jak użytkownik zakończy oglądanie poprzedniej.

Wywołania związane z pobieraniem i aktywowaniem powinny być wykonane najpierw, aby umożliwić pobranie ewentualnych zmian wartości parametrów, np. gdy postanowisz zakończyć dotychczasowy eksperyment lub utworzyć nowy.

W tym miejscu możesz sprawdzić wartość parametru, używając następujących wywołań:

Swift

remoteConfig["showNewAdKey"].boolValue

Objective-C

self.remoteConfig[@"SHOW_NEW_AD_KEY"].boolValue;

Java

mFirebaseRemoteConfig.getBoolean(SHOW_NEW_AD_KEY)

Kotlin

remoteConfig.getBoolean(SHOW_NEW_AD_KEY)

Unity

remoteConfig.GetValue("SHOW_NEW_AD_KEY").BooleanValue

Te wywołania zawsze zwracają tę samą wartość dla instancji aplikacji w zależności od tego, czy znajduje się ona w grupie kontrolnej czy w grupie testującej nowy wariant reklamy (chyba że w konsoli Firebase pojawiły się zmiany, które zostały pobrane i aktywowane w poprzednich wywołaniach).




Krok 2. Skonfiguruj test A/B w Firebasekonsoli Krok 4. Rozpocznij test A/B i sprawdź jego wyniki