了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

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 bir 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 bazı örnek kodlar sağlar; bunların tümü , firebase/quickstart-android GitHub deposundan kopyalanabilir veya indirilebilir.

1. Adım: Uygulamanıza Firebase ve Remote Config SDK ekleyin

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

  2. Remote Config için, uygulama örneklerinin kullanıcı mülklerine 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ızda (genellikle <project>/<app-module>/build.gradle ), Remote Config Android kitaplığı için bağımlılığı ekleyin. Kitaplık sürüm oluşturmayı kontrol etmek için Firebase Android BoM'yi kullanmanızı öneririz.

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

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:32.1.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-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    Firebase Android BoM'yi kullandığınızda, uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.

    (Alternatif) BoM kullanmadan Firebase kitaplığı bağımlılıkları ekleyin

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

    Uygulamanızda birden çok Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için tüm sürümlerin uyumlu olmasını sağlayan BoM'yi 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-ktx:21.4.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0'
    }
    

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:32.1.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'yi kullandığınızda, uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.

    (Alternatif) BoM kullanmadan Firebase kitaplığı bağımlılıkları ekleyin

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

    Uygulamanızda birden çok Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için tüm sürümlerin uyumlu olmasını sağlayan BoM'yi 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.4.0'
        implementation 'com.google.firebase:firebase-analytics:21.3.0'
    }
    

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

Bir Remote Config nesne örneği alın ve sık sık yenilemeye izin vermek 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ız tarafından ne zaman kullanılabilir hale getirileceğini 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 bkz .

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

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

  1. Bir Harita nesnesi veya uygulamanızın res/xml klasöründe saklanan bir 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ı indirebilir ve bunu uygulamanızın res/xml dizinine kaydedebilirsiniz:

    DİNLENMEK

    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üsünü açın ve Varsayılan değerleri indir öğesini 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, 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. Değerleri arka uçta ayarlar, 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ğerlerini alırsınız. Bu değerleri almak için, parametre anahtarını bağımsız değişken olarak sağlayarak, uygulamanızın beklediği veri türüyle eşleşen 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ı hedeflemeye göre uygulama içi değerleri geçersiz kılan yeni sunucu tarafı varsayılan değerler oluşturabilirsiniz. Bu bölümde, bu değerleri oluşturmak için Firebase konsolu adımları açıklanmaktadır.

  1. Firebase konsolunda projenizi açın.
  2. Remote Config panosunu görüntülemek için menüden Remote Config'i seçin.
  3. Uygulamanızda tanımladığınız parametrelerle aynı ada sahip parametreleri tanımlayın. Her parametre için bir varsayılan değer ayarlayabilirsiniz (bu değer sonunda karşılık gelen uygulama içi varsayılan değeri geçersiz kılar) ve ayrıca koşullu değerler de ayarlayabilirsiniz. Daha fazla bilgi edinmek için bkz. Uzak Yapılandırma Parametreleri ve Koşulları .

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

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

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

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ız için sorunsuz bir deneyim sağlayan bir zamanda (ör. kullanıcının 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 gerçek zamanlı olarak dinleyin

Parametre değerlerini getirdikten sonra, Remote Config arka ucundan 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 siz yeni bir Remote Config sürümü yayınladıktan sonra değişiklikleri otomatik olarak getirir.

Gerçek zamanlı güncellemeler, Firebase SDK for Android v21.3.0+ (Firebase BoM v31.2.4+) tarafından desteklenir.

  1. Uygulamanızda, güncellemeleri dinlemeye başlamak ve yeni parametre değerlerini otomatik olarak getirmek için addOnConfigUpdateListener() kullanın. Güncellenen yapılandırmayı etkinleştirmek için onUpdate() geri araması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ü bir sonraki yayınlayışınızda, uygulamanızı çalıştıran ve değişiklikleri dinleyen cihazlar ConfigUpdateListener öğesini arayacak.

kısma

Bir uygulama kısa bir süre içinde çok fazla getirirse getirme çağrıları azaltılır ve SDK, FirebaseRemoteConfigFetchThrottledException değerini döndürür. SDK sürüm 17.0.0'dan önce sınır, 60 dakikalık bir pencerede 5 getirme isteğiydi (daha yeni sürümlerin daha izin verilen sınırları vardır).

Uygulama geliştirme sırasında, uygulamanızı geliştirirken ve test ederken hızlı bir şekilde yineleme yapabilmeniz için yapılandırmaları çok sık (saatte birçok kez) getirip etkinleştirmek isteyebilirsiniz. Gerçek zamanlı Remote Config güncellemeleri, yapılandırma sunucuda güncellendiğinde önbelleği otomatik olarak atlar. En fazla 10 geliştirici içeren bir projede 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; bu, gerçekte kaç getirme çağrısı yapıldığına bakılmaksızın, yapılandırmaların arka uçtan 12 saatlik bir pencerede birden fazla getirilmeyeceği anlamına gelir. Spesifik olarak, minimum getirme aralığı aşağıdaki sırayla belirlenir:

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

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

Next steps

If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: