| Platform seçin: | iOS+ Android Web Flutter Unity C++ |
Uygulamanızda parametreleri tanımlamak ve buluttaki değerlerini güncellemek için Firebase Remote Config hizmetini kullanabilirsiniz. Böylece uygulama güncellemesi yayınlamadan uygulamanızın görünümünü ve davranışını değiştirebilirsiniz. Bu kılavuzda, kullanmaya başlamak için gereken 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: Firebase ve Remote Config SDK'sını uygulamanıza ekleyin
Henüz yapmadıysanız Firebase'i Android projenize ekleyin.
Remote Config için, Google Analytics, uygulama örneklerinin kullanıcı özelliklerine ve kitlelere koşullu olarak hedeflenmesi amacıyla gereklidir. Projenizde Google Analytics hizmetini etkinleştirdiğinizden emin olun.
Modülünüzün (uygulama düzeyinde) Gradle dosyasında (genellikle
<project>/<app-module>/build.gradle.ktsveya<project>/<app-module>/build.gradle) Android için Remote Config ve Analytics kitaplıklarına bağımlılıklar ekleyin. Kitaplık sürümünü kontrol etmek için Firebase Android BoM kullanmanızı öneririz.Ayrıca Analytics kurulumu kapsamında 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:35.0.2")) // 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 kullanarak uygulamanızın her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanmasını sağlayabilirsiniz.
(Alternatif) BoM kullanmadan Firebase kitaplığı bağımlılıklarını ekleme
Firebase BoM kullanmamayı tercih ederseniz her Firebase kitaplığı sürümünü kendi 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ını sağlayabilirsiniz.
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:24.0.0")
implementation("com.google.firebase:firebase-analytics:24.0.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, güncellenmiş parametre değerlerini arka uçtan getirmek ve getirilen değerlerin uygulamanızda 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 Kısıtlama bölümüne bakın.
3. adım: Uygulama içi varsayılan parametre değerlerini ayarlama
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 ve arka uçta herhangi bir değer ayarlanmamışsa varsayılan değerler kullanılabilir.
Uygulamanızın
res/xmlklasö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ı, 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/xmldizinine 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 hamiline ait jeton oluşturabilirsiniz:
gcloud auth print-access-tokenBu jetonun kullanım süresi kısa olduğundan kimlik doğrulama hatası alırsanız jetonu yeniden oluşturmanız gerekebilir.
Firebase konsolu
Firebase konsolunda DevOps ve Etkileşim > Remote Config > Parametreler sayfasına gidin.
Menü 'yü açın ve Varsayılan değerleri indir'i seçin.İstendiğinde Android için.xml'yi etkinleştirin, ardından Dosyayı indir'i tıklayın.
Bu değerleri,
setDefaultsAsync(int)kullanarak Remote Config nesnesine aşağıdaki gibi 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ğerlerini alabilirsiniz. Arka uçta değerleri ayarlayıp getirir ve etkinleştirirseniz bu değerler 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ğerleri oluşturabilirsiniz. Bu bölümde, bu değerleri oluşturmak için Firebase konsolunda uygulanacak adımlar açıklanmaktadır.
Firebase konsolunda DevOps ve Etkileşim > Remote Config > Parametreler sayfasına gidin.
Uygulamanızda tanımladığınız parametrelerle aynı adlara sahip parametreler tanımlayın. Her parametre için varsayılan bir değer (sonuçta ilgili uygulama içi varsayılan değeri geçersiz kılar) ve koşullu değerler ayarlayabilirsiniz. Daha fazla bilgi edinmek için Remote Config Parametreler ve Koşullar bölümünü 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
- Remote Config arka ucundan parametre değerlerini getirmek için
fetch()yöntemini çağırın. Arka uçta ayarladığınız tüm değerler getirilerek Remote Config nesnesinde depolanır. Getirilen parametre değerlerini uygulamanızda kullanılabilir hale getirmek için
activate()yöntemini çağırın.Değerleri tek bir çağrıda getirip etkinleştirmek istediğiniz durumlarda, Remote Config arka ucundan değerleri getirmek ve bunları uygulamada kullanılabilir hale getirmek için
fetchAndActivate()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, getirilen değerleri kullanıcınız için sorunsuz bir deneyim sağlayacak 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 stratejileri başlıklı makaleyi inceleyin.
7. adım: Güncellemeleri anlık olarak dinleyin
Parametre değerlerini aldıktan sonra Remote Config arka ucundan gelen güncellemeleri dinlemek için gerçek zamanlı Remote Config özelliğini kullanabilirsiniz. Gerçek zamanlı Remote Config, güncellemeler kullanıma sunulduğunda bağlı cihazlara sinyal gönderir ve yeni bir Remote Config sürümü yayınladıktan sonra değişiklikleri otomatik olarak getirir.
Gerçek zamanlı güncellemeler, Android için Firebase SDK'sı v21.3.0+ (Firebase BoM v31.2.4+) tarafından desteklenir.
Uygulamanızda, güncellemeleri dinlemeye başlamak ve yeni parametre değerlerini otomatik olarak almak için
addOnConfigUpdateListener()kullanın. Güncellenen yapılandırmayı etkinleştirmek içinonUpdate()geri çağırma işlevini 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ınlayışınızda, uygulamanızı çalıştıran ve değişiklikleri dinleyen cihazlar
ConfigUpdateListeneryöntemini çağırır.
Kısıtlama
Bir uygulama kısa bir süre içinde çok fazla getirme işlemi yaparsa getirme çağrıları kısıtlanı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 zaman aralığında 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) getirip etkinleştirmek isteyebilirsiniz. Sunucuda yapılandırma güncellendiğinde gerçek zamanlı Remote Config güncellemeleri önbelleği otomatik olarak atlar. En fazla 10 geliştiricinin yer aldığı bir projede hızlı iterasyon 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 12 saatlik bir zaman diliminde arka uçtan birden fazla kez getirilmeyeceği anlamına gelir. Özellikle minimum getirme aralığı aşağıdaki sırayla belirlenir:
fetch(long)içindeki parametreFirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)parametresi- Varsayılan değer 12 saattir.
Minimum getirme aralığını özel bir değere ayarlamak için FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) kullanın.