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

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


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

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

Remote Config
  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 कंसोल

  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 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 का इस्तेमाल करके, 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 का नया वर्शन पब्लिश किया जाएगा, तो आपके ऐप्लिकेशन को चलाने वाले और बदलावों की जानकारी पाने वाले डिवाइस कंप्लीशन हैंडलर को कॉल करेंगे.

थ्रॉटलिंग

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

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

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

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