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


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

इस सेक्शन में, क्लाइंट टेंप्लेट के बारे में बताया गया है. सर्वर के हिसाब से टेंप्लेट के बारे में जानने के लिए, सर्वर टेंप्लेट पर क्लिक करें.

टेंप्लेट में बदलाव करने और उसे मैनेज करने के लिए, Firebase कंसोल का इस्तेमाल किया जा सकता है. टेंप्लेट का कॉन्टेंट देखने के लिए, DevOps और यूज़र ऐक्टिविटी > Remote Config पर जाएं. इसके बाद, पैरामीटर पेज और शर्तें पेज.

क्लाइंट टेंप्लेट में बदलाव करने और उसे मैनेज करने के लिए, Remote Config REST API और Admin 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"
        }
      }

Firebase कंसोल में जाकर, वर्शन मैनेजमेंट से जुड़े ये टास्क पूरे किए जा सकते हैं (DevOps और यूज़र ऐक्टिविटी > रिमोट कॉन्फ़िगरेशन पर जाएं):

  • सेव किए गए सभी टेंप्लेट वर्शन की सूची बनाना
  • किसी खास वर्शन को वापस लाना
  • किसी क्लाइंट वर्शन पर वापस जाएं .
  • बदलाव का इतिहास पेज से Remote Config टेंप्लेट मिटाएं.

Firebase CLI और Remote Config बैकएंड एपीआई का इस्तेमाल करके, टेंप्लेट की सूची बनाई जा सकती है, टेंप्लेट वापस पाए जा सकते हैं, और टेंप्लेट को पहले जैसा किया जा सकता है.

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

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

Remote Config टेंप्लेट को Firebase कंसोल में जाकर, DevOps और यूज़र ऐक्टिविटी > Remote Config >> बदलाव का इतिहास पेज >में जाकर मिटाया जा सकता है.

Remote Config टेंप्लेट के वर्शन मैनेज करना

इस सेक्शन में, Remote Config टेंप्लेट के वर्शन मैनेज करने का तरीका बताया गया है.

प्रोग्राम के हिसाब से टेंप्लेट बनाने, उनमें बदलाव करने, और उन्हें सेव करने के तरीके के बारे में ज़्यादा जानने के लिए, प्रोग्राम के हिसाब से Remote Config में बदलाव करना लेख पढ़ें.

Remote Config टेंप्लेट के सेव किए गए सभी वर्शन की सूची बनाना

Remote Config टेंप्लेट के सेव किए गए सभी वर्शन की सूची वापस पाई जा सकती है. ऐसा करने के लिए:

Firebase कंसोल

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

  2. सबसे ऊपर दाईं ओर मौजूद, "घड़ी" आइकॉन को चुनें.

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

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

Firebase सीएलआई

firebase remoteconfig:versions:list

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

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

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

```json
{
  "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"
  }]
}
```

Remote Config टेंप्लेट का कोई खास वर्शन वापस पाना

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

Firebase कंसोल

  1. Firebase कंसोल में, DevOps और यूज़र ऐक्टिविटी > Remote Config > बदलाव का इतिहास पेज पर जाएं.

  2. डिफ़ॉल्ट रूप से, पेज पर मौजूदा ऐक्टिव टेंप्लेट दिखता है. कोई दूसरा वर्शन देखने के लिए, दाईं ओर मौजूद 'जानकारी' पैनल से उसे चुनें.

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

Firebase सीएलआई

firebase remoteconfig:get -v VERSION_NUMBER

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

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 अनुरोध से, मौजूदा ऐक्टिव टेंप्लेट को वापस पाया जा सकता है.

Remote Config टेंप्लेट के सेव किए गए किसी वर्शन पर वापस जाएं

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

Firebase कंसोल

  1. Firebase कंसोल में, DevOps और यूज़र ऐक्टिविटी > Remote Config > बदलाव का इतिहास पेज पर जाएं.

  2. पेज पर सबसे ऊपर दाईं ओर मौजूद, विकल्प बटन ढूंढें. यह बटन, टेंप्लेट के उन पिछले वर्शन के लिए होता है जिन्हें रोलबैक किया जा सकता है.

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

Firebase सीएलआई

firebase remoteconfig:rollback -v VERSION_NUMBER

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

सेव किए गए Remote Config टेंप्लेट पर वापस जाने के लिए, एचटीटीपी पोस्ट जारी करें. इसके लिए, कस्टम तरीके :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}'

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

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

Remote Config टेंप्लेट मिटाना

Firebase कंसोल का इस्तेमाल करके, Remote Config टेंप्लेट मिटाए जा सकते हैं. टेंप्लेट मिटाने का तरीका यहां बताया गया है:

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

  2. बदलाव का इतिहास पर क्लिक करें.

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

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

Remote Config टेंप्लेट डाउनलोड और पब्लिश करना

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

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

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

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

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

Remote Config टेंप्लेट एक्सपोर्ट और इंपोर्ट करने के लिए:

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

मौजूदा Remote Config टेंप्लेट डाउनलोड करें

JSON फ़ॉर्मैट में, चालू Remote Config टेंप्लेट डाउनलोड करने के लिए, इसका इस्तेमाल करें:

Firebase कंसोल

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

  2. मेन्यू खोलें और मौजूदा कॉन्फ़िगरेशन फ़ाइल डाउनलोड करें को चुनें.

  3. जब आपसे कहा जाए, तब कॉन्फ़िगरेशन फ़ाइल डाउनलोड करें पर क्लिक करें. इसके बाद, वह जगह चुनें जहां आपको फ़ाइल सेव करनी है. इसके बाद, सेव करें पर क्लिक करें.

Firebase सीएलआई

firebase remoteconfig:get -o filename

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 पेलोड को एक फ़ाइल में और हेडर (ईटैग भी शामिल है) को एक अलग headers फ़ाइल में आउटपुट किया जाता है.

Remote Config टेंप्लेट की पुष्टि करना

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

टेंप्लेट की पुष्टि करने की प्रोसेस में, इन गड़बड़ियों की जांच की जाती है: पैरामीटर और शर्तों के लिए डुप्लीकेट कुंजियां, शर्तों के अमान्य नाम या मौजूद न होने वाली शर्तें या गलत फ़ॉर्मैट वाले ईटैग. उदाहरण के लिए, अगर किसी अनुरोध में तय सीमा से ज़्यादा कुंजियां (2,000) शामिल हैं, तो गड़बड़ी का मैसेज 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

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

Remote Config टेंप्लेट पब्लिश करना

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

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

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

अपने टेंप्लेट को पब्लिश करने के लिए, इन कमांड का इस्तेमाल करें:

Firebase कंसोल

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

  2. मेन्यू खोलें और किसी फ़ाइल से पब्लिश करें को चुनें.

  3. जब कहा जाए, तब ब्राउज़ करें पर क्लिक करें. इसके बाद, उस Remote Config फ़ाइल पर जाएं जिसे पब्लिश करना है और उसे चुनें. इसके बाद, चुनें पर क्लिक करें.

  4. फ़ाइल की पुष्टि की जाएगी. अगर पुष्टि हो जाती है, तो अपने ऐप्लिकेशन और उपयोगकर्ताओं के लिए कॉन्फ़िगरेशन तुरंत उपलब्ध कराने के लिए, पब्लिश करें पर क्लिक करें.

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 कमांड के लिए, कॉन्टेंट को "@" वर्ण के बाद फ़ाइल का नाम लिखकर तय किया जा सकता है.

Remote Config निजीकरण और शर्तें, डाउनलोड किए गए टेंप्लेट में शामिल होती हैं. इसलिए, किसी दूसरे प्रोजेक्ट में पब्लिश करने की कोशिश करते समय, इन सीमाओं के बारे में जानना ज़रूरी है:

  • प्रोजेक्ट के हिसाब से बनाई गई सेटिंग को एक प्रोजेक्ट से दूसरे प्रोजेक्ट में इंपोर्ट नहीं किया जा सकता.

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

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

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

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

Remote Config टेंप्लेट के डिफ़ॉल्ट डाउनलोड करना

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

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

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

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

टेंप्लेट की डिफ़ॉल्ट सेटिंग वाली फ़ाइल डाउनलोड करने का तरीका यहां बताया गया है:

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. Firebase कंसोल में, DevOps और यूज़र ऐक्टिविटी > Remote Config > पैरामीटर पेज पर जाएं.

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

  3. जब आपसे पूछा जाए, तब उस फ़ाइल फ़ॉर्मैट से जुड़े रेडियो बटन पर क्लिक करें जिसे आपको डाउनलोड करना है. इसके बाद, फ़ाइल डाउनलोड करें पर क्लिक करें.

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