Firebase Remote Config'i kullanmaya başlayın


Uygulamanızdaki parametreleri tanımlamak ve buluttaki değerlerini güncellemek için Firebase Remote Config'i kullanabilirsiniz. Böylece, 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 klonlayabileceğiniz veya indirebileceğiniz bazı örnek kodlar sağlar.

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'de, uygulama örneklerinin kullanıcı özelliklerine ve kitlelere koşullu hedeflemesi için Google Analytics gereklidir. Projenizde Google Analytics'i 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ümü oluşturmayı kontrol etmek için Firebase Android BoM'u kullanmanızı öneririz.

    Ayrıca, Analytics kurulumunun bir parçası olarak uygulamanıza Google Analytics için Firebase SDK'sını eklemeniz gerekir.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:32.8.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) Firebase kitaplığı bağımlılıklarını BoM'u kullanmadan ekleyin

    Firebase BoM'yi 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 tüm sürümlerin uyumlu olmasını sağlamak için BoM kullanmanızı kesinlikle öneririz.

    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:21.6.3")
        implementation("com.google.firebase:firebase-analytics:21.6.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şvurabilir. (Ayrıntılar için Bu girişimle ilgili sık sorulan sorular bölümüne göz atın).

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

Bir Remote Config nesne örneği alın ve sık sık yenileme yapılmasını sağlamak 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, güncellenmiş parametre değerlerini arka uçtan getirmek ve getirilen değerlerin uygulamanıza ne zaman sunulacağını kontrol etmek için kullanılır.

Geliştirme sırasında, nispeten düşük bir minimum getirme aralığı belirlemeniz önerilir. Daha fazla bilgi için Kısıtlama bölümünü inceleyin.

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

Uygulama içi varsayılan parametre değerlerini Remote Config nesnesinde ayarlayabilirsiniz. Böylece uygulamanız Remote Config arka ucuna bağlanmadan önce amaçlandığı gibi davranır. Böylece, arka uçta hiçbir parametre ayarlanmamışsa 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ını ve varsayılan parametre değerini 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ı indirebilir ve 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 dosyasını 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 parametre değerlerini Remote Config nesnesinden alabilirsiniz. Arka uçta değerler ayarlar, bunları getirir ve ardından 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 alırsınız. 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, istediğiniz koşullu mantığa veya kullanıcı hedeflemeye 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 gereken Firebase konsolu 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. Uygulamanızda tanımladığınız parametrelerle aynı adlara sahip parametreleri tanımlayın. Her parametre için bir varsayılan değer ayarlayabilir (bu değer, sonuçta karşılık gelen 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ı bölümüne bakın.

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

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

    Bir çağrıda değerleri getirmek ve etkinleştirmek istediğiniz durumlarda, Remote Config arka ucundan değerler getirmek ve bunları uygulamada kullanılabilir hale getirmek 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();
                }
            });

Bu güncellenen parametre değerleri uygulamanızın davranışını ve görünümünü etkilediğinden, getirilen değerleri kullanıcılarınız için sorunsuz bir deneyim sağlayacak bir zamanda (kullanıcının uygulamanızı bir sonraki açışı gibi) etkinleştirmeniz gerekir. Daha fazla bilgi ve örnek için Remote Config yükleme stratejileri bölümüne 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 mevcut olduğunda bağlı cihazlara sinyal gönderir ve yeni bir Remote Config sürümü yayınladığınızda değişiklikleri otomatik olarak getirir.

Gerçek zamanlı güncellemeler, Android v21.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() kodunu kullanın. Güncellenen yapılandırmayı etkinleştirmek için onUpdate() geri çağırmasını 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 çağırır.

Kısıtlama

Bir uygulama kısa süre içinde çok fazla kez getirirse getirme çağrıları kısıtlanır ve SDK FirebaseRemoteConfigFetchThrottledException değerini döndürür. SDK 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 vardır).

Uygulamanızı geliştirirken ve test ederken hızlı bir şekilde iterasyon yapabilmeniz için uygulama geliştirme sırasında yapılandırmaları çok sık (saatte birçok kez) getirip etkinleştirmek isteyebilirsiniz. Yapılandırma sunucuda güncellendiğinde gerçek zamanlı Remote Config güncellemeleri, önbelleği otomatik olarak atlar. Bir projede en fazla 10 geliştiricinin yer aldığı hızlı yinelemeye uyum sağlamak için uygulamanızda geçici olarak düşük minimum getirme aralığına (setMinimumFetchIntervalInSeconds) sahip bir FirebaseRemoteConfigSettings nesnesi ayarlayabilirsiniz.

Remote Config için varsayılan minimum getirme aralığı 12 saattir. Diğer bir deyişle, gerçekte kaç getirme çağrısı yapıldığından bağımsız olarak yapılandırmalar 12 saatlik bir süre içinde arka uçtan birden fazla kez getirilemez. Özellikle, minimum getirme aralığı aşağıdaki sırayla belirlenir:

  1. fetch(long) içindeki parametre
  2. FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long) içindeki parametre
  3. 12 saat olan varsayılan değer

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 de dahil olmak üzere bazı temel kavramlara ve gelişmiş stratejiler belgelerine göz atın: