Firebase Remote Config zapewnia elastyczną kontrolę nad działaniem i wyglądem aplikacji. Umożliwia to wdrażanie funkcji i przeprowadzanie testów A/B na różnych platformach w aplikacjach bez wdrażania nowych wersji ani aktualizowania wielu sklepów z aplikacjami.
Niezależnie od tego, czy tworzysz prototyp, rozwijasz startup, czy zarządzasz aplikacją dla przedsiębiorstw na dużą skalę, zarządzanie liczbą pobrań z sieci jest kluczowe dla zapewnienia szybkiego i responsywnego interfejsu użytkownika. Efektywne zarządzanie konfiguracją zmniejsza opóźnienie uruchomienia „na zimno”, oszczędza dane klienta i wykorzystanie baterii oraz zapobiega niepotrzebnym obciążeniom sieci. Jeśli liczba użytkowników szybko wzrośnie i w przyszłości zwiększy się wykorzystanie, usprawnienie integracji Remote Config pomoże utrzymać wydajność.
Możesz znacznie zmniejszyć ruch związany z żądaniami sieci po stronie klienta, dopracowując sposób i czas pobierania parametrów przez aplikacje oraz ich aktywowania.
Przejście na wzorzec „pobieranie na potrzeby następnej sesji”
Częstym błędem jest używanie wywołania fetchAndActivate, które pobiera nowe wartości przez sieć i je aktywuje, przy każdym uruchomieniu aplikacji w połączeniu z krótkim okresem ważności pamięci podręcznej dla wcześniej pobranych wartości (np. od 15 minut do 1 godziny). Model mentalny, który stoi za tym podejściem, zakłada, że za każdym razem, gdy użytkownik otworzy aplikację, pobierane i stosowane są najnowsze wartości. Chociaż czasami natychmiastowa aktualizacja jest konieczna (np. w przypadku prowadzenia codziennej kampanii wyprzedażowej lub promocji gry), ważne jest, aby zachować równowagę między tym celem a wpływem na wydajność aplikacji i wykorzystanie pobierania.
Takie podejście wymusza nowe wywołania sieciowe za każdym razem, gdy wygasa pamięć podręczna, co generuje dużą liczbę pobrań w przypadku użytkowników, którzy otwierają aplikację wiele razy dziennie.
Zamiast tego rozważ oddzielne wywołania fetch i activate z dłuższym minimalnym interwałem pobierania, aby zastosować model „pobieranie na potrzeby następnej sesji”. Nadal możesz używać fetchAndActivate z dłuższym minimalnym interwałem pobierania, ponieważ fetch wykonuje żądanie sieciowe tylko wtedy, gdy pamięć podręczna jest unieważniona. Jednak używanie tych 2 wywołań oddzielnie pomaga utrwalić wzorzec i ustanowić go jako standardową praktykę w procesie tworzenia aplikacji. Dodatkowo dzięki osobnej aktywacji nie ryzykujesz zastosowania wartości konfiguracji w trakcie sesji i zakłócenia wygody użytkowników.
Jak działa to podejście
- Aktywuj natychmiast po uruchomieniu: natychmiastowe zastosowanie konfiguracji zapisanych w pamięci podręcznej z poprzedniej sesji (0 ms opóźnienia sieci).
- Pobieranie w tle z dłuższą pamięcią podręczną (np. ponad 12 lub 24 godziny): asynchroniczne wysyłanie żądań zaktualizowanych konfiguracji w celu odświeżenia lokalnej pamięci podręcznej na potrzeby następnej sesji.
Jak to optymalizuje liczbę pobrań
Dłuższy minimalny interwał pobierania powoduje mniejszą liczbę żądań pobierania. Pobieranie nowych wartości na potrzeby kolejnej sesji i aktywowanie wartości z pamięci podręcznej na potrzeby bieżącej sesji oznacza, że aplikacja wczytuje się natychmiast z lokalnej pamięci podręcznej w dłuższym okresie weryfikacji, co przekłada się na lepsze wrażenia użytkowników.
Jeśli na przykład ustawisz wartość minimumFetchInterval na 24 godziny, a użytkownik otworzy aplikację 5 lub 10 razy w ciągu jednego dnia, pakiet SDK automatycznie zrealizuje uruchomienia od 2 do 10 bezpośrednio z pamięci podręcznej, zmniejszając dzienną liczbę żądań sieciowych tego użytkownika z 10 lub więcej do 1.
Poniższe przykłady pokazują, jak wygląda ta implementacja w przypadku aplikacji na Androida, platform Apple i aplikacji internetowych:
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 } }
Sieć
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 });
Wdrażanie warunkowego „inteligentnego” pobierania
Jeśli wzorzec „pobieranie na potrzeby następnej sesji” powoduje zbyt duże opóźnienie między momentem, w którym musisz zaktualizować wartości Remote Config, a momentem, w którym stają się one dostępne w aplikacjach klienckich, rozważ zastosowanie warunkowego „inteligentnego” pobierania.
Aby skutecznie wdrożyć tę funkcję, unikaj dołączania fetchwyzwalaczy do ogólnych punktów zaczepienia cyklu życia interfejsu, takich jak każde załadowanie ekranu, przełączenie karty lub uzyskanie fokusu przez widok.
Zamiast tego wywołuj żądania pobierania danych selektywnie na podstawie wyraźnych działań lub stanów aplikacji, takich jak:
- Zdarzenia logowania użytkownika
- przechodzenie do określonych ścieżek użytkownika, w których używane są Twoje parametry (np. wchodzenie na ścieżkę procesu płatności lub zdobywanie kolejnych poziomów w grze);
Z kolei unikaj wywoływania żądań pobierania w przypadku rutynowych działań, takich jak:
- gdy użytkownik otworzy aplikację lub rozpocznie nową sesję.
- Gdy aplikacja przechodzi między stanem tła a stanem pierwszego planu
Dalsze kroki
- Dowiedz się, jak strategicznie korzystać z danych w czasie Remote Configrzeczywistym.
- Poznaj Firebase Remote Config strategie ładowania.