Firebase Remote Config की मदद से, ऐप्लिकेशन के काम करने के तरीके और उसके लुक को अपनी ज़रूरत के हिसाब से कंट्रोल किया जा सकता है. इससे आपको अपने ऐप्लिकेशन के लिए, सुविधाओं को रोल आउट करने और क्रॉस-प्लैटफ़ॉर्म A/B टेस्टिंग जैसी सुविधाएं मिलती हैं. इसके लिए, आपको नए वर्शन डिप्लॉय करने या कई ऐप स्टोर अपडेट पर जाने की ज़रूरत नहीं पड़ती.
चाहे प्रोटोटाइप बनाया जा रहा हो, तेज़ी से आगे बढ़ रहा स्टार्टअप चलाया जा रहा हो या बड़े पैमाने पर एंटरप्राइज़ ऐप्लिकेशन को मैनेज किया जा रहा हो, नेटवर्क फ़ेच वॉल्यूम को मैनेज करना ज़रूरी है. इससे उपयोगकर्ताओं को तेज़ और रिस्पॉन्सिव अनुभव मिलता है. बेहतर कॉन्फ़िगरेशन मैनेजमेंट से, कोल्ड-स्टार्ट लेटेंसी कम होती है. साथ ही, क्लाइंट का डेटा और बैटरी की खपत कम होती है. इसके अलावा, नेटवर्क ओवरहेड से भी बचा जा सकता है. इसके अलावा, अगर आने वाले समय में आपके उपयोगकर्ताओं की संख्या तेज़ी से बढ़ती है और आपके ऐप्लिकेशन का इस्तेमाल बढ़ता है, तो Remote Config इंटिग्रेशन को बेहतर बनाने से यह पक्का करने में मदद मिलती है कि आपके ऐप्लिकेशन का इस्तेमाल बेहतर तरीके से होता रहे.
क्लाइंट-साइड नेटवर्क अनुरोध ट्रैफ़िक को काफ़ी हद तक कम किया जा सकता है. इसके लिए, आपको यह तय करना होगा कि ऐप्लिकेशन, पैरामीटर को कब और कैसे फ़ेच करें और उन्हें कब चालू करें.
"अगले सेशन के लिए फ़ेच करें" पैटर्न पर शिफ़्ट करना
एक सामान्य पैटर्न से बचना चाहिए. वह है, हर बार ऐप्लिकेशन लॉन्च होने पर fetchAndActivate कॉल का इस्तेमाल करना. इससे नेटवर्क पर नई वैल्यू फ़ेच होती हैं और उन्हें चालू किया जाता है. साथ ही, पहले फ़ेच की गई वैल्यू के लिए, कैश मेमोरी खत्म होने की कम अवधि (उदाहरण के लिए, 15 मिनट से एक घंटा) का इस्तेमाल किया जाता है. इस तरीके के पीछे की सोच यह है कि जब भी कोई उपयोगकर्ता ऐप्लिकेशन खोले, तो उसे हमेशा सबसे नई वैल्यू फ़ेच की हुई और लागू की हुई मिलें. कभी-कभी तुरंत अपडेट करना ज़रूरी होता है. उदाहरण के लिए, रोज़ाना होने वाली बिक्री के लिए कैंपेन चलाना या गेम का प्रमोशन करना. हालांकि, यह ज़रूरी है कि आप इस लक्ष्य को अपने ऐप्लिकेशन की परफ़ॉर्मेंस और फ़ेच करने के इस्तेमाल पर पड़ने वाले असर के साथ संतुलित करें.
इस तरीके से, कैश मेमोरी की समयसीमा खत्म होने पर, हर बार नए नेटवर्क कॉल करने पड़ते हैं. इससे उन उपयोगकर्ताओं के लिए फ़ेच वॉल्यूम बढ़ जाता है जो दिन में कई बार ऐप्लिकेशन खोलते हैं.
इसके बजाय, fetch और activate कॉल को अलग-अलग इस्तेमाल करें. साथ ही, फ़ेच करने के लिए कम से कम समय के अंतराल को ज़्यादा रखें, ताकि "अगले सेशन के लिए फ़ेच करें" मॉडल को अपनाया जा सके. fetchAndActivate को अब भी ज़्यादा से ज़्यादा फ़ेच इंटरवल के साथ इस्तेमाल किया जा सकता है, क्योंकि fetch सिर्फ़ तब नेटवर्क अनुरोध को लागू करता है, जब कैश मेमोरी अमान्य हो जाती है. हालांकि, दोनों कॉल को अलग-अलग इस्तेमाल करने से पैटर्न को बेहतर बनाने और उसे आपके ऐप्लिकेशन डेवलपमेंट प्रोसेस में स्टैंडर्ड प्रैक्टिस के तौर पर सेट अप करने में मदद मिलती है. इसके अलावा, अलग से चालू करने पर, सेशन के बीच में कॉन्फ़िगरेशन वैल्यू लागू करने और उपयोगकर्ता अनुभव में रुकावट डालने का जोखिम नहीं रहता.
यह तरीका कैसे काम करता है
- लॉन्च होते ही चालू करें: पिछले सेशन से कैश मेमोरी में सेव किए गए कॉन्फ़िगरेशन को तुरंत लागू करें (0 मिलीसेकंड का नेटवर्क डिले).
- ज़्यादा समय तक कैश मेमोरी में सेव रहने वाले कॉन्फ़िगरेशन को बैकग्राउंड में फ़ेच करना (उदाहरण के लिए, 12 या 24 घंटे से ज़्यादा): अगले सेशन के लिए, लोकल कैश मेमोरी को रीफ़्रेश करने के लिए, अपडेट किए गए कॉन्फ़िगरेशन को एसिंक्रोनस तरीके से फ़ेच करने का अनुरोध करें.
इससे फ़ेच वॉल्यूम कैसे ऑप्टिमाइज़ होता है
फ़ेच करने के लिए तय किए गए कम से कम इंटरवल की अवधि ज़्यादा होने पर, फ़ेच करने के अनुरोध कम होते हैं. अगले सेशन के लिए नई वैल्यू फ़ेच करने और मौजूदा सेशन के लिए कैश मेमोरी में सेव की गई वैल्यू को चालू करने का मतलब है कि आपका ऐप्लिकेशन, पुष्टि करने की लंबी अवधि के दौरान लोकल कैश मेमोरी से तुरंत लोड हो जाता है. इससे उपयोगकर्ताओं को बेहतर अनुभव मिलता है.
उदाहरण के लिए, अगर आपने minimumFetchInterval को 24 घंटे पर सेट किया है और कोई उपयोगकर्ता आपके ऐप्लिकेशन को एक ही दिन में 5 या 10 बार खोलता है, तो SDK टूल, लोकल कैश मेमोरी से सीधे तौर पर 2 से 10 बार ऐप्लिकेशन लॉन्च करने की सुविधा देता है. इससे, उस उपयोगकर्ता के लिए, नेटवर्क के अनुरोध की संख्या 10 या उससे ज़्यादा से घटकर 1 हो जाती है.
यहां दिए गए उदाहरणों से पता चलता है कि Android, Apple प्लैटफ़ॉर्म, और वेब ऐप्लिकेशन के लिए, यह सुविधा कैसे काम करती है:
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 } }
वेब
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 });
"स्मार्ट" फ़ेचिंग की सुविधा लागू करना
अगर "अगले सेशन के लिए फ़ेच करें" पैटर्न की वजह से, Remote Config वैल्यू को अपडेट करने और क्लाइंट ऐप्लिकेशन में उनके उपलब्ध होने के बीच बहुत ज़्यादा इंतज़ार करना पड़ता है, तो शर्त के हिसाब से "स्मार्ट" फ़ेच करने की सुविधा अपनाएं.
इसे असरदार तरीके से लागू करने के लिए, fetch ट्रिगर को यूज़र इंटरफ़ेस (यूआई) के लाइफ़साइकल हुक से अटैच न करें. जैसे, हर बार स्क्रीन लोड होने, टैब स्विच होने या व्यू पर फ़ोकस होने पर.
इसके बजाय, ऐप्लिकेशन की खास कार्रवाइयों या स्थितियों के आधार पर, फ़ेच करने के अनुरोधों को ट्रिगर करें. जैसे:
- उपयोगकर्ता के साइन-इन इवेंट
- ऐसे यूज़र फ़्लो में ट्रांज़िशन करना जहां आपके पैरामीटर इस्तेमाल किए जाते हैं. उदाहरण के लिए, चेकआउट फ़नल में जाना या किसी गेम में लेवल अप करना
इसके उलट, सामान्य कार्रवाइयों के लिए फ़ेच करने के अनुरोध ट्रिगर करने से बचें. जैसे:
- जब कोई उपयोगकर्ता ऐप्लिकेशन खोलता है या नया सेशन शुरू करता है
- जब ऐप्लिकेशन, बैकग्राउंड और फ़ोरग्राउंड स्टेटस के बीच ट्रांज़िशन करता है
अगले चरण
- रणनीतिक तौर पर, रीयल-टाइम में Remote Config इस्तेमाल करने का तरीका जानें.
- Firebase Remote Config लोड करने की रणनीतियां एक्सप्लोर करें.