Schritt 3: Remote Config-Parameterwerte im App-Code verarbeiten
Einführung: Optimieren AdMob Anzeigenhäufigkeit mit Firebase |
Schritt 1: Mit AdMob neue Anzeigenblockvarianten für Tests erstellen |
Schritt 2: A/B-Test in der Firebase-Konsole einrichten |
Schritt 3: Remote Config-Parameterwerte im Code Ihrer App verarbeiten |
Schritt 4: Starten A/B-Test und die Testergebnisse in der Firebase-Konsole |
Schritt 5: Entscheiden, ob Sie das neue Anzeigenformat einführen möchten |
Am Ende des letzten Schritts haben Sie einen Remote Config-Parameter erstellt.
(INTERSTITIAL_AD_KEY
). In diesem Schritt fügen Sie die Logik in den Code Ihrer App ein
basierend auf dem Wert dieses Parameters festlegen,
was Ihre App anzeigen soll.
Erforderliche SDKs hinzufügen
Bevor Sie Remote Config in Ihrem Anwendungscode verwenden, fügen Sie die beiden Parameter Remote Config SDK und das Firebase SDK für Google Analytics, um Ihre Projekt-Build-Dateien.
Swift
Fügen Sie der Podfile-Datei die folgenden Pods hinzu und installieren Sie sie:
pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'
Objective-C
Fügen Sie der Podfile-Datei die folgenden Pods hinzu und installieren Sie sie:
pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'
Android
Fügen Sie der Datei build.gradle
die folgenden Bibliotheksabhängigkeiten hinzu:
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'
Einheit
Laden Sie das Firebase Unity SDK herunter, installieren Sie es und fügen Sie dann das folgende Unity hinzu: Pakete zu Ihrem Projekt hinzu:
FirebaseAnalytics.unitypackage
FirebaseRemoteConfig.unitypackage
Remote Config-Instanz konfigurieren
Konfigurieren Sie zur Verwendung der Parameterwerte für Remote Config die Remote Config-Instanz so eingerichtet sind, dass neue Werte für den Client-Anwendungsinstanz.
In diesem Beispiel ist Remote Config so konfiguriert, dass nach einem neuen Parameter gesucht wird. Werte einmal pro Stunde.
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)
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");
}
Remote Config abrufen und aktivieren
Rufen Sie die Remote Config-Parameter ab und aktivieren Sie sie, damit die Anwendung beginnen kann, die neuen Parameterwerte.
Sie sollten diesen Aufruf so früh wie möglich in der Ladephase Ihrer App ausführen, da er asynchron ist und Sie den Remote Config-Wert vorab abrufen müssen, damit Ihre App weiß, welche Anzeige präsentiert werden soll.
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()
}
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 kann jetzt den von Ihnen erstellten Parameter Remote Config verarbeiten. der A/B-Testeinrichtung weiter oben in dieser Anleitung.
Parameterwert Remote Config verwenden
Verwenden Sie den vorab abgerufenen Wert Remote Config in der Funktion loadAdUnit()
, um
festlegen, welche Variante für die Anzeigenhäufigkeit für diese App-Instanz verwendet werden soll.
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
}
})
}
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);
}
Weitere Überprüfungen des Parameterwerts hinzufügen
Es gibt weitere Bereiche in Ihrem Anwendungscode, in denen Sie die Remote Config-Parameters ein, um festzulegen, welche Anzeige geladen. Sie können z. B. entscheiden, ob eine Anzeige neu geladen werden soll, nachdem der Nutzer die aktuelle Anzeige vollständig wiedergegeben hat.
Die Abruf- und Aktivierungsaufrufe sollten zuerst erfolgen, um eventuelle Parameterwerte abzurufen Änderungen vornehmen, z. B. wenn Sie einen Test beenden oder neu erstellen
Dort können Sie den Wert für den Parameter jederzeit mithilfe der Methode folgenden Aufrufen:
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)
Einheit
remoteConfig.GetValue("INTERSTITIAL_AD_KEY").StringValue
Diese Aufrufe geben immer den gleichen Wert für eine Anwendungsinstanz zurück, je nachdem, ob es in die Kontrollgruppe oder in eine der neuen Anzeigenvariantengruppen aufgenommen wurde, es sei denn, in der Firebase-Konsole wurden Änderungen vorgenommen, die abgerufen und in den vorherigen Aufrufen aktiviert.
Firebase-Konsole ein. Schritt 2: Richten Sie einen A/B-Test in der Schritt 4: A/B-Test starten und Testergebnisse prüfen