रिमोट कॉन्फ़िगरेशन टेंप्लेट और वर्शन

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

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

यहां क्लाइंट टेंप्लेट फ़ाइल का एक उदाहरण दिया गया है:

      {
        "conditions": [
          {
            "name": "ios",
            "expression": "device.os == 'ios'"
          }
        ],
        "parameters": {
          "welcome_message": {
            "defaultValue": {
              "value": "Welcome to this sample app"
            },
            "conditionalValues": {
              "ios": {
                "value": "Welcome to this sample iOS app"
              }
            }
          },
          "welcome_message_caps": {
            "defaultValue": {
              "value": "false"
            }
          },
          "header_text": {
            "defaultValue": {
              "useInAppDefault": true
            }
          }
        },
        "version": {
          "versionNumber": "28",
          "updateTime": "2020-05-14T18:39:38.994Z",
          "updateUser": {
            "email": "user@google.com"
          },
          "updateOrigin": "CONSOLE",
          "updateType": "INCREMENTAL_UPDATE"
        }
      }

यहां सर्वर टेंप्लेट फ़ाइल का एक उदाहरण दिया गया है:

{
  "parameters": {
    "preamble_prompt": {
      "defaultValue": {
        "value": "You are a helpful assistant who knows everything there is to know about Firebase! "
      },
      "description": "Add this prompt to the user's prompt",
      "valueType": "STRING"
    },
    "model_name": {
      "defaultValue": {
        "value": "gemini-pro-test"
      },
      "valueType": "STRING"
    },
    "generation_config": {
      "defaultValue": {
        "value": "{\"temperature\": 0.9, \"maxOutputTokens\": 2048, \"topP\": 0.9, \"topK\": 20}"
      },
      "valueType": "JSON"
    },
  },
  "version": {
    "versionNumber": "19",
    "isLegacy": true
  }
}

Firebase कंसोल की मदद से, वर्शन मैनेज करने से जुड़े ये काम किए जा सकते हैं:

  • सेव किए गए टेंप्लेट के सभी वर्शन की सूची बनाएं
  • किसी खास वर्शन को वापस पाना
  • किसी क्लाइंट वर्शन पर रोल बैक करें
  • बदलाव का इतिहास पेज से, रिमोट कॉन्फ़िगरेशन टेंप्लेट मिटाना

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

हर टेंप्लेट टाइप के लिए, लाइफ़टाइम में सेव किए गए 300 वर्शन की कुल सीमा है (300 क्लाइंट टेंप्लेट और 300 सर्वर टेंप्लेट). इसमें मिटाए गए टेंप्लेट के सेव किए गए वर्शन नंबर भी शामिल हैं. अगर किसी प्रोजेक्ट के चालू रहने के दौरान हर टेंप्लेट टाइप के लिए 300 से ज़्यादा टेंप्लेट वर्शन पब्लिश किए जाते हैं, तो सबसे पहले वाले वर्शन मिटा दिए जाते हैं. इस तरह के ज़्यादा से ज़्यादा 300 वर्शन बनाए जा सकते हैं.

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

Firebase कंसोल, Firebase सीएलआई या रिमोट कॉन्फ़िगरेशन बैकएंड एपीआई की मदद से, वर्शन मैनेज करने से जुड़े ये काम किए जा सकते हैं:

  • सेव किए गए टेंप्लेट के सभी वर्शन की सूची बनाएं
  • किसी खास वर्शन को वापस पाना
  • किसी खास वर्शन पर रोल बैक करना

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

रिमोट कॉन्फ़िगरेशन टेंप्लेट के वर्शन मैनेज करें

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

रिमोट कॉन्फ़िगरेशन टेंप्लेट के सेव किए गए सभी वर्शन की सूची बनाएं

रिमोट कॉन्फ़िगरेशन टेंप्लेट के सेव किए गए सभी वर्शन की सूची को फिर से हासिल किया जा सकता है. उदाहरण के लिए:

Node.js के लिए

function listAllVersions() {
  admin.remoteConfig().listVersions()
    .then((listVersionsResult) => {
      console.log("Successfully fetched the list of versions");
      listVersionsResult.versions.forEach((version) => {
        console.log('version', JSON.stringify(version));
      });
    })
    .catch((error) => {
      console.log(error);
    });
}

Java

ListVersionsPage page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
while (page != null) {
  for (Version version : page.getValues()) {
    System.out.println("Version: " + version.getVersionNumber());
  }
  page = page.getNextPage();
}

// Iterate through all versions. This will still retrieve versions in batches.
page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
for (Version version : page.iterateAll()) {
  System.out.println("Version: " + version.getVersionNumber());
}

REST

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:listVersions

Firebase कंसोल

पैरामीटर टैब में, सबसे ऊपर दाईं ओर दिख रहे "घड़ी" आइकॉन को चुनें. इससे बदलाव का इतिहास पेज खुलेगा. इसमें दाईं ओर मौजूद सूची मेन्यू में, सेव किए गए टेंप्लेट के सभी वर्शन दिखेंगे.

सेव किए गए हर वर्शन की जानकारी में यह जानकारी शामिल होती है: क्या बदलाव, कंसोल से शुरू हुए, REST API के साथ हुए या रोलबैक से हुए हैं या ये बदलाव, टेंप्लेट को फ़ोर्स किए गए सेव करने की वजह से हुए बढ़ोतरी की वजह से हुए थे.

Firebase CLI

firebase remoteconfig:versions:list

दिखाए जाने वाले वर्शन की संख्या को सीमित करने के लिए, --limit विकल्प का इस्तेमाल करें. सभी वर्शन फ़ेच करने के लिए, '0' पास करें.

टेंप्लेट की सूची में, सेव किए गए सभी वर्शन का मेटाडेटा शामिल होता है. इसमें अपडेट का समय, इसे बनाने वाले उपयोगकर्ता, और यह जानकारी शामिल होती है कि इसे कंसोल या REST API के ज़रिए बनाया गया है या नहीं. यहां वर्शन एलिमेंट का एक उदाहरण दिया गया है:

