Firebase रिमोट कॉन्फ़िगरेशन का इस्तेमाल शुरू करना


अपने ऐप्लिकेशन में पैरामीटर तय करने और क्लाउड में उनकी वैल्यू अपडेट करने के लिए, Firebase Remote Config का इस्तेमाल किया जा सकता है. इससे, ऐप्लिकेशन का अपडेट डिस्ट्रिब्यूट किए बिना ही, ऐप्लिकेशन के लुक और काम करने के तरीके में बदलाव किया जा सकता है. इस गाइड में, शुरू करने के तरीके के बारे में बताया गया है. साथ ही, इसमें कुछ सैंपल कोड भी दिए गए हैं. इन सभी को firebase/quickstart-js GitHub रिपॉज़िटरी से क्लोन या डाउनलोड किया जा सकता है.

पहला चरण: Remote Config SDK टूल जोड़ना और उसे शुरू करना

  1. अगर आपने अब तक Firebase JS SDK टूल इंस्टॉल नहीं किया है और Firebase को शुरू नहीं किया है, तो ऐसा करें.

  2. 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

Firebase कंसोल

  1. पैरामीटर टैब में जाकर, मेन्यू खोलें. इसके बाद, डिफ़ॉल्ट वैल्यू डाउनलोड करें को चुनें.
  2. जब आपसे कहा जाए, तब वेब के लिए .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 कंसोल का इस्तेमाल करने का तरीका बताया गया है.

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

      let customSignals = {
         "city": "Tokyo",
         "preferred_event_category": "sports"
      }
    
      setCustomSignals(config, customSignals);

छठा चरण: वैल्यू फ़ेच करना और उन्हें चालू करना

  1. Remote Config बैकएंड से पैरामीटर वैल्यू फ़ेच करने के लिए, fetchConfig() तरीके को कॉल करें. बैकएंड पर सेट की गई सभी वैल्यू, Remote Config ऑब्जेक्ट में फ़ेच और कैश मेमोरी में सेव की जाती हैं.
  2. फ़ेच की गई पैरामीटर वैल्यू को अपने ऐप्लिकेशन के लिए उपलब्ध कराने के लिए, activate() तरीके को कॉल करें.

अगर आपको एक ही कॉल में वैल्यू फ़ेच और चालू करनी हैं, तो इस उदाहरण में दिखाए गए तरीके से fetchAndActivate() का इस्तेमाल करें:

Web

import { fetchAndActivate } from "firebase/remote-config";

fetchAndActivate(remoteConfig)
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

Web

remoteConfig.fetchAndActivate()
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

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

थ्रॉटलिंग

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

ऐप्लिकेशन डेवलपमेंट के दौरान, आपको कैश मेमोरी को बार-बार रीफ़्रेश करने की ज़रूरत पड़ सकती है. ऐसा इसलिए, ताकि ऐप्लिकेशन को डेवलप और टेस्ट करते समय, आप तेज़ी से बदलाव कर सकें. कई डेवलपर वाले प्रोजेक्ट पर तेज़ी से बदलाव करने के लिए, अपने ऐप्लिकेशन में कम से कम फ़ेच इंटरवल (Settings.minimumFetchIntervalMillis) वाली प्रॉपर्टी को कुछ समय के लिए जोड़ा जा सकता है.

Remote Config के लिए, प्रोडक्शन फ़ेच करने का डिफ़ॉल्ट और सुझाया गया इंटरवल 12 घंटे है. इसका मतलब है कि 12 घंटे की अवधि में, कॉन्फ़िगरेशन को बैकएंड से एक से ज़्यादा बार फ़ेच नहीं किया जाएगा. भले ही, फ़ेच करने के लिए कितने भी कॉल किए गए हों. खास तौर पर, फ़ेच करने का कम से कम इंटरवल इस क्रम में तय किया जाता है:

  1. Settings.minimumFetchIntervalMillis में मौजूद पैरामीटर.
  2. डिफ़ॉल्ट वैल्यू 12 घंटे होती है.

अगले चरण

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