Uygulamanızda parametreler tanımlamak ve bu parametrelerin 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ılavuz, başlangıç adımlarını açıklar ve bazı örnek kodlar sunar. 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
Henüz yapmadıysanız Firebase'i Android projenize ekleyin.
Remote Config için, uygulama örneklerinin kullanıcı özelliklerine ve kitlelere koşullu olarak hedeflenmesi amacıyla Google Analytics gereklidir. Projenizde Google Analytics'yi etkinleştirdiğinizden emin olun.
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 kitaplığının bağımlılığını ekleyin. Kitaplık sürüm oluşturmayı kontrol etmek için Firebase Android BoM kullanmanızı öneririz.Ayrıca Analytics ayarlarını yaparken 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:33.16.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) Firebase kitaplığı bağımlılıklarını BoM kullanmadan ekleyin.
Firebase BoM kullanmamayı tercih ederseniz 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 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:22.1.2") implementation("com.google.firebase:firebase-analytics:22.5.0") }
2. adım: Remote Config tekil nesnesini 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
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 amaçlandığı gibi davranması ve arka uçta ayarlanmamışsa varsayılan değerlerin kullanılabilmesi için uygulama içi varsayılan parametre değerlerini Remote Config nesnesinde ayarlayabilirsiniz.
Uygulamanızın
res/xml
klasöründe depolanan bir Map nesnesi veya 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ı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ı indirebilir ve bunu 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
Parametreler sekmesinde Menü'yü açın ve Varsayılan değerleri indir'i seçin.
İstendiğinde Android için.xml'i etkinleştirin ve Dosyayı indir'i tıklayın.
Bu değerleri, gösterildiği gibi
setDefaultsAsync(int)
kullanarak 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 Remote Config nesnesinden parametre değerleri alabilirsiniz. Arka uçta değerler ayarlarsanız, bu değerleri alıp 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 yöntemi çağırın. Bu yöntem, parametre anahtarını bağımsız değişken olarak sağlayarak uygulamanızın beklediği veri türüyle eşlenir:
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 uygulamanız gereken adımlar açıklanmaktadır.
- Firebase konsolunda projenizi açın.
- Remote Config kontrol panelini görüntülemek için menüden Remote Config simgesini seçin.
- Uygulamanızda tanımladığınız parametrelerle aynı ada sahip parametreler tanımlayın. Her parametre için bir varsayılan değer ayarlayabilirsiniz (bu değer, sonunda ilgili uygulama içi varsayılan değeri geçersiz kılar). Ayrıca koşullu değerler de ayarlayabilirsiniz. Daha fazla bilgi edinmek için Remote Config Parametreler ve Koşullar başlıklı makaleyi inceleyin.
Ö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
- 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. Getirilen parametre değerlerini uygulamanızda kullanmak 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 getirip 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ü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ğlayacak bir zamanda (ör. kullanıcı uygulamanızı bir sonraki açtığında) 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'yı kullanabilirsiniz. Güncellemeler kullanıma sunulduğunda bağlı cihazlara Remote Configanlık sinyaller gönderir ve yeni bir sürüm yayınladıktan sonra değişiklikleri otomatik olarak getirir.Remote Config
Gerçek zamanlı güncellemeler, Firebase SDK'sının Android v21.3.0+ (Firebase BoM v31.2.4+) sürümünde desteklenir.
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çinonUpdate()
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); } });
Remote Config uygulamanızın yeni bir sürümünü bir sonraki 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, 60 dakikalık bir süre içinde 5 getirme isteği sınırı vardı (daha yeni sürümlerde daha izin verici 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. Gerçek zamanlı Remote Config güncellemeler, yapılandırma sunucuda güncellendiğinde önbelleği otomatik olarak atlar. 10 geliştiriciye kadar olan projelerde hızlı yinelemeyi desteklemek için uygulamanızda düşük minimum getirme aralığına (setMinimumFetchIntervalInSeconds
) sahip bir FirebaseRemoteConfigSettings
nesnesi geçici olarak ayarlayabilirsiniz.
Remote Config için varsayılan minimum getirme aralığı 12 saattir. Bu, 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. Daha net bir ifadeyle, minimum getirme aralığı aşağıdaki sırayla belirlenir:
fetch(long)
içindeki parametreFirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
içindeki parametre- Varsayılan değer 12 saattir.
Minimum getirme aralığını özel bir değere ayarlamak için FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)
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 kavramlar ile gelişmiş stratejilerle ilgili dokümanlara göz atın: