रिमोट कॉन्फ़िगरेशन को फ़ेच करने की प्रोसेस को बेहतर बनाने के सबसे सही तरीके

Firebase Remote Config की मदद से, आपको अपने ऐप्लिकेशन के व्यवहार और लुक पर पूरा कंट्रोल मिलता है. इससे आपको अपने ऐप्लिकेशन के लिए, सुविधाओं को रोल आउट करने और क्रॉस-प्लैटफ़ॉर्म पर A/B टेस्टिंग जैसी सुविधाएं मिलती हैं. इसके लिए, आपको नए वर्शन डिप्लॉय करने या ऐप्लिकेशन स्टोर के कई अपडेट पर जाने की ज़रूरत नहीं पड़ती.

चाहे आपको प्रोटोटाइप बनाना हो, तेज़ी से बढ़ता स्टार्टअप चलाना हो या बड़े पैमाने पर एंटरप्राइज़ ऐप्लिकेशन मैनेज करना हो, नेटवर्क फ़ेच वॉल्यूम को मैनेज करना ज़रूरी है. इससे उपयोगकर्ता को तेज़ और रिस्पॉन्सिव अनुभव मिलता है. कॉन्फ़िगरेशन को सही तरीके से मैनेज करने से, कोल्ड-स्टार्ट में लगने वाला इंतज़ार का समय कम हो जाता है. साथ ही, क्लाइंट का डेटा और बैटरी खर्च कम होता है. इसके अलावा, इससे नेटवर्क पर ज़रूरत से ज़्यादा लोड नहीं पड़ता. इसके अलावा, अगर आपके ऐप्लिकेशन का इस्तेमाल करने वाले लोगों की संख्या तेज़ी से बढ़ती है और आने वाले समय में इसके इस्तेमाल में बढ़ोतरी होती है, तो Remote Config को इंटिग्रेट करने की प्रोसेस को आसान बनाने से, यह पक्का करने में मदद मिलती है कि ऐप्लिकेशन का इस्तेमाल बेहतर तरीके से किया जा रहा है.

क्लाइंट-साइड नेटवर्क अनुरोध ट्रैफ़िक को काफ़ी हद तक कम किया जा सकता है. इसके लिए, आपको यह तय करना होगा कि ऐप्लिकेशन पैरामीटर कब और कैसे फ़ेच करें और उन्हें कब चालू करें.

"अगले सेशन के लिए फ़ेच करना" पैटर्न पर स्विच करना

fetchAndActivate कॉल का इस्तेमाल करने से बचना चाहिए. यह कॉल, नेटवर्क पर नई वैल्यू फ़ेच करता है और उन्हें चालू करता है. इसे हर ऐप्लिकेशन लॉन्च पर इस्तेमाल नहीं करना चाहिए. साथ ही, पहले फ़ेच की गई वैल्यू के लिए, कैश मेमोरी के खत्म होने की अवधि कम होनी चाहिए. उदाहरण के लिए, 15 मिनट से एक घंटा. इस तरीके के पीछे यह सोच काम करती है कि जब भी कोई उपयोगकर्ता ऐप्लिकेशन खोले, तो उसके पास हमेशा फ़ेच की गई और लागू की गई सबसे नई वैल्यू मौजूद हों. हालांकि, कुछ मामलों में तुरंत अपडेट करना ज़रूरी होता है. उदाहरण के लिए, रोज़ाना बिक्री बढ़ाने वाला कैंपेन चलाना या गेम का प्रमोशन करना. ऐसे में, इस लक्ष्य को अपने ऐप्लिकेशन की परफ़ॉर्मेंस और फ़ेच के इस्तेमाल पर पड़ने वाले असर के साथ बैलेंस करना ज़रूरी है.

इस तरीके से, हर बार कैश मेमोरी के खत्म होने पर नए नेटवर्क कॉल किए जाते हैं. इससे उन उपयोगकर्ताओं के लिए फ़ेच किए गए डेटा की मात्रा बढ़ जाती है जो दिन में कई बार ऐप्लिकेशन खोलते हैं.

इसके बजाय, "अगले सेशन के लिए फ़ेच करें" मॉडल को अपनाने के लिए, fetch और activate कॉल का अलग-अलग इस्तेमाल करें. साथ ही, फ़ेच करने के कम से कम इंटरवल को बढ़ाएं. ज़्यादा से ज़्यादा फ़ेच इंटरवल के साथ fetchAndActivate का इस्तेमाल अब भी किया जा सकता है. ऐसा इसलिए, क्योंकि fetch सिर्फ़ तब नेटवर्क अनुरोध करता है, जब कैश मेमोरी अमान्य हो जाती है. हालांकि, दोनों कॉल का अलग-अलग इस्तेमाल करने से पैटर्न को मज़बूत करने और इसे ऐप्लिकेशन डेवलपमेंट प्रोसेस में स्टैंडर्ड प्रैक्टिस के तौर पर सेट करने में मदद मिलती है. इसके अलावा, इन्हें अलग-अलग चालू करने से, सेशन के बीच में कॉन्फ़िगरेशन वैल्यू लागू होने का जोखिम नहीं होता. साथ ही, उपयोगकर्ता अनुभव में रुकावट नहीं आती.

यह तरीका कैसे काम करता है

  • लॉन्च होने पर तुरंत चालू करें: पिछले सेशन से कैश किए गए कॉन्फ़िगरेशन को तुरंत लागू करें (नेटवर्क में 0 मि॰से॰ की देरी).
  • बैकग्राउंड में ज़्यादा समय के लिए कैश मेमोरी में सेव किए गए डेटा को फ़ेच करना (उदाहरण के लिए, 12 या 24 घंटे से ज़्यादा): अपडेट किए गए कॉन्फ़िगरेशन के लिए एसिंक्रोनस तरीके से अनुरोध करें, ताकि अगले सेशन के लिए लोकल कैश मेमोरी को रीफ़्रेश किया जा सके.

इससे फ़ेच वॉल्यूम को कैसे ऑप्टिमाइज़ किया जाता है

डेटा फ़ेच करने के लिए कम से कम इंटरवल ज़्यादा होने पर, फ़ेच करने के अनुरोध कम होते हैं. अगले सेशन के लिए नई वैल्यू फ़ेच करने और मौजूदा सेशन के लिए कैश मेमोरी में सेव की गई वैल्यू चालू करने का मतलब है कि आपका ऐप्लिकेशन, पुष्टि की लंबी अवधि के दौरान स्थानीय कैश मेमोरी से तुरंत लोड हो जाता है. इससे उपयोगकर्ताओं को बेहतर अनुभव मिलता है.

उदाहरण के लिए, अगर आपने minimumFetchInterval को 24 घंटे पर सेट किया है और कोई उपयोगकर्ता एक दिन में आपके ऐप्लिकेशन को 5 या 10 बार खोलता है, तो SDK टूल, दूसरी से लेकर दसवीं बार तक के लॉन्च को सीधे तौर पर लोकल कैश मेमोरी से पूरा करता है. इससे, उस उपयोगकर्ता के लिए हर दिन नेटवर्क अनुरोधों की संख्या, 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 ट्रिगर को बड़े यूज़र इंटरफ़ेस (यूआई) लाइफ़साइकल हुक से न जोड़ें. जैसे, हर बार स्क्रीन लोड होने, टैब स्विच होने या व्यू फ़ोकस होने पर.

इसके बजाय, ऐप्लिकेशन की साफ़ तौर पर की गई कार्रवाइयों या स्थितियों के आधार पर, फ़ेच करने के अनुरोधों को चुनिंदा तौर पर ट्रिगर करें. जैसे:

  • उपयोगकर्ता के साइन-इन इवेंट
  • उपयोगकर्ता के ऐसे फ़्लो में ट्रांज़िशन करना जहां आपके पैरामीटर इस्तेमाल किए जाते हैं. उदाहरण के लिए, चेकआउट फ़नल में जाना या गेम में लेवल अप करना

इसके उलट, रूटीन की कार्रवाइयों के लिए फ़ेच करने के अनुरोध ट्रिगर न करें. जैसे:

  • जब कोई उपयोगकर्ता ऐप्लिकेशन खोलता है या नया सेशन शुरू करता है
  • जब ऐप्लिकेशन बैकग्राउंड से फ़ोरग्राउंड में जाता है और फ़ोरग्राउंड से बैकग्राउंड में जाता है

अगले चरण