Passaggio 3: gestisci i valori dei parametri di configurazione remota nel codice dell'app
Introduzione: ottimizza la frequenza degli annunci AdMob utilizzando Firebase |
Passaggio 1: utilizza AdMob per creare nuove varianti di unità pubblicitarie da testare |
Passaggio 2: imposta un test A/B nella console Firebase |
Passaggio 3: gestisci i valori dei parametri di configurazione remota nel codice dell'app |
Passaggio 4: avvia il test A/B e rivedi i risultati del test nella console Firebase |
Passaggio 5: decidi se implementare il nuovo formato dell'annuncio |
Al termine dell'ultimo passaggio, hai creato un parametro Remote Config ( INTERSTITIAL_AD_KEY
). In questo passaggio, aggiungerai la logica al codice dell'app per ciò che l'app dovrebbe visualizzare in base al valore di quel parametro.
Aggiungi gli SDK richiesti
Prima di utilizzare Remote Config nel codice dell'applicazione, aggiungi sia l'SDK Remote Config che l'SDK Firebase per Google Analytics ai file di build del progetto.
Veloce
Aggiungi e installa i seguenti pod nel tuo podfile:
pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'
Obiettivo-C
Aggiungi e installa i seguenti pod nel tuo podfile:
pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'
Java
Aggiungi le seguenti dipendenze della libreria al tuo file build.gradle
:
implementation 'com.google.android.gms:play-services-ads:22.1.0'
implementation 'com.google.firebase:firebase-analytics:21.3.0'
implementation 'com.google.firebase:firebase-config:21.4.0'
Kotlin+KTX
Aggiungi le seguenti dipendenze della libreria al tuo file build.gradle
:
implementation 'com.google.android.gms:play-services-ads:22.1.0'
implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0'
implementation 'com.google.firebase:firebase-config-ktx:21.4.0'
Unità
Scarica e installa Firebase Unity SDK, quindi aggiungi i seguenti pacchetti Unity al tuo progetto:
-
FirebaseAnalytics.unitypackage
-
FirebaseRemoteConfig.unitypackage
Configura l'istanza di configurazione remota
Per usare i valori del parametro Remote Config, configurare l'istanza di Remote Config in modo che sia configurata per recuperare nuovi valori per l'istanza dell'app client.
In questo esempio, Remote Config è configurato per controllare i nuovi valori dei parametri una volta ogni ora.
Veloce
remoteConfig = RemoteConfig.remoteConfig()
let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 3600
remoteConfig.configSettings = settings
Obiettivo-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");
}
Recupera e attiva Configurazione remota
Recupera e attiva i parametri Remote Config in modo che possa iniziare a utilizzare i nuovi valori dei parametri.
Ti consigliamo di effettuare questa chiamata il prima possibile durante la fase di caricamento dell'app perché questa chiamata è asincrona e avrai bisogno del valore Remote Config precaricato in modo che la tua app sappia quale annuncio mostrare.
Veloce
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()
}
Obiettivo-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();
});
La tua app è ora pronta per gestire il parametro Remote Config che hai creato durante il test A/B configurato in precedenza in questo tutorial.
Utilizzare il valore del parametro Configurazione remota
Utilizza il valore Remote Config precaricato nella funzione loadAdUnit()
per determinare quale variante di frequenza degli annunci deve essere mostrata per questa istanza dell'app.
Veloce
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.
Obiettivo-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);
}
Aggiungi altri controlli per il valore del parametro
Ci sono altre aree nel codice dell'applicazione in cui dovrai controllare il valore di questo parametro Remote Config per stabilire quale esperienza pubblicitaria verrà caricata. Ad esempio, puoi decidere se ricaricare un annuncio dopo che l'utente ha terminato di visualizzare quello corrente.
Le chiamate di recupero e attivazione devono essere effettuate prima per ottenere eventuali modifiche al valore dei parametri, ad esempio se si decide di terminare o creare un nuovo esperimento.
Da lì, puoi sempre controllare il valore per il parametro utilizzando le seguenti chiamate:
Veloce
remoteConfig["INTERSTITIAL_AD_KEY"].stringValue
Obiettivo-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
Queste chiamate restituiranno sempre lo stesso valore per un'istanza dell'app a seconda che sia stata inserita nel gruppo di controllo o in uno dei nuovi gruppi di varianti di annunci, a meno che non siano state apportate modifiche nella console Firebase che sono state recuperate e attivate nelle chiamate precedenti.
Passaggio 2 : imposta un test A/B nella console FirebasePassaggio 4 : avvia il test A/B e rivedi i risultati del test