Android'de Remote Config'i kullanmaya başlama

Platform seçin: iOS+ Android Web Flutter Unity C++


Uygulamanızdaki parametreleri tanımlamak ve değerlerini bulutta güncellemek için Firebase Remote Config kullanabilirsiniz. Bu sayede, 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ı açıklanmakta ve bazı örnek kodlar verilmektedir. Bu kodların tümü, firebase/quickstart-android GitHub deposundan klonlanabilir veya indirilebilir.

1. adım: Uygulamanıza Firebase ve Remote Config SDK'sını 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 için gereklidir. Projenizde Google Analytics'ı etkinleştirdiğinizden emin olun.

  3. Modülünüzün (uygulama düzeyinde) Gradle dosyasında (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle), Android için Remote Config ve Analytics kitaplıklarının bağımlılıklarını ekleyin. Kitaplık sürümünü kontrol etmek için Firebase Android BoM 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:34.19.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 öğesini kullanarak, uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.

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

    Firebase BoM kullanmamayı tercih ederseniz 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. Bu sayede 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:23.1.0")
    implementation("com.google.firebase:firebase-analytics:23.2.0")
    }

2. adım: Remote Config singleton nesnesini oluşturun

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

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ılabileceğ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 Sınırlama bölümüne bakın.

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

Uygulamanız Remote Config arka ucuna bağlanmadan önce beklendiği gibi 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. 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ında, varsayılan parametre adlarını ve değerlerini tanımlamak için XML dosyası kullanılı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
    

    Google Cloud CLI veya Cloud Shell'i kullanarak aşağıdaki komutu çalıştırarak bir taşıyıcı jetonu oluşturabilirsiniz:

    gcloud auth print-access-token
    

    Bu jetonun geçerlilik süresi kısadır. Bu nedenle, kimlik doğrulama hatası alırsanız jetonu yeniden oluşturmanız gerekebilir.

    Firebase konsol

    1. Firebase konsolunda DevOps & Engagement (DevOps ve Etkileşim) > Remote Config > Parameters (Parametreler) sayfasına gidin.

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

    3. İ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

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

4. adım: Uygulamanızda kullanmak için parametre değerleri edinin

Artık parametre değerlerini Remote Config nesnesinden alabilirsiniz. Arka uçta değerler ayarlarsanız bunları getirip etkinleştirdiğinizde 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 aşağıdaki kodda 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ğerler oluşturabilirsiniz. Bu bölümde, bu değerleri oluşturmak için Firebase konsolunda yapılması gereken adımlar açıklanmaktadır.

  1. Firebase konsolunda DevOps & Engagement (DevOps ve Etkileşim) > Remote Config > Parameters (Parametreler) sayfasına gidin.

  2. Uygulamanızda tanımladığınız parametrelerle aynı ada sahip parametreler tanımlayın. Her parametre için bir varsayılan değer (bu değer, sonunda uygulama içi varsayılan değeri geçersiz kılar) belirleyebilir ve koşullu değerler de ayarlayabilirsiniz. Daha fazla bilgi edinmek için Remote Config Parametreler ve Koşullar bölümünü inceleyin.

  3. Özel sinyal koşulları kullanıyorsanız özellikleri ve değerlerini tanımlayın. Aşağıdaki örneklerde, özel sinyal koşulunun nasıl tanımlanacağı gösterilmektedir.

    Kotlin

            val customSignals = customSignals {
                put("city", "Tokyo")
                put("preferred_event_category", "sports")
            }
    
            remoteConfig.setCustomSignals(customSignals)
        

    Java

            CustomSignals customSignals = new CustomSignals.Builder()
                .put("city", "Tokyo")
                .put("preferred_event_category", "sports")
                .build();
    
            mFirebaseRemoteConfig.setCustomSignals(customSignals);
    
        

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 tüm değerler getirilip Remote Config nesnesinde saklanır.
  2. Getirilen parametre değerlerini uygulamanızda kullanıma sunmak için activate() yöntemini çağırın.

    Değerleri tek bir çağrıda getirmek ve etkinleştirmek istediğiniz durumlarda, fetchAndActivate() arka ucundan değerleri getirmek ve bunları uygulamada kullanılabilir hale getirmek için Remote Config isteğini kullanabilirsiniz:

    Kotlin

    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üncellenmiş parametre değerleri uygulamanızın davranışını ve görünümünü etkilediğinden, kullanıcınızın sorunsuz bir deneyim yaşamasını sağlayacak bir zamanda (ör. kullanıcı uygulamanızı bir sonraki açtığında) alınan değerleri etkinleştirmeniz gerekir. Daha fazla bilgi ve örnek için Remote Config yükleme stratejileri başlıklı makaleyi inceleyin.

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

Parametre değerlerini getirdikten sonra, Remote Config arka ucundan gelen güncellemeleri dinlemek için gerçek zamanlı Remote Config özelliğini kullanabilirsiniz. Güncellemeler kullanıma sunulduğunda bağlı cihazlara Remote Config anlık sinyaller 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, Firebase SDK'sının Android v21.3.0+ sürümünde (Firebase BoM v31.2.4+) 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 çağırmasını uygulayın.

    Kotlin

    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. Bir sonraki Remote Config 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 kez getirme işlemi yaparsa getirme çağrıları sınırlandırılır ve SDK FirebaseRemoteConfigFetchThrottledException değerini döndürür. SDK'nın 17.0.0 sürümünden önce bu sınır, 60 dakikalık bir pencerede 5 getirme isteğiydi (daha yeni sürümlerde daha esnek sınırlar vardır).

Uygulama geliştirme sırasında, uygulamanızı geliştirip test ederken hızlı bir şekilde yineleme yapabilmek için yapılandırmaları çok sık (saatte birçok kez) getirmek ve etkinleştirmek isteyebilirsiniz. Anlık Remote Config güncellemeler, yapılandırma sunucuda güncellendiğinde önbelleği otomatik olarak atlar. 10 geliştiriciye kadar olan bir projede hızlı yinelemeyi desteklemek 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 12 saatlik bir süre içinde arka uçtan birden fazla kez getirilmeyeceği anlamına gelir. Özellikle, minimum getirme aralığı aşağıdaki sırayla belirlenir:

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

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