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 dağıtmanıza veya birden fazla uygulama mağazası güncellemesi arasında gezinmenize gerek kalmadan uygulamalarınız için özellik kullanıma sunma ve platformlar arası A/B testi gibi özelliklerden yararlanabilirsiniz.

İster prototip oluşturuyor, ister büyüyen bir startup'ı yönetiyor, ister de kurumsal bir uygulamayı geniş ölçekte yönetiyor olun, ağ getirme hacminizi yönetmek hızlı ve duyarlı bir kullanıcı deneyimi sunmanın anahtarıdır. Verimli yapılandırma yönetimi, soğuk başlatma gecikmesini azaltır, istemci verilerini ve pil kullanımını korur ve gereksiz ağ yükünü önler. Ayrıca, kullanıcı tabanınız hızla genişlerse ve gelecekte kullanımı artırırsa Remote Config entegrasyonunuzu kolaylaştırmak, kullanımınızın verimli kalmasına yardımcı olur.

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

"Sonraki oturum için getirme" kalıbına geçiş

Kaçınılması gereken yaygın bir kalıp, fetchAndActivate çağrısını kullanmaktır. Bu çağrı, hem ağ üzerinden yeni değerler getirir hem de bunları etkinleştirir. Bu kalıp, her uygulama başlatıldığında daha önce getirilmiş değerler için kısa bir önbellek geçerlilik süresiyle (ör. 15 dakika ila bir saat) birlikte kullanılır. Bu yaklaşımın arkasındaki zihinsel model, kullanıcı uygulamayı her açtığında her zaman en son değerlerin getirilip uygulanmasıdır. Anında güncellemenin gerekli olduğu zamanlar (ör. günlük satış kampanyası veya oyun tanıtımı yapma) olsa da bu hedefi uygulamanızın performansı ve getirme kullanımı üzerindeki etkiyle dengelemeniz ö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 birden fazla kez açan kullanıcılar için yüksek bir getirme hacmi oluşturur.

Bunun yerine, "sonraki oturum için getirme" modelini benimsemek üzere fetch ve activate çağrılarını daha yüksek bir minimum getirme aralığıyla ayrı ayrı kullanmayı düşünebilirsiniz. fetch yalnızca önbellek geçersiz kılınırsa bir ağ isteği yürüttüğünden, daha yüksek bir minimum getirme aralığıyla fetchAndActivate kullanmaya devam edebilirsiniz. Ancak iki çağrıyı ayrı ayrı kullanmak, kalıbı sağlamlaştırmaya ve uygulama geliştirme sürecinizde standart bir uygulama olarak oluşturmaya yardımcı olur. Ayrıca, ayrı ayrı etkinleştirerek oturum ortasında yapılandırma değerleri uygulama ve kullanıcı deneyimini kesintiye uğratma riskini de ortadan kaldırırsınız.

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

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

Bu özellik, getirme hacmini nasıl optimize eder?

Minimum getirme aralığının daha uzun olması, daha az getirme isteğiyle sonuçlanır. 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üklenmesini sağlar. Bu da daha iyi bir kullanıcı deneyimi sunar.

Ö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. ile 10. başlatmaları doğrudan yerel önbellekten otomatik olarak karşılar. Bu sayede, 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ında 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 getirme" kalıbı, Remote Config değerlerini güncellemeniz gerektiği zaman ile bu değerlerin istemci uygulamalarınızda kullanıma sunulduğu zaman arasında çok fazla gecikmeye neden oluyorsa koşullu "akıllı" getirme özelliğini kullanmayı düşünebilirsiniz.

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

Bunun yerine, getirme isteklerini aşağıdaki gibi açık uygulama işlemlerine veya durumlarına göre seçici olarak tetikleyin:

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

Aksine, 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