Firebase Remote Config'i kullanmaya başlayın


Uygulamanızda parametreleri tanımlamak ve değerlerini bulutta güncellemek için Firebase Remote Config'ü kullanabilirsiniz. Böylece, uygulama güncellemesi dağıtmadan uygulamanızın görünümünü ve davranışını değiştirebilirsiniz. Bu kılavuzda, başlangıç adımlarında size yol gösterilir ve bazı örnek kodlar sağlanır. Bu kodların tümü firebase/quickstart-android GitHub deposundan klonlanabilir veya indirilebilir.

1. adım: Firebase ve Remote Config SDK'sını uygulamanıza ekleyin

  1. Henüz yapmadıysanız Firebase'i Android projenize ekleyin.

  2. Remote Config için Google Analytics, uygulama örneklerinin kullanıcı özelliklerine ve kitlelere koşullu olarak hedeflenmesi amacıyla gereklidir. Projenizde Google Analytics'yi etkinleştirdiğinizden emin olun.

  3. Modül (uygulama düzeyi) Gradle dosyanıza (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle) Android için Remote Config kitaplığının bağımlılığını ekleyin. Kitaplık sürümlendirmesini kontrol etmek için Firebase Android BoM simgesini kullanmanızı öneririz.

    Ayrıca, Analytics'ü ayarlama kapsamında uygulamanıza Google Analytics için Firebase SDK'sını da eklemeniz gerekir.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.6.0"))
    
        // Add the dependencies for the Remote Config and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-config")
        implementation("com.google.firebase:firebase-analytics")
    }
    

    Firebase Android BoM kullanıldığında uygulamanız Firebase Android kitaplıklarının daima uyumlu sürümlerini kullanır.

    (Alternatif) BoM

    Firebase BoM kullanmamayı seçerseniz her Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

    Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM'ı kullanmanızı önemle tavsiye ederiz. Bu, tüm sürümlerin uyumlu olmasını sağlar.

    dependencies {
        // Add the dependencies for the Remote Config and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-config:22.0.1")
        implementation("com.google.firebase:firebase-analytics:22.1.2")
    }
    
    Kotlin'e özgü bir kitaplık modülü mü arıyorsunuz? Ekim 2023'ten (Firebase BoM 32.5.0) itibaren hem Kotlin hem de Java geliştiricileri ana kitaplık modülünden yararlanabilir (ayrıntılar için bu girişimle ilgili SSS bölümüne bakın).

2. Adım: Remote Config tekil nesnesi alın

Remote Config nesne örneği oluşturun ve yenileme işleminin sık sık gerçekleşmesi için minimum getirme aralığını ayarlayın:

Kotlin+KTX

val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
}
remoteConfig.setConfigSettingsAsync(configSettings)

Java

FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

Tekil nesne, uygulama içi varsayılan parametre değerlerini depolamak, arka uçtan güncellenmiş parametre değerlerini almak ve alınan değerlerin uygulamanıza ne zaman sunulacağını kontrol etmek için kullanılır.

Geliştirme sırasında, minimum getirme aralığını nispeten düşük bir değere ayarlamanız önerilir. Daha fazla bilgi için Düşük hızlandırma bölümüne bakın.

3. Adım: Uygulama içi varsayılan parametre değerlerini ayarlayın

Uygulamanızın Remote Config arka ucuna bağlanmadan önce istenen şekilde davranması ve arka uçta ayarlanmamışsa varsayılan değerlerin kullanılabilmesi için Remote Config nesnesinde uygulama içi varsayılan parametre değerleri ayarlayabilirsiniz.

  1. Uygulamanızın res/xml klasöründe depolanan bir Map nesnesi veya XML kaynak dosyası kullanarak bir dizi parametre adı ve varsayılan parametre değeri tanımlayın. Remote Config hızlı başlangıç örnek uygulaması, varsayılan parametre adlarını ve değerlerini tanımlamak için bir XML dosyası kullanır.

    Remote Config arka uç parametre değerlerini zaten yapılandırdıysanız tüm varsayılan değerleri içeren oluşturulmuş bir XML dosyasını indirip uygulamanızın res/xml dizinine kaydedebilirsiniz:

    REST

    curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=XML -o remote_config_defaults.xml
    

    Firebase konsol

    1. Parametreler sekmesinde Menü'yü açın ve Varsayılan değerleri indir'i seçin.

    2. İstendiğinde Android için.xml'i etkinleştirin, ardından Dosyayı indir'i tıklayın.

  2. Aşağıda gösterildiği gibi setDefaultsAsync(int) kullanarak bu değerleri Remote Config nesnesine ekleyin:

    Kotlin+KTX

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