{
  "versions": [{
    "version_number": "6",
    "update_time": "2022-05-12T02:38:54Z",
    "update_user": {
      "name": "Jane Smith",
      "email": "jane@developer.org",
      "imageUrl": "https://lh3.googleusercontent.com/a-/..."
    },
    "description": "One small change on the console",
    "origin": "CONSOLE",
    "update_type": "INCREMENTAL_UPDATE"
  }]

रिमोट कॉन्फ़िगरेशन टेंप्लेट का खास वर्शन वापस पाना

रिमोट कॉन्फ़िगरेशन टेंप्लेट के किसी खास तौर पर सेव किए गए वर्शन को वापस पाया जा सकता है. उदाहरण के लिए:

Node.js के लिए

टेंप्लेट का नया वर्शन वापस पाने के लिए, बिना किसी आर्ग्युमेंट के getTemplate() को पास करें. इसके अलावा, किसी खास वर्शन को वापस पाने के लिए, getTemplateAtVersion() का इस्तेमाल करें.

// Get template version: 6
admin.remoteConfig().getTemplateAtVersion('6')
  .then((template) => {
    console.log("Successfully fetched the template with ETag: " + template.etag);
  })
  .catch((error) => {
    console.log(error);
  });

Java

Template template = FirebaseRemoteConfig.getInstance().getTemplateAtVersionAsync(versionNumber).get();
// See the ETag of the fetched template.
System.out.println("Successfully fetched the template with ETag: " + template.getETag());

REST

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig?version_number=6

यूआरएल पैरामीटर ?version_number सिर्फ़ GET कार्रवाइयों के लिए मान्य है; इसका इस्तेमाल अपडेट के वर्शन नंबर तय करने के लिए नहीं किया जा सकता. ?version_number पैरामीटर के बिना, 'Get अनुरोध' जैसा मिलते-जुलते अनुरोध से, मौजूदा चालू टेंप्लेट को फिर से हासिल किया जा सकेगा.

Firebase कंसोल

डिफ़ॉल्ट रूप से, बदलाव का इतिहास टैब के ब्यौरे वाले पैनल में, मौजूदा चालू टेंप्लेट दिखता है. सूची में से किसी दूसरे वर्शन की जानकारी देखने के लिए, उसे दाएं मेन्यू से चुनें.

चुने गए वर्शन और सेव किए गए किसी भी अन्य वर्शन के फ़र्क़ को देखने के लिए, संदर्भ मेन्यू पर कर्सर घुमाएं. इसके बाद, चुने गए वर्शन से तुलना करें को चुनें.

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

इसके अलावा, -o, FILENAME का इस्तेमाल करके, किसी तय फ़ाइल में आउटपुट लिखा जा सकता है.

रिमोट कॉन्फ़िगरेशन टेंप्लेट के सेव किए गए किसी वर्शन पर रोल बैक करें

टेंप्लेट के सेव किए गए किसी भी वर्शन पर रोल बैक किया जा सकता है. उदाहरण के लिए:

Node.js के लिए

// Roll back to template version: 6
admin.remoteConfig().rollback('6')
  .then((template) => {
    console.log("Successfully rolled back to template version 6.");
    console.log("New ETag: " + template.etag);
  })
  .catch((error) => {
    console.log('Error trying to rollback:', e);
  })

Java

try {
  Template template = FirebaseRemoteConfig.getInstance().rollbackAsync(versionNumber).get();
  System.out.println("Successfully rolled back to template version: " + versionNumber);
  System.out.println("New ETag: " + template.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Error trying to rollback template.");
    System.out.println(rcError.getMessage());
  }
}

REST

सेव किए गए किसी रिमोट कॉन्फ़िगरेशन टेंप्लेट पर रोल बैक करने के लिए, कस्टम तरीके :rollback के साथ एक एचटीटीपी पीओएसटी जारी करें. साथ ही, अनुरोध के मुख्य हिस्से में, उस वर्शन को लागू करें जिसे आपको लागू करना है. उदाहरण के लिए:

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -H "Content-Type: application/json" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:rollback -d '{"version_number": 6}'

रिस्पॉन्स में, अब इस्तेमाल किए जा सकने वाले सेव किए गए टेंप्लेट का कॉन्टेंट, उसके नए वर्शन के मेटाडेटा के साथ शामिल होता है.

Firebase कंसोल

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

Firebase CLI

firebase remoteconfig:rollback -v VERSION_NUMBER

ध्यान दें कि यह रोलबैक कार्रवाई असरदार तरीके से नंबर वाला एक नया वर्शन बनाती है. उदाहरण के लिए, वर्शन 10 से वर्शन 6 में रोल बैक करने से, वर्शन 6 की एक नई कॉपी बेहतर तरीके से बनती है. यह कॉपी, वर्शन 6 से अलग होती है, क्योंकि वर्शन नंबर 11 है. ओरिजनल वर्शन 6 अब भी सेव है. यह मानते हुए कि इसकी समयसीमा खत्म नहीं हुई है और वर्शन 11, एक ऐक्टिव टेंप्लेट बन गया है.

रिमोट कॉन्फ़िगरेशन टेंप्लेट मिटाना

रिमोट कॉन्फ़िगरेशन टेंप्लेट को Firebase कंसोल से मिटाया जा सकता है. रिमोट कॉन्फ़िगरेशन टेंप्लेट मिटाने के लिए:

  1. रिमोट कॉन्फ़िगरेशन के पैरामीटर पेज पर जाकर, बदलाव का इतिहास पर क्लिक करें.

  2. उस टेंप्लेट पर टॉगल करें जिसे आपको मिटाना है. इसके बाद, ज़्यादा पर क्लिक करें और फिर मिटाएं को चुनें.

  3. मिटाने की पुष्टि करने के लिए कहा जाने पर, मिटाएं पर क्लिक करें.

रिमोट कॉन्फ़िगरेशन के टेंप्लेट डाउनलोड और पब्लिश करना

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

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

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

इस तरीके का इस्तेमाल, कॉन्फ़िगरेशन को एक प्रोजेक्ट से दूसरे प्रोजेक्ट पर माइग्रेट करने के लिए भी किया जा सकता है. इसके अलावा, किसी पहले से इंस्टॉल प्रोजेक्ट के पैरामीटर और वैल्यू के साथ, नए प्रोजेक्ट में भी अपने-आप जानकारी भरी जा सकती है.

A/B टेस्टिंग एक्सपेरिमेंट में खास तौर पर वैरिएंट के तौर पर बनाए गए पैरामीटर और पैरामीटर की वैल्यू को एक्सपोर्ट किए गए टेंप्लेट में शामिल नहीं किया जाता.

रिमोट कॉन्फ़िगरेशन टेंप्लेट को एक्सपोर्ट और इंपोर्ट करने के लिए:

  1. मौजूदा रिमोट कॉन्फ़िगरेशन कॉन्फ़िगरेशन टेंप्लेट डाउनलोड करें.
  2. रिमोट कॉन्फ़िगरेशन टेंप्लेट की पुष्टि करें.
  3. रिमोट कॉन्फ़िगरेशन टेंप्लेट पब्लिश करना.

मौजूदा रिमोट कॉन्फ़िगरेशन टेंप्लेट डाउनलोड करें

मौजूदा और चालू रिमोट कॉन्फ़िगरेशन टेंप्लेट को प्रोग्राम के हिसाब से या Firebase कंसोल का इस्तेमाल करके डाउनलोड किया जा सकता है.

JSON फ़ॉर्मैट में ऐक्टिव रिमोट कॉन्फ़िगरेशन टेंप्लेट डाउनलोड करने के लिए, यहां दिए गए निर्देशों का इस्तेमाल करें:

Node.js के लिए

function getTemplate() {
  var config = admin.remoteConfig();
  config.getTemplate()
      .then(function (template) {
        console.log('ETag from server: ' + template.etag);
        var templateStr = JSON.stringify(template);
        fs.writeFileSync('config.json', templateStr);
      })
      .catch(function (err) {
        console.error('Unable to get template');
        console.error(err);
      });
}

Java

Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get();
// See the ETag of the fetched template.
System.out.println("ETag from server: " + template.getETag());

REST

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename

यह निर्देश JSON पेलोड को एक फ़ाइल में और हेडर (ETag के साथ) को एक अलग headers फ़ाइल में दिखाता है.

Firebase कंसोल

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

Firebase CLI

firebase remoteconfig:get -o filename

रिमोट कॉन्फ़िगरेशन टेंप्लेट की पुष्टि करना

Firebase एडमिन SDK या REST API का इस्तेमाल करके, टेंप्लेट के अपडेट पब्लिश करने से पहले, उनकी पुष्टि की जा सकती है. Firebase सीएलआई या Firebase कंसोल से पब्लिश करने की कोशिश करने पर भी टेंप्लेट की पुष्टि की जाती है.

टेंप्लेट की पुष्टि करने की प्रोसेस में, पैरामीटर और शर्तों के लिए डुप्लीकेट कुंजियां, शर्तों के अमान्य नाम या ऐसी शर्तें जो मौजूद नहीं हैं या गलत फ़ॉर्मैट वाले ईटैग जैसी गड़बड़ियों की जांच की जाती है. उदाहरण के लिए, 2000 कुंजियों की अनुमति से ज़्यादा संख्या वाले अनुरोध में गड़बड़ी का मैसेज Param count too large दिखेगा.

Node.js के लिए

function validateTemplate(template) {
  admin.remoteConfig().validateTemplate(template)
      .then(function (validatedTemplate) {
        // The template is valid and safe to use.
        console.log('Template was valid and safe to use');
      })
      .catch(function (err) {
        console.error('Template is invalid and cannot be published');
        console.error(err);
      });
}

Java

try {
  Template validatedTemplate = FirebaseRemoteConfig.getInstance()
          .validateTemplateAsync(template).get();
  System.out.println("Template was valid and safe to use");
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Template is invalid and cannot be published");
    System.out.println(rcError.getMessage());
  }
}

