Remote Config getirme verimliliğiyle ilgili en iyi uygulamalar

Firebase Remote Config, uygulamanızın davranışı ve görünümü üzerinde esnek kontrol sağlar. Bu sayede, yeni sürümler yayınlamadan veya birden fazla uygulama mağazası güncellemesiyle uğraşmadan uygulamalarınız için özellik sunma ve platformlar arası A/B testi gibi özelliklerden yararlanabilirsiniz.

İster prototip oluşturun, ister büyüyen bir startup'ı yönetin, ister büyük ölçekli bir kurumsal uygulamayı yönetin, ağ getirme hacminizi yönetmek hızlı ve duyarlı bir kullanıcı deneyimi sunmanın anahtarıdır. Etkili konfigürasyon yönetimi, baştan başlatma gecikmesini azaltır, istemci verilerinden ve pil kullanımından tasarruf sağlar ve gereksiz ağ ek yükünü önler. Ayrıca, kullanıcı tabanınız hızla genişler ve gelecekte kullanımı artırırsa Remote Config entegrasyonunuzu kolaylaştırmak, kullanımınızın verimli kalmasını sağlar.

Uygulamaların parametreleri nasıl ve ne zaman getirdiğini ve ne zaman etkinleştirdiğini hassaslaştırarak istemci tarafı ağ isteği trafiğini önemli ölçüde azaltabilirsiniz.

"Sonraki oturum için getir" kalıbına geçme

Kaçınılması gereken yaygın bir yöntem, her uygulama başlatıldığında fetchAndActivate çağrısını (hem ağ üzerinden yeni değerleri getirir hem de etkinleştirir) daha önce getirilen değerler için kısa bir önbellek geçerlilik süresiyle (örneğin, 15 dakika ila bir saat) birlikte kullanmaktır. Bu yaklaşımın arkasındaki zihinsel model, kullanıcının uygulamayı her açtığında her zaman en son değerlerin getirilip uygulanmasıdır. Anında güncelleme yapılması gereken zamanlar olsa da (ör. günlük indirim kampanyası veya oyun promosyonu yürütme) bu hedefi, uygulamanızın performansı ve getirme kullanımı üzerindeki etkiyle dengelemek önemlidir.

Bu yaklaşım, önbelleğin süresi her dolduğunda yeni ağ çağrıları yapılmasını zorunlu kılar. Bu da uygulamayı günde birkaç kez açan kullanıcılar için yüksek getirme hacmi oluşturur.

Bunun yerine, "sonraki oturum için getir" modelini benimsemek amacıyla daha yüksek bir minimum getirme aralığıyla fetch ve activate çağrılarını ayrı ayrı kullanabilirsiniz. fetchAndActivate yöntemini daha yüksek bir minimum getirme aralığıyla kullanmaya devam edebilirsiniz. Çünkü fetch, yalnızca önbellek geçersiz kılındığında bir ağ isteği yürütür. Ancak iki çağrıyı ayrı ayrı kullanmak, kalıbı sağlamlaştırmaya ve uygulama geliştirme sürecinizde standart bir uygulama olarak yerleştirmeye yardımcı olur. Ayrıca ayrı ayrı etkinleştirerek yapılandırma değerlerini oturumun ortasında uygulayıp kullanıcı deneyimini kesintiye uğratma riskini de ortadan kaldırmış olursunuz.

Bu yaklaşımın işleyiş şekli

  • Başlatma sırasında hemen etkinleştir: Önceki oturumdan önbelleğe alınan yapılandırmaları anında uygulayın (0 ms ağ gecikmesi).
  • Daha uzun bir önbellekle arka planda getirme (örneğin, 12 veya 24 saatten uzun): Sonraki oturum için yerel önbelleği yenilemek üzere güncellenmiş yapılandırmaları eşzamansız olarak isteyin.

Bu yöntem, getirme hacmini nasıl optimize eder?

Minimum getirme aralığının daha uzun olması, daha az getirme isteği gönderilmesine neden olur. Sonraki oturum için yeni değerler getirmek ve geçerli oturum için önbelleğe alınmış değerleri etkinleştirmek, uygulamanızın daha uzun bir doğrulama süresi boyunca yerel önbellekten anında yüklenmesi anlamına gelir. Bu da daha iyi kullanıcı deneyimleri sağlar.

Örneğin, minimumFetchInterval değerini 24 saat olarak ayarlarsanız ve bir kullanıcı uygulamanızı tek bir günde 5 veya 10 kez açarsa SDK, 2'den 10'a kadar olan başlatmaları doğrudan yerel önbellekten otomatik olarak karşılar. Böylece, kullanıcının günlük ağ isteği sayısı 10 veya daha fazla getirme işleminden 1'e düşer.

Aşağıdaki örneklerde bu uygulamanın Android, Apple platformları ve web uygulamaları için nasıl göründüğü gösterilmektedir:

Android

val remoteConfig = Firebase.remoteConfig

// Set a 24-hour minimum fetch interval (86,400 seconds)
val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 86400
}
remoteConfig.setConfigSettingsAsync(configSettings)

// 1. Instantly activate values cached from the LAST session
remoteConfig.activate().addOnCompleteListener {
    applyAppConfigurations()
}

// 2. Fetch new values in the background for the NEXT session
remoteConfig.fetch().addOnCompleteListener { task ->
    if (task.isSuccessful) {
        // Optional: Activate values if needed
    }
}

iOS+

let remoteConfig = RemoteConfig.remoteConfig()

// Set a 24-hour minimum fetch interval (86,400 seconds)
let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 86400
remoteConfig.configSettings = settings

// 1. Instantly activate values cached from the LAST session
remoteConfig.activate { changed, error in
    guard error == nil else { return }
    DispatchQueue.main.async {
        self.applyAppConfigurations()
    }
}

// 2. Fetch new values in the background for the NEXT session
remoteConfig.fetch { status, error in
    if status == .success {
        // Optional: Activate values if needed
    }
}

Web

import { getRemoteConfig, fetchConfig, activate } from "firebase/remote-config";

const remoteConfig = getRemoteConfig(app);

// Set a 24-hour minimum fetch interval (86,400,000 ms)
remoteConfig.settings.minimumFetchIntervalMillis = 86400000;

// 1. Instantly activate values cached from the LAST session
activate(remoteConfig).then(() => {
    applyAppConfigurations();
});

// 2. Fetch new values in the background for the NEXT session
fetchConfig(remoteConfig).then(() => {
    // Optional: Activate values if needed
});

Koşullu "akıllı" getirme özelliğini uygulama

"Sonraki oturum için getir" kalıbı, Remote Config değerlerini güncellemeniz gereken zaman ile bu değerlerin istemci uygulamalarınızda kullanılabilir hale geldiği zaman arasında çok fazla gecikmeye neden oluyorsa koşullu "akıllı" getirme özelliğini kullanabilirsiniz.

Bu yöntemi etkili bir şekilde uygulamak için fetch tetikleyicilerini geniş kullanıcı arayüzü yaşam döngüsü kancalarına (ör. her ekran yüklendiğinde, sekme değiştirildiğinde veya görünüm odaklandığında) eklemeyin.

Bunun yerine, getirme isteklerini belirli uygulama işlemlerine veya durumlarına göre seçerek tetikleyin. Örneğin:

  • Kullanıcı oturum açma etkinlikleri
  • Parametrelerinizin kullanıldığı belirli kullanıcı işlemleri akışlarına geçiş (ör. ödeme dönüşüm hunisine girme veya oyunda seviye atlama)

Buna karşılık, aşağıdaki gibi rutin işlemler için getirme isteklerini tetiklemekten kaçının:

  • Kullanıcı uygulamayı açtığında veya yeni bir oturum başlattığında
  • Uygulama arka plan ve ön plan durumları arasında geçiş yaptığında

Sonraki adımlar