3. adım: Uygulamanızın kodunda Remote Config parametre değerlerini işleyin
Giriş: Firebase'i kullanarak AdMob reklam sıklığını optimize etme |
1. Adım: Test etmek üzere yeni reklam birimi varyantları oluşturmak için AdMob'u kullanın |
2. Adım: Firebase konsolunda bir A/B testi oluşturun |
3. Adım: Uygulamanızın kodundaki Remote Config parametre değerlerini işleyin |
4. Adım: A/B testini başlatın ve Firebase konsolunda test sonuçlarını inceleyin |
5. Adım: Yeni reklam biçiminin kullanıma sunulup sunulmayacağına karar verin |
Son adımın sonunda bir Remote Config parametresi (INTERSTITIAL_AD_KEY
) oluşturdunuz. Bu adımda, söz konusu parametrenin değerine göre uygulamanızda ne göstermesi gerektiğine dair mantığı uygulamanızın koduna eklersiniz.
Gerekli SDK'ları ekleyin
Uygulama kodunuzda Remote Config'i kullanmadan önce proje derleme dosyalarınıza hem Remote Config SDK'yı hem de Google Analytics için Firebase SDK'sını ekleyin.
Swift
Aşağıdaki kapsülleri kapsül dosyanıza ekleyin ve yükleyin:
pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'
Objective-C
Aşağıdaki kapsülleri kapsül dosyanıza ekleyin ve yükleyin:
pod 'Google-Mobile-Ads-SDK'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'
Android
build.gradle
dosyanıza şu kitaplık bağımlılıklarını ekleyin:
implementation 'com.google.android.gms:play-services-ads:23.2.0'
implementation 'com.google.firebase:firebase-analytics:22.0.2'
implementation 'com.google.firebase:firebase-config:22.0.0'
Unity
Firebase Unity SDK'yı indirip yükleyin, ardından projenize aşağıdaki Unity paketlerini 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ğerleri 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.
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)
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");
}
Remote Config'i getirme ve etkinleştirme
Yeni parametre değerlerini kullanmaya başlayabilmesi için Remote Config parametrelerini getirin ve etkinleştirin.
Bu çağrı eşzamansız olduğundan ve uygulamanızın hangi reklamın gösterileceğini bilmesi için Remote Config değerinin önceden getirilmesi gerektiğinden bu çağrıyı uygulamanızın yükleme aşamasında mümkün olduğunca erken yapmak istersiniz.
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()
}
Unity
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ğiticinin önceki 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ığı varyantının gösterilmesi gerektiğini belirlemek için loadAdUnit()
işlevinde önceden getirilen Remote Config değerini kullanın.
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
}
})
}
Unity
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 ekleme
Uygulama kodunuzda, hangi reklam deneyiminin yükleneceğini belirlemek için 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 bitirdikten sonra bir reklamın yeniden yüklenip yüklenmeyeceğine karar verebilirsiniz.
Parametre değeri değişikliklerini almak için önce getirme ve etkinleştirme çağrıları yapılmalıdır (örneğin, sonlandırmaya veya yeni bir deneme oluşturmaya karar verdiğinizde).
Buradan, aşağıdaki çağrıları kullanarak parametrenin değerini istediğiniz zaman kontrol edebilirsiniz:
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)
Unity
remoteConfig.GetValue("INTERSTITIAL_AD_KEY").StringValue
Firebase konsolunda önceki çağrılarda getirilen ve etkinleştirilen herhangi bir değişiklik yapılmadığı sürece, bu çağrılar kontrol grubuna mı yoksa yeni reklam varyantı gruplarından birine mi yerleştirildiğine bağlı olarak bir uygulama örneği için her zaman aynı değeri döndürür.
2. adım: Firebase konsolunda bir A/B testi oluşturun4. adım: A/B testini başlatın ve test sonuçlarını inceleyin