वेब पर Remote Config का इस्तेमाल शुरू करना

प्लैटफ़ॉर्म चुनें: iOS+ Android वेब Flutter Unity C++


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

Google Cloud CLI या Cloud Shell का इस्तेमाल करके, यह कमांड चलाकर धारक टोकन जनरेट किया जा सकता है:

gcloud auth print-access-token

यह टोकन कुछ समय के लिए ही मान्य होता है. इसलिए, अगर आपको पुष्टि करने में गड़बड़ी का मैसेज मिलता है, तो आपको इसे फिर से जनरेट करना पड़ सकता है.

Firebase console

  1. Firebase कंसोल में, DevOps और यूज़र ऐक्टिविटी > रिमोट कॉन्फ़िगरेशन > पैरामीटर पेज पर जाएं.

  2. मेन्यू खोलें और डिफ़ॉल्ट वैल्यू डाउनलोड करें को चुनें.

  3. जब आपसे पूछा जाए, तब वेब के लिए .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 कंसोल में, DevOps और यूज़र ऐक्टिविटी > रिमोट कॉन्फ़िगरेशन > पैरामीटर पेज पर जाएं.

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

  3. कस्टम सिग्नल की शर्तों का इस्तेमाल करने पर, एट्रिब्यूट और उनकी वैल्यू तय करें. यहां दिए गए उदाहरण में, कस्टम सिग्नल की शर्त तय करने का तरीका बताया गया है.

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

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

      onConfigUpdate(remoteConfig, {
         next: (configUpdate) => {
            console.log("Updated keys:", configUpdate.getUpdatedKeys());
            if (configUpdate.getUpdatedKeys().has("welcome_message")) {
               activate(remoteConfig).then(() => {
               showWelcomeMessage();
               });
            }
         },
         error: (error) => {
            console.log("Config update error:", error);
         },
         complete: () => {
            console.log("Listening stopped.");
         }
      });
  2. अगली बार जब आप अपने Remote Config का नया वर्शन पब्लिश करेंगे, तो आपके ऐप्लिकेशन को चलाने वाले और बदलावों को सुनने वाले डिवाइस, कंप्लीशन हैंडलर को कॉल करेंगे.

थ्रॉटलिंग

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

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

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

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