REST

पब्लिश करने के अनुरोध में यूआरएल पैरामीटर ?validate_only=true जोड़कर, टेंप्लेट के अपडेट की पुष्टि करें:

curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig?validate_only=true -d @filename

अगर आपके टेंप्लेट की पुष्टि हो गई है, तो curl कमांड, आपके सबमिट किए गए JSON टेंप्लेट का इस्तेमाल करेगा. सेव की गई headers फ़ाइल में, आपको एचटीटीपी/2 स्टेटस 200 और अपडेट किया गया ETag दिखेगा, जिसमें -0 सफ़िक्स शामिल होगा. अगर आपके टेंप्लेट की पुष्टि नहीं की गई थी, तो आपको JSON के जवाब में, पुष्टि करने से जुड़ी गड़बड़ी मिलेगी. साथ ही, आपकी headers फ़ाइल में गैर-200 रिस्पॉन्स (और कोई ETag नहीं) होगा.

रिमोट कॉन्फ़िगरेशन टेंप्लेट पब्लिश करना

टेंप्लेट डाउनलोड करने, JSON के कॉन्टेंट में ज़रूरी बदलाव करने, और उसकी पुष्टि करने के बाद, उसे किसी प्रोजेक्ट में पब्लिश किया जा सकता है.

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

पब्लिश होने के बाद, पैरामीटर और वैल्यू में किए गए बदलाव आपके ऐप्लिकेशन और उपयोगकर्ताओं के लिए तुरंत उपलब्ध हो जाते हैं. अगर ज़रूरी हो, तो पिछले वर्शन पर रोल बैक किया जा सकता है.

अपना टेंप्लेट पब्लिश करने के लिए, यहां दिए गए निर्देशों का पालन करें:

Node.js के लिए

function publishTemplate() {
  var config = admin.remoteConfig();
  var template = config.createTemplateFromJSON(
      fs.readFileSync('config.json', 'UTF8'));
  config.publishTemplate(template)
      .then(function (updatedTemplate) {
        console.log('Template has been published');
        console.log('ETag from server: ' + updatedTemplate.etag);
      })
      .catch(function (err) {
        console.error('Unable to publish template.');
        console.error(err);
      });
}

Java

try {
  Template publishedTemplate = FirebaseRemoteConfig.getInstance()
          .publishTemplateAsync(template).get();
  System.out.println("Template has been published");
  // See the ETag of the published template.
  System.out.println("ETag from server: " + publishedTemplate.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Unable to publish template.");
    System.out.println(rcError.getMessage());
  }
}

REST

curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -d @filename

इस curl निर्देश के लिए, "@" वर्ण और फिर फ़ाइल नाम का इस्तेमाल करके कॉन्टेंट बताया जा सकता है.

Firebase कंसोल

  1. रिमोट कॉन्फ़िगरेशन पैरामीटर या शर्तें टैब में जाकर, मेन्यू खोलें और फ़ाइल से पब्लिश करें चुनें.
  2. जब कहा जाए, तब ब्राउज़ करें पर क्लिक करें. इसके बाद, उस रिमोट कॉन्फ़िगरेशन फ़ाइल पर जाएं और उसे चुनें जिसे आपको पब्लिश करना है. इसके बाद, चुनें पर क्लिक करें.
  3. फ़ाइल की पुष्टि की जाएगी और अगर जांच पूरी हो जाती है, तो पब्लिश करें पर क्लिक करके, अपने ऐप्लिकेशन और उपयोगकर्ताओं के लिए कॉन्फ़िगरेशन को तुरंत उपलब्ध कराया जा सकता है.

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

  • मनमुताबिक बनाने की सुविधा, प्रोजेक्ट से प्रोजेक्ट में इंपोर्ट नहीं की जा सकती.

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

  • शर्तों को प्रोजेक्ट से प्रोजेक्ट में इंपोर्ट किया जा सकता है. हालांकि, ध्यान रखें कि पब्लिश करने से पहले, टारगेट प्रोजेक्ट में किसी खास शर्त के हिसाब से वैल्यू (जैसे, ऐप्लिकेशन आईडी या ऑडियंस) मौजूद होनी चाहिए.

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

  • आपको जिस टेंप्लेट को पब्लिश करना है, अगर उसमें ऐसी शर्तें शामिल हैं जो Google Analytics का इस्तेमाल करती हैं, तो टारगेट प्रोजेक्ट में Analytics चालू होना ज़रूरी है.

रिमोट कॉन्फ़िगरेशन टेंप्लेट के डिफ़ॉल्ट टेंप्लेट डाउनलोड करें

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

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

आप इन फ़ाइलों को Android ऐप्लिकेशन के लिए एक्सएमएल फ़ॉर्मैट, iOS ऐप्लिकेशन के लिए प्रॉपर्टी की सूची (plist) फ़ॉर्मैट, और वेब ऐप्लिकेशन के लिए JSON फ़ॉर्मैट में डाउनलोड कर सकते हैं.

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

डिफ़ॉल्ट टेंप्लेट वाली फ़ाइल डाउनलोड करने के लिए:

REST

curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=file_format'

आपको जिस फ़ाइल फ़ॉर्मैट को डाउनलोड करना है उसके हिसाब से, format वैल्यू के तौर पर XML, PLIST या JSON का इस्तेमाल करें.

Firebase कंसोल

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

अपने ऐप्लिकेशन में रिमोट कॉन्फ़िगरेशन की डिफ़ॉल्ट वैल्यू इंपोर्ट करने के बारे में ज़्यादा जानने के लिए, यहां देखें: