Firebase Remote Config का इस्तेमाल करके, अपने ऐप्लिकेशन में पैरामीटर तय किए जा सकते हैं. साथ ही, क्लाउड में उनकी वैल्यू अपडेट की जा सकती हैं. इससे, ऐप्लिकेशन का अपडेट डिस्ट्रिब्यूट किए बिना ही, ऐप्लिकेशन के लुक और काम करने के तरीके में बदलाव किया जा सकता है. इस गाइड में, शुरू करने के तरीके के बारे में बताया गया है. साथ ही, इसमें कुछ सैंपल कोड भी दिए गए हैं. इन सभी को firebase/quickstart-js GitHub रिपॉज़िटरी से क्लोन या डाउनलोड किया जा सकता है.
पहला चरण: Remote Config SDK टूल जोड़ना और उसे शुरू करना
अगर आपने पहले से ऐसा नहीं किया है, तो Firebase JS SDK टूल इंस्टॉल करें और Firebase को शुरू करें.
Remote Config JS SDK जोड़ें और Remote Config को शुरू करें:
Web
import { initializeApp } from "firebase/app"; import { getRemoteConfig } from "firebase/remote-config"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Remote Config and get a reference to the service const remoteConfig = getRemoteConfig(app);
Web
import firebase from "firebase/compat/app"; import "firebase/compat/remote-config"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Remote Config and get a reference to the service const remoteConfig = firebase.remoteConfig();
इस ऑब्जेक्ट का इस्तेमाल, इन-ऐप्लिकेशन डिफ़ॉल्ट पैरामीटर वैल्यू को सेव करने के लिए किया जाता है. साथ ही, Remote Config बैकएंड से अपडेट की गई पैरामीटर वैल्यू फ़ेच करने और यह कंट्रोल करने के लिए किया जाता है कि फ़ेच की गई वैल्यू आपके ऐप्लिकेशन के लिए कब उपलब्ध कराई जाएं.
दूसरा चरण: फ़ेच करने का कम से कम इंटरवल सेट करना
डेवलपमेंट के दौरान, हमारा सुझाव है कि फ़ेच करने के कम से कम इंटरवल को अपेक्षाकृत कम पर सेट करें. ज़्यादा जानकारी के लिए, थ्रॉटलिंग देखें.
Web
// The default and recommended production fetch interval for Remote Config is 12 hours remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Web
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
तीसरा चरण: ऐप्लिकेशन में डिफ़ॉल्ट पैरामीटर वैल्यू सेट करना
Remote Config ऑब्जेक्ट में, ऐप्लिकेशन में इस्तेमाल होने वाले डिफ़ॉल्ट पैरामीटर की वैल्यू सेट की जा सकती हैं. इससे, आपका ऐप्लिकेशन Remote Config बैकएंड से कनेक्ट होने से पहले, उम्मीद के मुताबिक काम करेगा. साथ ही, अगर बैकएंड पर कोई वैल्यू सेट नहीं की गई है, तो डिफ़ॉल्ट वैल्यू उपलब्ध होंगी.
Web
remoteConfig.defaultConfig = { "welcome_message": "Welcome" };
Web
remoteConfig.defaultConfig = { "welcome_message": "Welcome" };
अगर आपने पहले ही Remote Config बैकएंड पैरामीटर वैल्यू कॉन्फ़िगर कर ली हैं, तो जनरेट की गई JSON फ़ाइल डाउनलोड की जा सकती है. इसमें सभी डिफ़ॉल्ट वैल्यू शामिल होती हैं. साथ ही, इसे अपने ऐप्लिकेशन बंडल में शामिल किया जा सकता है:
REST
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=JSON -o remote_config_defaults.json
Google Cloud CLI या Cloud Shell का इस्तेमाल करके, यह कमांड चलाकर बियरर टोकन जनरेट किया जा सकता है:
gcloud auth print-access-token
यह टोकन कुछ समय के लिए ही मान्य होता है. इसलिए, पुष्टि करने में गड़बड़ी होने पर, आपको इसे फिर से जनरेट करना पड़ सकता है.
Firebase कंसोल
- पैरामीटर टैब में जाकर, मेन्यू खोलें. इसके बाद, डिफ़ॉल्ट वैल्यू डाउनलोड करें को चुनें.
- जब आपसे कहा जाए, तब वेब के लिए .json चालू करें. इसके बाद, फ़ाइल डाउनलोड करें पर क्लिक करें.
यहां दिए गए उदाहरणों में, आपके ऐप्लिकेशन में डिफ़ॉल्ट वैल्यू इंपोर्ट करने और सेट करने के दो अलग-अलग तरीके दिखाए गए हैं. पहले उदाहरण में fetch
का इस्तेमाल किया गया है. इससे आपके ऐप्लिकेशन बंडल में शामिल डिफ़ॉल्ट फ़ाइल के लिए, एचटीटीपी अनुरोध किया जाएगा:
const rcDefaultsFile = await fetch('remote_config_defaults.json'); const rcDefaultsJson = await rcDefaultsFile.json(); remoteConfig.defaultConfig = rcDefaultsJson;
यहां दिए गए उदाहरण में, require
का इस्तेमाल किया गया है. यह बिल्ड टाइम पर, वैल्यू को आपके ऐप्लिकेशन में कंपाइल करता है:
let rcDefaults = require('./remote_config_defaults.json'); remoteConfig.defaultConfig = rcDefaults;
चौथा चरण: अपने ऐप्लिकेशन में इस्तेमाल करने के लिए पैरामीटर वैल्यू फ़ेच करना
अब Remote Config ऑब्जेक्ट से पैरामीटर वैल्यू मिल सकती हैं. अगर बाद में बैकएंड में वैल्यू सेट की जाती हैं, उन्हें फ़ेच किया जाता है, और फिर चालू किया जाता है, तो वे वैल्यू आपके ऐप्लिकेशन के लिए उपलब्ध होती हैं. इन वैल्यू को पाने के लिए, getValue()
तरीके को कॉल करें. साथ ही, पैरामीटर की को आर्ग्युमेंट के तौर पर दें.
Web
import { getValue } from "firebase/remote-config"; const val = getValue(remoteConfig, "welcome_messsage");
Web
const val = remoteConfig.getValue("welcome_messsage");
पांचवां चरण: पैरामीटर वैल्यू सेट करना
Firebase कंसोल या Remote Config बैकएंड एपीआई का इस्तेमाल करके, नई सर्वर-साइड डिफ़ॉल्ट वैल्यू बनाई जा सकती हैं. ये वैल्यू, ऐप्लिकेशन में मौजूद वैल्यू को बदल देती हैं. ऐसा, आपकी पसंद के मुताबिक शर्त के लॉजिक या उपयोगकर्ता टारगेटिंग के हिसाब से होता है. इस सेक्शन में, इन वैल्यू को बनाने के लिए Firebase कंसोल का इस्तेमाल करने का तरीका बताया गया है.
- Firebase कंसोल में, अपना प्रोजेक्ट खोलें.
- Remote Config डैशबोर्ड देखने के लिए, मेन्यू से Remote Config चुनें.
- अपने ऐप्लिकेशन में तय किए गए पैरामीटर के नाम से ही पैरामीटर तय करें. हर पैरामीटर के लिए, डिफ़ॉल्ट वैल्यू सेट की जा सकती है. यह वैल्यू, ऐप्लिकेशन में मौजूद डिफ़ॉल्ट वैल्यू को ओवरराइड कर देगी. साथ ही, शर्तों के हिसाब से वैल्यू भी सेट की जा सकती हैं. ज़्यादा जानने के लिए, Remote Config पैरामीटर और शर्तें देखें.
अगर कस्टम सिग्नल की शर्तों का इस्तेमाल किया जा रहा है, तो एट्रिब्यूट और उनकी वैल्यू तय करें. यहां दिए गए उदाहरण में, कस्टम सिग्नल की शर्त तय करने का तरीका बताया गया है.
let customSignals = { "city": "Tokyo", "preferred_event_category": "sports" } setCustomSignals(config, customSignals);
छठा चरण: वैल्यू को फ़ेच और ऐक्टिवेट करना
- Remote Config बैकएंड से पैरामीटर वैल्यू फ़ेच करने के लिए,
fetchConfig()
तरीके को कॉल करें. बैकएंड पर सेट की गई सभी वैल्यू, Remote Config ऑब्जेक्ट में फ़ेच और कैश मेमोरी में सेव की जाती हैं. - फ़ेच की गई पैरामीटर वैल्यू को अपने ऐप्लिकेशन के लिए उपलब्ध कराने के लिए,
activate()
तरीके को कॉल करें.
अगर आपको एक ही कॉल में वैल्यू फ़ेच और चालू करनी हैं, तो इस उदाहरण में दिखाए गए तरीके से fetchAndActivate()
का इस्तेमाल करें:
Web
import { fetchAndActivate } from "firebase/remote-config"; fetchAndActivate(remoteConfig) .then(() => { // ... }) .catch((err) => { // ... });
Web
remoteConfig.fetchAndActivate() .then(() => { // ... }) .catch((err) => { // ... });
अपडेट की गई पैरामीटर वैल्यू से, आपके ऐप्लिकेशन के व्यवहार और लुक पर असर पड़ता है. इसलिए, आपको फ़ेच की गई वैल्यू को ऐसे समय पर चालू करना चाहिए जिससे उपयोगकर्ता को बेहतर अनुभव मिले. जैसे, जब उपयोगकर्ता अगली बार आपका ऐप्लिकेशन खोले. ज़्यादा जानकारी और उदाहरणों के लिए, Remote Config की लोडिंग रणनीतियां देखें.
थ्रॉटलिंग
अगर कोई ऐप्लिकेशन कम समय में कई बार डेटा फ़ेच करता है, तो फ़ेच करने के अनुरोधों को सीमित किया जा सकता है. ऐसे मामलों में, SDK टूल FETCH_THROTTLE
गड़बड़ी दिखाता है.
हमारा सुझाव है कि आप इस गड़बड़ी को ठीक करें और एक्सपोनेन्शियल बैकऑफ़ मोड में फिर से कोशिश करें. इसके लिए, फ़ेच करने के अनुरोधों के बीच ज़्यादा समय तक इंतज़ार करें.
ऐप्लिकेशन डेवलपमेंट के दौरान, आपको कैश मेमोरी को बार-बार रीफ़्रेश करने की ज़रूरत पड़ सकती है. ऐसा इसलिए, ताकि ऐप्लिकेशन को डेवलप और टेस्ट करते समय, आपको तुरंत बदलाव करने का मौका मिल सके. अगर किसी प्रोजेक्ट पर कई डेवलपर काम कर रहे हैं, तो आपको कैश मेमोरी को बार-बार रीफ़्रेश करने की ज़रूरत पड़ सकती है. इसके लिए, अपने ऐप्लिकेशन में कम से कम फ़ेच इंटरवल (Settings.minimumFetchIntervalMillis
) वाली प्रॉपर्टी को कुछ समय के लिए जोड़ा जा सकता है.
Remote Config के लिए, प्रोडक्शन फ़ेच करने का डिफ़ॉल्ट और सुझाया गया इंटरवल 12 घंटे है. इसका मतलब है कि 12 घंटे की अवधि में, कॉन्फ़िगरेशन को बैकएंड से एक से ज़्यादा बार फ़ेच नहीं किया जाएगा. भले ही, फ़ेच करने के लिए कितने भी कॉल किए गए हों. खास तौर पर, फ़ेच करने का कम से कम इंटरवल इस क्रम में तय किया जाता है:
Settings.minimumFetchIntervalMillis
में मौजूद पैरामीटर.- डिफ़ॉल्ट वैल्यू 12 घंटे होती है.
अगले चरण
अगर आपने अभी तक ऐसा नहीं किया है, तो Remote Config इस्तेमाल के उदाहरण देखें. साथ ही, कुछ मुख्य कॉन्सेप्ट और बेहतर रणनीतियों से जुड़े दस्तावेज़ देखें. इनमें ये शामिल हैं: