3. Adım: Uygulamanızın kodundaki Remote Config parametre değerlerini işleyin
Giriş: Firebase'i kullanarak AdMob reklam sıklığını optimize edin |
1. Adım: Test amaçlı yeni reklam birimi çeşitleri oluşturmak için AdMob'u kullanın |
2. Adım: Firebase konsolunda bir A/B testi ayarlayın |
3. Adım: Uygulamanızın kodundaki Remote Config parametre değerlerini işleyin |
4. Adım: A/B testini başlatın ve test sonuçlarını Firebase konsolunda inceleyin |
5. Adım: Yeni reklam biçimini kullanıma sunup sunmayacağınıza karar verin |
Son adımın sonunda bir Remote Config parametresi ( INTERSTITIAL_AD_KEY
) oluşturdunuz. Bu adımda, uygulamanızın o parametrenin değerine göre ne göstermesi gerektiğine ilişkin mantığı uygulamanızın koduna ekleyeceksiniz.
Gerekli SDK'ları ekleyin
Uygulama kodunuzda Remote Config'i kullanmadan önce, proje derleme dosyalarınıza hem Remote Config SDK'sını hem de Google Analytics için Firebase SDK'sını ekleyin.
Süratli
Pod dosyanıza aşağıdaki bölmeleri ekleyin ve yükleyin:
pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'
Amaç-C
Pod dosyanıza aşağıdaki bölmeleri ekleyin ve yükleyin:
pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'
Android
build.gradle
dosyanıza aşağıdaki kütüphane bağımlılıklarını ekleyin:
implementation 'com.google.android.gms:play-services-ads:23.0.0'
implementation 'com.google.firebase:firebase-analytics:21.6.1'
implementation 'com.google.firebase:firebase-config:21.6.3'
Birlik
Firebase Unity SDK'yı indirip yükleyin, ardından aşağıdaki Unity paketlerini projenize ekleyin:
-
FirebaseAnalytics.unitypackage
-
FirebaseRemoteConfig.unitypackage
Remote Config örneğini yapılandırma
Remote Config parametre değerlerini kullanmak için Remote Config örneğini, istemci uygulaması örneği için yeni değerler getirecek şekilde yapılandırın.
Bu örnekte Remote Config, yeni parametre değerlerini saatte bir kontrol edecek şekilde yapılandırılmıştır.
Süratli
remoteConfig = RemoteConfig.remoteConfig()
let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 3600
remoteConfig.configSettings = settings
Amaç-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)
Birlik
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'i getir ve etkinleştir
Yeni parametre değerlerini kullanmaya başlayabilmesi için Remote Config parametrelerini getirip etkinleştirin.
Bu çağrı eşzamansız olduğundan ve uygulamanızın hangi reklamı göstereceğini bilmesi için Remote Config değerinin önceden getirilmesi gerekeceğinden, bu çağrıyı uygulamanızın yükleme aşamasında mümkün olduğunca erken yapmak isteyeceksiniz.
Süratli
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()
}
Amaç-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()
}
Birlik
remoteConfig.FetchAndActivateAsync().ContinueWithOnMainThread(task => {
if (task.IsFaulted) {
Debug.LogWarning("Config params failed to update");
} else {
Debug.Log("Config params updated: " + task.Result);
}
LoadAdUnit();
});
Uygulamanız artık bu eğitimin başlarındaki A/B testi kurulumu sırasında oluşturduğunuz Remote Config parametresini işlemeye hazır.
Remote Config parametre değerini kullanın
Bu uygulama örneği için hangi reklam sıklığı değişkeninin gösterilmesi gerektiğini belirlemek üzere loadAdUnit()
işlevinde önceden getirilen Remote Config değerini kullanın.
Süratli
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.
Amaç-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
}
})
}
Birlik
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);
}
Parametre değeri için başka kontroller ekleyin
Hangi reklam deneyiminin yükleneceğini belirlemek için uygulama kodunuzda bu Remote Config parametresinin değerini kontrol etmeniz gereken başka alanlar da vardır. Örneğin, kullanıcı mevcut reklamı görüntülemeyi tamamladıktan sonra bir reklamın yeniden yüklenip yüklenmeyeceğine karar verebilirsiniz.
Herhangi bir parametre değeri değişikliğini almak için önce getir ve etkinleştir çağrıları yapılmalıdır (örneğin, yeni bir denemeyi sonlandırmaya veya oluşturmaya karar verirseniz).
Buradan, aşağıdaki çağrıları kullanarak parametrenin değerini her zaman kontrol edebilirsiniz:
Süratli
remoteConfig["INTERSTITIAL_AD_KEY"].stringValue
Amaç-C
self.remoteConfig[@"INTERSTITIAL_AD_KEY"].stringValue;
Java
mFirebaseRemoteConfig.getString(INTERSTITIAL_AD_KEY)
Kotlin+KTX
remoteConfig.getString(INTERSTITIAL_AD_KEY)
Birlik
remoteConfig.GetValue("INTERSTITIAL_AD_KEY").StringValue
Bu çağrılar, Firebase konsolunda önceki çağrılarda getirilip etkinleştirilen herhangi bir değişiklik yapılmadığı sürece, bir uygulama örneğinin kontrol grubuna mı yoksa yeni reklam varyantı gruplarından birine mi yerleştirildiğine bağlı olarak her zaman aynı değeri döndürecektir.
2. Adım : Firebase konsolunda bir A/B testi ayarlayın4. Adım : A/B testini başlatın ve test sonuçlarını inceleyin