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


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

पहला चरण: रिमोट कॉन्फ़िगरेशन SDK टूल जोड़ना और उसे शुरू करना

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

  2. रिमोट कॉन्फ़िगरेशन JS SDK टूल जोड़ें और रिमोट कॉन्फ़िगरेशन शुरू करें:

वेब मॉड्यूलर एपीआई

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);

वेब नेमस्पेस किया गया एपीआई

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();

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

दूसरा चरण: डेटा फ़ेच करने का कम से कम इंटरवल सेट करना

हमारा सुझाव है कि डेवलपमेंट के दौरान, आप फ़ेच करने का कम से कम इंटरवल सेट करें. ज़्यादा जानकारी के लिए, थ्रॉटलिंग देखें.

वेब मॉड्यूलर एपीआई

remoteConfig.settings.minimumFetchIntervalMillis = 3600000;

वेब नेमस्पेस किया गया एपीआई

remoteConfig.settings.minimumFetchIntervalMillis = 3600000;

तीसरा चरण: ऐप्लिकेशन में डिफ़ॉल्ट पैरामीटर वैल्यू सेट करना

आपके पास रिमोट कॉन्फ़िगरेशन ऑब्जेक्ट में इन-ऐप्लिकेशन डिफ़ॉल्ट पैरामीटर वैल्यू को सेट करने का विकल्प है, ताकि रिमोट कॉन्फ़िगरेशन बैकएंड से कनेक्ट होने से पहले आपका ऐप्लिकेशन सही से काम करे. साथ ही, बैकएंड पर कोई भी डिफ़ॉल्ट वैल्यू सेट न होने पर, डिफ़ॉल्ट वैल्यू उपलब्ध हों.

वेब मॉड्यूलर एपीआई

remoteConfig.defaultConfig = {
  "welcome_message": "Welcome"
};

वेब नेमस्पेस किया गया एपीआई

remoteConfig.defaultConfig = {
  "welcome_message": "Welcome"
};

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

नीचे दिए गए उदाहरणों में दो अलग-अलग तरीके दिखाए गए हैं, जिनकी मदद से ऐप्लिकेशन में डिफ़ॉल्ट वैल्यू को इंपोर्ट और सेट किया जा सकता है. पहले उदाहरण में 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;

चौथा चरण: अपने ऐप्लिकेशन में इस्तेमाल करने के लिए पैरामीटर वैल्यू पाना

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

वेब मॉड्यूलर एपीआई

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

const val = getValue(remoteConfig, "welcome_messsage");

वेब नेमस्पेस किया गया एपीआई

const val = remoteConfig.getValue("welcome_messsage");

पांचवां चरण: पैरामीटर वैल्यू सेट करना

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

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

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

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

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

वेब मॉड्यूलर एपीआई

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

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

वेब नेमस्पेस किया गया एपीआई

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

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

थ्रॉटलिंग

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

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

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

  1. Settings.minimumFetchIntervalMillis में शामिल पैरामीटर.
  2. 12 घंटे की डिफ़ॉल्ट वैल्यू.

अगले चरण

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