Firebase Remote Config'i kullanmaya başlayın


Firebase Remote Config'i kullanarak uygulamanızdaki parametreleri tanımlayabilir ve bunların değerlerini bulutta güncelleyebilirsiniz. Bu sayede uygulama güncellemesi dağıtmadan uygulamanızın görünümünü ve davranışını değiştirebilirsiniz. Bu kılavuz, başlangıç adımlarında size yol gösterir ve firebase/quickstart-android GitHub deposundan klonlamak veya indirmek için kullanabileceğiniz bazı örnek kodlar sunar.

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

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

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

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

    Ayrıca, Analytics kurulumunu yaparken 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.1.1"))
    
        // 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 her zaman uyumlu sürümlerini kullanır.

    (Alternatif) BoM'u kullanmadan Firebase kitaplığı bağımlılıklarını ekleme

    Firebase BoM'yi kullanmamayı seçerseniz her Firebase kitaplığı 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. Böylece tüm sürümlerin uyumlu olması sağlanır.

    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.0")
        implementation("com.google.firebase:firebase-analytics:22.0.2")
    }
    
    Kotlin'e özel 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üne bağlı olabilir (ayrıntılar için Bu girişimle ilgili SSS bölümüne bakın).

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

Bir Remote Config nesne örneği alın ve sık yenilemeler 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);

Singleton nesnesi, uygulama içi varsayılan parametre değerlerini depolamak, arka uçtan güncellenmiş parametre değerlerini getirmek ve getirilen değerlerin uygulamanızda ne zaman kullanılabilir olacağını kontrol etmek için kullanılır.

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

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

Remote Config nesnesinde uygulama içi varsayılan parametre değerleri ayarlayabilirsiniz. Böylece, uygulamanız Remote Config arka ucuna bağlanmadan önce amaçlandığı gibi davranır ve arka uçta hiçbiri ayarlanmazsa varsayılan değerler kullanılabilir.

  1. Uygulamanızın res/xml klasöründe depolanan bir Harita nesnesi veya XML kaynak dosyası kullanarak bir dizi parametre adı ve varsayılan parametre değerleri 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 konsolu

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

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

  2. Bu değerleri, aşağıda gösterildiği gibi setDefaultsAsync(int) kullanarak 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 kullanılacak parametre değerlerini alın

Artık Remote Config nesnesinden parametre değerleri alabilirsiniz. Arka uçta değerler ayarlar, bunları getirir ve etkinleştirirseniz bu değerler uygulamanız tarafından kullanılabilir. Aksi takdirde, setDefaultsAsync(int) kullanılarak yapılandırılan uygulama içi parametre değerleri elde edersiniz. Bu değerleri almak için aşağıda listelenen ve uygulamanızın beklediği veri türüyle eşleşen yöntemi çağırın ve parametre anahtarını bağımsız değişken olarak sağlayın:

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

Firebase konsolunu veya Remote Config arka uç API'lerini kullanarak uygulama içi değerleri istediğiniz koşullu mantığa veya kullanıcı hedeflemesine göre 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 konsolunda uygulanacak adımlar açıklanmaktadır.

  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. Parametreleri, uygulamanızda tanımladığınız parametrelerle aynı adlara sahip olarak tanımlayın. Her parametre için bir varsayılan değer ayarlayabilir (bu değer ileride karşılık gelen uygulama içi varsayılan değeri geçersiz kılacaktır) ve koşullu değerler belirleyebilirsiniz. Daha fazla bilgi edinmek için Remote Config Parametreleri ve Koşulları bölümünü inceleyin.

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

  1. Remote Config arka ucundan parametre değerlerini getirmek için fetch() yöntemini çağırın. Arka uçta ayarladığınız değerler alınıp Remote Config nesnesinde depolanır.
  2. Getirilen parametre değerlerini uygulamanızda kullanılabilmesini sağlamak için activate() yöntemini çağırın.

    Değerleri bir çağrıda getirip etkinleştirmek istediğiniz durumlarda, Remote Config arka ucundan değer getirmek ve bunları uygulamanın kullanımına sunmak için fetchAndActivate() isteğini 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();
                }
            });

Bu güncellenen parametre değerleri uygulamanızın davranışını ve görünümünü etkilediğinden getirilen değerleri, kullanıcının uygulamanızı bir sonraki açışı gibi sorunsuz bir deneyim sağlayacak bir zamanda etkinleştirmeniz gerekir. Daha fazla bilgi ve örnek için Remote Config yükleme stratejilerine bakın.

7. adım: Güncellemeleri gerçek zamanlı olarak dinleyin

Parametre değerlerini getirdikten sonra, Remote Config arka ucundan gelen güncellemeleri dinlemek için gerçek zamanlı Remote Config'i kullanabilirsiniz. Gerçek zamanlı Remote Config, güncellemeler hazır olduğunda bağlı cihazlara sinyal gönderir ve yeni bir Remote Config sürümü yayınlamanızın ardından değişiklikleri otomatik olarak getirir.

Gerçek zamanlı güncellemeler, Android 21.3.0+ (Firebase BoM sürümü 31.2.4+) için Firebase SDK'sı tarafından desteklenir.

  1. Uygulamanızda, güncellemeleri dinlemeye başlamak ve yeni parametre değerlerini otomatik olarak getirmek için addOnConfigUpdateListener() komutunu kullanın. Güncellenen yapılandırmayı etkinleştirmek için onUpdate() geri çağırma özelliğini 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() {
                @Override
                public void onComplete(@NonNull Task task) {
                    displayWelcomeMessage();
                }
            });
        }
    
        @Override
        public void onError(FirebaseRemoteConfigException error) {
            Log.w(TAG, "Config update error with code: " + error.getCode(), error);
        }
    });
    
  2. Remote Config'inizin yeni bir sürümünü yayınladığınızda, uygulamanızı çalıştıran ve değişiklikleri dinleyen cihazlar ConfigUpdateListener yöntemini çağırır.

Kısıtlama

Bir uygulama kısa bir süre içinde çok fazla kez getirme yaparsa getirme çağrıları kısıtlanır ve SDK, FirebaseRemoteConfigFetchThrottledException değerini döndürür. SDK'nın 17.0.0 sürümünden önce sınır, 60 dakikalık bir pencerede 5 getirme isteğiydi (yeni sürümlerde daha geniş kapsamlı sınırlar geçerlidir).

Uygulama geliştirme sırasında, uygulamanızı geliştirip test ederken hızlı bir şekilde yineleme yapabilmeniz için yapılandırmaları çok sık (saatte birkaç kez) getirmek ve etkinleştirmek isteyebilirsiniz. Yapılandırma sunucuda güncellendiğinde Gerçek Zamanlı Remote Config güncellemeleri, önbelleği otomatik olarak atlar. 10 adede kadar geliştiriciye sahip bir projede hızlı iterasyon sağlamak için uygulamanızda minimum getirme aralığı (setMinimumFetchIntervalInSeconds) düşük olan bir FirebaseRemoteConfigSettings nesnesini geçici olarak ayarlayabilirsiniz.

Remote Config için varsayılan minimum getirme aralığı 12 saattir. Bu, gerçekte kaç getirme çağrısının yapıldığına bakılmaksızın, yapılandırmaların 12 saatlik bir süre içinde arka uçtan birden fazla kez getirilmeyeceği anlamına gelir. Minimum getirme aralığı özellikle aşağıdaki sırayla belirlenir:

  1. fetch(long) hücresindeki parametre
  2. FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long) hücresindeki parametre
  3. Varsayılan değer olan 12 saat

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

Sonraki adımlar

Henüz yapmadıysanız Remote Config kullanım alanlarını inceleyin ve aşağıdakiler dahil olmak üzere bazı temel kavramlara ve gelişmiş strateji belgelerine göz atın: