Eğitim: AdMob, Google Analytics ve Firebase'i kullanarak karma para kazanma modelini optimize edin

3. Adım: Belirli reklam deneyimlerini göstermek için Firebase Remote Config'ü ayarlayın


Giriş: AdMob, Google Analytics ve Firebase'i kullanarak karma para kazanma yöntemini optimize edin
1. Adım: Görüntülü reklamlar için yeni reklam birimleri oluşturmak üzere AdMob simgesini kullanın
2. Adım: Google Analytics'i ayarlayın

3. Adım: Belirli reklam deneyimlerini göstermek için Firebase Remote Config


Son adımın sonunda Google Analytics kitleleri hakkında bilgi edinmiştiniz. Bu adımda, "Satın Alanlar" kitlesinden yararlanan bir Remote Config doğru/yanlış kontrollü parametre (ad_control_switch olarak adlandırılır) oluşturursunuz. Ardından, uygulamanızın bu parametrenin değerine göre ne göstermesi gerektiğine dair mantığı uygulamanızın koduna eklersiniz.

Firebase konsolunda Remote Config parametrelerini ve koşullarını ayarlama

  1. Firebase konsolunda Firebase projenizi açın.

  2. Soldaki bölmede Etkileşim bölümünü genişletin ve ardından Uzak Yapılandırma'yı seçin.

  3. Yapılandırma oluştur'u (veya daha önce Remote Config kullandıysanız Parametre ekle'yi) tıklayın.

  4. Parametre oluştur panelinde aşağıdaki adımları tamamlayın:

    1. Parametre adı alanına ad_control_switch yazın.

    2. Data type açılır menüsünden Mantıksal'ı seçin.

    3. Yeni oluştur'u tıklayın ve ardından Yeni koşul oluştur'u seçin.

  5. Yeni koşul tanımla iletişim kutusunda aşağıdaki adımları tamamlayın:

    1. Ad alanına Purchasers Group (veya koşul için kolayca tanımlanabilen başka bir ad) girin.

    2. Şu durumlarda geçerlidir: açılır menüsünden Kullanıcı kitleleri'ni seçin.

    3. Kitle seçin açılır menüsünden Alıcılar'ı seçin.

    4. Koşulu kaydet'i tıklayın.

  6. Parametre oluştur paneline geri dönüp aşağıdaki adımları tamamlayın:

    1. Alıcı Grubu'nun Değeri için false'u seçin.

    2. Varsayılan değer için true (doğru) seçeneğini belirleyin.

  7. Kaydet'i ve ardından Değişiklikleri yayınla'yı tıklayın.

Bu yapılandırma, kullanıcının "Satın Alanlar" kitlesinde olup olmadığını (yani ödeme yapan bir kullanıcı olup olmadığını) kontrol eder:

  • Kullanıcı "Satın Alanlar" kitlesindeyse Remote Config, ad_control_switch parametresi için false değerini döndürür.

  • Kullanıcı "Satın Alanlar" kitlesinde değilse Remote Config, ad_control_switch parametresi için true değerini döndürür.

Aşağıdaki adımlarda, bu parametre değerlerini işlemek için uygulamanıza Remote Config uygulayacaksınız.

Remote Config SDK'sını uygulamanıza ekleyin

Uygulama kodunuzda Remote Config kullanmadan önce Remote Config SDK'sını uygulamanızın kod tabanına ekleyin. Uygulamanızda bu eğitimdeki önceki adımlardan Google Mobile Ads (AdMob) SDK'sının ve Firebase için Google Analytics SDK'sının zaten yüklü olması gerekir.

Remote Config kapsülünü podfile dosyanıza ekleyin ve yükleyin:

pod 'Firebase/RemoteConfig'

Remote Config kitaplık bağımlılığını build.gradle dosyanıza ekleyin:

implementation 'com.google.firebase:firebase-config:22.1.0'

Remote Config eklentisini yüklemek için Flutter projenizin kökünden aşağıdaki komutu çalıştırın:

flutter pub add firebase_remote_config

En son Firebase Unity SDK'sını indirip yükleyin ve ardından Remote Config paketini projenize ekleyin:
FirebaseRemoteConfig.unitypackage

Remote Config örneğini yapılandırma

Uygulamanızın Remote Config parametre değerlerini kullanabilmesi için Remote Config örneğini, istemci uygulaması örneği için yeni değerleri alacak şekilde yapılandırın.

Bu örnekte Remote Config, her saatte bir yeni parametre değerlerini kontrol edecek şekilde yapılandırılmıştır.

remoteConfig = RemoteConfig.remoteConfig()
let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 3600
remoteConfig.configSettings = settings
remoteConfig = Firebase.remoteConfig
val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
}
remoteConfig.setConfigSettingsAsync(configSettings)
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
remoteConfig = FirebaseRemoteConfig.instance;
  final configSettings = FirebaseRemoteConfigSettings(
    minimumFetchInterval: Duration(hours: 1),
  );
  await remoteConfig.setConfigSettings(configSettings);

  // Use the `onConfigUpdated` callback to listen for changes to the config settings.
  remoteConfig.onConfigUpdated.listen((_) {
    print('Config settings confirmed');
  });
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 parametresini alın ve etkinleştirin.

Bu çağrı eşzamansız olduğundan ve uygulamanızın reklam gösterip göstermeyeceğini bilmesi için Remote Config değerinin önceden getirilmiş olması gerektiğinden, bu çağrıyı uygulamanızın yükleme aşamasında mümkün olduğunca erken yapmak istersiniz.

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()
}
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()
        }
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();
            }
        });
remoteConfig = FirebaseRemoteConfig.instance;

// Fetch and activate the latest Remote Config values.
final updated = await remoteConfig.fetchAndActivate();

// Check if the config params were updated successfully.
if (updated) {
  print('Config params updated');
} else {
  print('Config params failed to update');
}

// Load the ad unit.
_loadAdUnit();
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 adımda daha önce oluşturduğunuz Remote Config parametresini işlemeye hazır.

Remote Config parametre değerini kullanın

Uygulama örneğinin aşağıdakilerden birini yapıp yapmayacağını belirlemek için loadAdUnit() işlevinde önceden getirilmiş Remote Config değerini kullanın:

  • ad_control_switch parametre değeri true olarak çözülür: Geçiş reklamını göster (kullanıcı ödeme yapmayan bir kullanıcı olduğu için).

  • ad_control_switch parametre değeri false olarak çözümlenir: Reklamı göstermeyin (kullanıcı ödeme yapan bir kullanıcı olduğu için).

private func loadAdUnit() {
  let showAds = remoteConfig["ad_control_switch"].boolValue

  if showAds {
    // Load interstitial ad (implemented ad unit)
    // per AdMob instructions (the first step of this tutorial).
  } else {
    // Don't show ads.
  }
}
private fun loadAdUnit() {
  var showAds = remoteConfig.getBoolean(ad_control_switch)

  if (showAds) {
      // Load interstitial ad (implemented ad unit)
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Don't show ads.
    }
}
private void loadAdUnit() {
    boolean showAds =
      mFirebaseRemoteConfig.getBoolean(ad_control_switch);

    if (showAds) {
      // Load interstitial ad (implemented ad unit)
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Don't show ads.
    }
}
void _loadAdUnit() {
  bool showAds = remoteConfig.getBool(ad_control_switch);

  if (showAds) {
    // Load interstitial ad (implemented ad unit)
    // per AdMob instructions (the first step of this tutorial).
  } else {
    // Don't show ads.
  }
}
void LoadAdUnit() {
  bool showAds =
      remoteConfig.GetValue("ad_control_switch").BooleanValue;

  if (showAds) {
    // Load interstitial ad (implemented ad unit)
    // per AdMob instructions (the first step of this tutorial).
  } else {
    // Don't show ads.
  }
}

Uygulamanızı yayınlama

Reklamın gösterilip gösterilmeyeceğine dair mantık kod tabanınızda olduğundan, uygulamanızın bu mantığı içeren yeni bir sürümünü yayınlamanız gerekir.

Bu eğitimdeki adımları uyguladıysanız uygulamanız, kullanıcılarınıza hemen özelleştirilmiş bir uygulama içi reklam deneyimi sunmaya başlar. Reklam gelirinizi hem AdMob hesabınızda hem de Google Analytics kontrol panellerinde (Firebase konsolunda veya Google Analytics kullanıcı arayüzünde) izleyebilirsiniz.


Hepsi bu kadar. AdMob, Google Analytics ve Firebase'i kullanarak karma para kazanma özelliğini optimize etmeyle ilgili eğitim içeriğini tamamladınız.




2. Adım: Google Analytics'i ayarlayın