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.unitypackageFirebaseRemoteConfig.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