4. adım: Uygulamanızda kullanacağınız parametre değerlerini alın

Artık Remote Config nesnesinden parametre değerleri alabilirsiniz. Arka uçta ayarladığınız, aldığınız ve etkinleştirdiğiniz değerler uygulamanızda kullanılabilir. Aksi takdirde, setDefaultsAsync(int) kullanılarak yapılandırılan uygulama içi parametre değerlerini alırsınız. Bu değerleri almak için, uygulamanızın beklediği veri türüyle eşleşen ve parametre anahtarını bağımsız değişken olarak sağlayan aşağıda listelenen yöntemi çağırın:

5. Adım: Remote Config arka ucunda parametre değerlerini ayarlayın

Firebase konsolunu veya Remote Config arka uç API'lerini kullanarak, istediğiniz koşullu mantığa veya kullanıcı hedeflemesine göre uygulama içi değerleri geçersiz kılan yeni sunucu tarafı varsayılan değerleri oluşturabilirsiniz. Bu bölümde, bu değerleri oluşturmak için Firebase konsol adımlarından bahsedilmektedir.

  1. Firebase konsolunda projenizi açın.
  2. Remote Config kontrol panelini görüntülemek için menüden Remote Config'i seçin.
  3. Uygulamanızda tanımladığınız parametrelerle aynı ada sahip parametreler tanımlayın. Her parametre için bir varsayılan değer (sonuçta ilgili uygulama içi varsayılan değeri geçersiz kılar) ve koşullu değerler de ayarlayabilirsiniz. Daha fazla bilgi edinmek için Remote Config Parametreleri ve Koşulları başlıklı makaleyi inceleyin.

6. adım: Değerleri getirin ve etkinleştirin

  1. Remote Config arka uçtan parametre değerlerini almak için fetch() yöntemini çağırın. Arka uçta ayarladığınız tüm değerler getirilir ve Remote Config nesnesinde saklanır.
  2. Getirilen parametre değerlerini uygulamanızda kullanılabilir hale getirmek için activate() yöntemini çağırın.

    Değerleri tek bir çağrıda almak ve etkinleştirmek istediğiniz durumlarda, Remote Config arka uçtan değer almak ve bunları uygulamaya sunmak için bir fetchAndActivate() isteği kullanabilirsiniz:

    Kotlin+KTX

    remoteConfig.fetchAndActivate()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val updated = task.result
                Log.d(TAG, "Config params updated: $updated")
                Toast.makeText(
                    this,
                    "Fetch and activate succeeded",
                    Toast.LENGTH_SHORT,
                ).show()
            } else {
                Toast.makeText(
                    this,
                    "Fetch failed",
                    Toast.LENGTH_SHORT,
                ).show()
            }
            displayWelcomeMessage()
        }

    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);
                        Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
                                Toast.LENGTH_SHORT).show();
    
                    } else {
                        Toast.makeText(MainActivity.this, "Fetch failed",
                                Toast.LENGTH_SHORT).show();
                    }
                    displayWelcomeMessage();
                }
            });

Güncellenen bu parametre değerleri uygulamanızın davranışını ve görünümünü etkilediği için alınan değerleri, kullanıcınızın sorunsuz bir deneyim yaşamasını sağlayacak bir zamanda (ör. kullanıcı uygulamanızı bir sonraki açışında) etkinleştirmeniz gerekir. Daha fazla bilgi ve örnek için Remote Config yükleme stratejilerine bakın.

7. adım: Güncellemeleri anlık olarak dinleyin

Parametre değerlerini aldıktan sonra, Remote Config arka ucundan güncelleme dinlemek için gerçek zamanlı Remote Config kullanabilirsiniz. Güncellemeler kullanıma sunulduğunda bağlı cihazlara Remote Config anlık sinyal gönderir ve yeni bir Remote Config sürümü yayınladıktan sonra değişiklikleri otomatik olarak getirir.

Gerçek zamanlı güncellemeler, Android v21.3.0 ve sonraki sürümler (Firebase BoM v31.2.4 ve sonraki sürümler) için Firebase SDK'sı tarafından desteklenir.

  1. Uygulamanızda güncellemeleri dinlemeye başlamak ve yeni parametre değerlerini otomatik olarak almak için addOnConfigUpdateListener() simgesini kullanın. Güncellenen yapılandırmayı etkinleştirmek için onUpdate() geri çağırma işlevini uygulayın.

    Kotlin+KTX

    remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener {
        override fun onUpdate(configUpdate : ConfigUpdate) {
           Log.d(TAG, "Updated keys: " + configUpdate.updatedKeys);
    
           if (configUpdate.updatedKeys.contains("welcome_message")) {
               remoteConfig.activate().addOnCompleteListener {
                   displayWelcomeMessage()
               }
           }
        }
    
        override fun onError(error : FirebaseRemoteConfigException) {
            Log.w(TAG, "Config update error with code: " + error.code, error)
        }
    })
    

    Java

    mFirebaseRemoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() {
        @Override
        public void onUpdate(ConfigUpdate configUpdate) {
            Log.d(TAG, "Updated keys: " + configUpdate.getUpdatedKeys());
            mFirebaseRemoteConfig.activate().addOnCompleteListener(new OnCompleteListener<Boolean>() {
                @Override
                public void onComplete(@NonNull Task<Boolean> task) {
                    displayWelcomeMessage();
                }
            });
        }
        @Override
        public void onError(FirebaseRemoteConfigException error) {
            Log.w(TAG, "Config update error with code: " + error.getCode(), error);
        }
    });
    
  2. Remote Config uygulamanızın yeni bir sürümünü yayınladığınızda, uygulamanızı çalıştıran ve değişiklikleri dinleyen cihazlar ConfigUpdateListener işlevini çağırır.

Kısıtlama

Bir uygulama kısa süre içinde çok fazla getirme işlemi yaparsa getirme çağrıları sınırlanır ve SDK FirebaseRemoteConfigFetchThrottledException döndürür. SDK 17.0.0 sürümünden önce sınır 60 dakikalık bir zaman aralığında 5 getirme isteğiydi (daha yeni sürümlerde daha fazla izin verilen sınırlar vardır).

Uygulamanızı geliştirip test ederken hızlı bir şekilde iterasyon yapabilmek için uygulama geliştirme sırasında yapılandırmaları çok sık (saatte birkaç kez) getirip etkinleştirmek isteyebilirsiniz. Gerçek zamanlı Remote Config güncellemeleri, yapılandırma sunucu üzerinde güncellendiğinde önbelleği otomatik olarak atlar. 10'a kadar geliştiricinin bulunduğu bir projede hızlı iterasyon sağlamak için uygulamanızda minimum getirme aralığı (setMinimumFetchIntervalInSeconds) düşük bir FirebaseRemoteConfigSettings nesnesi geçici olarak ayarlayabilirsiniz.

Remote Config için varsayılan minimum getirme aralığı 12 saattir. Bu, aslında kaç getirme çağrısı yapıldığından bağımsız olarak yapılandırmaların 12 saatlik bir zaman aralığında arka uçtan bir defadan fazla getirilmeyeceği anlamına gelir. Özellikle, minimum getirme aralığı aşağıdaki sırayla belirlenir:

  1. fetch(long) parametresi
  2. FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long) parametresi
  3. Varsayılan değer 12 saattir.

Minimum getirme aralığını özel bir değere ayarlamak için FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) değerini kullanın.

Sonraki adımlar

Henüz yapmadıysanız Remote Config kullanım alanlarını inceleyin ve aşağıdakiler gibi temel kavramlar ve gelişmiş strateji dokümanlarından bazılarına göz atın: