了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

रिमोट कॉन्फ़िगरेशन को प्रोग्रामेटिक रूप से संशोधित करें

यह दस्तावेज़ वर्णन करता है कि आप JSON-प्रारूपित पैरामीटर और शर्तों के सेट को कैसे प्रोग्रामेटिक रूप से पढ़ और संशोधित कर सकते हैं, जिसे Remote Config Template के रूप में जाना जाता है। यह आपको बैकएंड पर टेम्प्लेट परिवर्तन करने की अनुमति देता है जिसे क्लाइंट ऐप क्लाइंट लाइब्रेरी का उपयोग करके प्राप्त कर सकता है।

रिमोट कॉन्फिग रेस्ट एपीआई या इस गाइड में वर्णित एडमिन एसडीके का उपयोग करके, आप रिमोट कॉन्फिग परिवर्तनों को सीधे अपनी प्रक्रियाओं में एकीकृत करने के लिए फायरबेस कंसोल में टेम्पलेट को प्रबंधित करने से बच सकते हैं। उदाहरण के लिए, Remote Config बैकएंड APIs के साथ, आप यह कर सकते हैं:

  • शेड्यूलिंग रिमोट कॉन्फिग अपडेट । क्रॉन जॉब के साथ एपीआई कॉल का उपयोग करके, आप एक नियमित समय पर रिमोट कॉन्फिग मान बदल सकते हैं।
  • अपने स्वयं के स्वामित्व वाले सिस्टम से Firebase Remote Config में कुशलतापूर्वक संक्रमण करने के लिए बैच आयात कॉन्फ़िगरेशन मान
  • Firebase के लिए Cloud Functions के साथ Remote Config का उपयोग करें , सर्वर-साइड होने वाली घटनाओं के आधार पर अपने ऐप में मूल्यों को बदलते रहें। उदाहरण के लिए, आप अपने ऐप में एक नई सुविधा का प्रचार करने के लिए Remote Config का उपयोग कर सकते हैं, और जब आपको पता चलता है कि पर्याप्त लोगों ने नई सुविधा के साथ इंटरैक्ट किया है, तो उस प्रचार को स्वचालित रूप से बंद कर दें।

    रिमोट कॉन्फ़िगरेशन बैकएंड को कस्टम टूल और सर्वर के साथ इंटरैक्ट करते हुए आरेख दिखा रहा है

इस मार्गदर्शिका के निम्न अनुभाग उन कार्रवाइयों का वर्णन करते हैं जिन्हें आप Remote Config बैकएंड API के साथ कर सकते हैं। REST API के माध्यम से इन कार्यों को करने वाले कुछ कोड की समीक्षा करने के लिए, इनमें से एक नमूना ऐप देखें:

फायरबेस एडमिन एसडीके का उपयोग करके रिमोट कॉन्फिग को संशोधित करें

एडमिन एसडीके सर्वर लाइब्रेरी का एक सेट है जो आपको विशेषाधिकार प्राप्त वातावरण से फायरबेस के साथ इंटरैक्ट करने देता है। रिमोट कॉन्फिग में अपडेट करने के अलावा, एडमिन एसडीके फायरबेस ऑथेंटिक टोकन के निर्माण और सत्यापन, रीयलटाइम डेटाबेस से पढ़ने और लिखने आदि को सक्षम बनाता है। व्यवस्थापन SDK पूर्वापेक्षाएँ और सेटअप के बारे में अधिक जानने के लिए, अपने सर्वर में Firebase व्यवस्थापक SDK जोड़ें देखें।

एक विशिष्ट रिमोट कॉन्फिग प्रवाह में, आप वर्तमान टेम्पलेट प्राप्त कर सकते हैं, कुछ पैरामीटर या पैरामीटर समूहों और शर्तों को संशोधित कर सकते हैं, टेम्पलेट को मान्य कर सकते हैं और फिर इसे प्रकाशित कर सकते हैं। वे API कॉल करने से पहले, आपको SDK से अनुरोधों को अधिकृत करना होगा।

एसडीके प्रारंभ करें और एपीआई अनुरोधों को अधिकृत करें

जब आप व्यवस्थापक SDK को बिना किसी पैरामीटर के आरंभ करते हैं, तो SDK Google एप्लिकेशन डिफ़ॉल्ट क्रेडेंशियल्स का उपयोग करता है और FIREBASE_CONFIG पर्यावरण चर से विकल्प पढ़ता है। यदि FIREBASE_CONFIG चर की सामग्री { से शुरू होती है तो इसे JSON ऑब्जेक्ट के रूप में पार्स किया जाएगा। अन्यथा एसडीके मानता है कि स्ट्रिंग एक JSON फ़ाइल का नाम है जिसमें विकल्प हैं।

उदाहरण के लिए:

नोड.जेएस

const admin = require('firebase-admin');
admin.initializeApp();

जावा

FileInputStream serviceAccount = new FileInputStream("service-account.json");
FirebaseOptions options = FirebaseOptions.builder()
        .setCredentials(GoogleCredentials.fromStream(serviceAccount))
        .build();
FirebaseApp.initializeApp(options);

वर्तमान दूरस्थ कॉन्फ़िग टेम्पलेट प्राप्त करें

Remote Config Templates के साथ काम करते समय, ध्यान रखें कि वे संस्करणित हैं, और यह कि प्रत्येक संस्करण के निर्माण के समय से उस समय तक सीमित जीवनकाल होता है जब आप इसे अपडेट के साथ बदलते हैं: 90 दिन, 300 संग्रहीत संस्करणों की कुल सीमा के साथ। अधिक जानकारी के लिए टेम्प्लेट और वर्जनिंग देखें।

आप JSON प्रारूप में रिमोट कॉन्फिग टेम्पलेट के वर्तमान सक्रिय संस्करण को प्राप्त करने के लिए बैकएंड एपीआई का उपयोग कर सकते हैं।

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

टेम्पलेट प्राप्त करने के लिए:

नोड.जेएस

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

जावा

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

रिमोट कॉन्फ़िगरेशन पैरामीटर संशोधित करें

आप दूरस्थ कॉन्फ़िगरेशन पैरामीटर और पैरामीटर समूहों को प्रोग्रामेटिक रूप से संशोधित और जोड़ सकते हैं। उदाहरण के लिए, "new_menu" नाम के एक मौजूदा पैरामीटर समूह में आप मौसमी जानकारी के प्रदर्शन को नियंत्रित करने के लिए एक पैरामीटर जोड़ सकते हैं:

नोड.जेएस

function addParameterToGroup(template) {
  template.parameterGroups['new_menu'].parameters['spring_season'] = {
    defaultValue: {
      useInAppDefault: true
    },
    description: 'spring season menu visibility.',
  };
}

जावा

template.getParameterGroups().get("new_menu").getParameters()
        .put("spring_season", new Parameter()
                .setDefaultValue(ParameterValue.inAppDefault())
                .setDescription("spring season menu visibility.")
        );

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

दूरस्थ कॉन्फ़िग शर्तों को संशोधित करें

आप रिमोट कॉन्फिग शर्तों और सशर्त मानों को प्रोग्रामेटिक रूप से संशोधित और जोड़ सकते हैं। उदाहरण के लिए, एक नई शर्त जोड़ने के लिए:

नोड.जेएस

function addNewCondition(template) {
  template.conditions.push({
    name: 'android_en',
    expression: 'device.os == \'android\' && device.country in [\'us\', \'uk\']',
    tagColor: 'BLUE',
  });
}

जावा

template.getConditions().add(new Condition("android_en",
        "device.os == 'android' && device.country in ['us', 'uk']", TagColor.BLUE));

सभी मामलों में, आपको संशोधन करने के बाद टेम्पलेट को स्पष्ट रूप से प्रकाशित करना होगा।

Remote Config बैकएंड एपीआई कई शर्तें और तुलना ऑपरेटर प्रदान करते हैं जिनका उपयोग आप अपने ऐप के व्यवहार और उपस्थिति को बदलने के लिए कर सकते हैं। शर्तों और इन शर्तों के लिए समर्थित ऑपरेटरों के बारे में अधिक जानने के लिए, सशर्त अभिव्यक्ति संदर्भ देखें।

दूरस्थ कॉन्फ़िग टेम्पलेट को मान्य करें

वैकल्पिक रूप से, आप अपने अद्यतनों को प्रकाशित करने से पहले सत्यापित कर सकते हैं, जैसा कि दिखाया गया है:

नोड.जेएस

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

जावा

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

यह सत्यापन प्रक्रिया मापदंडों और शर्तों के लिए डुप्लिकेट कुंजियों, अमान्य स्थिति के नाम या गैर-मौजूद स्थितियों, या गलत स्वरूपित ईटैग जैसी त्रुटियों की जाँच करती है। उदाहरण के लिए, कुंजियों की अनुमत संख्या—2000—से अधिक होने वाला अनुरोध त्रुटि संदेश लौटाएगा, Param count too large

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

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

यदि आवश्यक हो, तो आप पिछले संस्करण में वापस आने के लिए REST API का उपयोग कर सकते हैं। किसी अपडेट में त्रुटियों के जोखिम को कम करने के लिए, आप प्रकाशन से पहले सत्यापित कर सकते हैं।

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

  • वैयक्तिकरण को परियोजना से परियोजना में आयात नहीं किया जा सकता है।

    उदाहरण के लिए, यदि आपके पास अपने प्रोजेक्ट में वैयक्तिकरण सक्षम है और एक टेम्पलेट को डाउनलोड और संपादित करते हैं, तो आप इसे उसी प्रोजेक्ट पर प्रकाशित कर सकते हैं, लेकिन आप इसे किसी अन्य प्रोजेक्ट में तब तक प्रकाशित नहीं कर सकते जब तक आप टेम्पलेट से वैयक्तिकरण को हटा नहीं देते।

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

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

  • यदि आप जिस टेम्पलेट को प्रकाशित करने की योजना बना रहे हैं उसमें ऐसी शर्तें हैं जो Google Analytics पर निर्भर करती हैं, तो लक्ष्य प्रोजेक्ट में Analytics को सक्षम किया जाना चाहिए।

नोड.जेएस

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

जावा

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 API का उपयोग करके रिमोट कॉन्फिग को संशोधित करें

यह खंड https://firebaseremoteconfig.googleapis.com पर Remote Config REST API की मुख्य क्षमताओं का वर्णन करता है। पूर्ण विवरण के लिए, एपीआई संदर्भ देखें।

एपीआई अनुरोधों को प्रमाणित और अधिकृत करने के लिए एक्सेस टोकन प्राप्त करें

फायरबेस प्रोजेक्ट Google सेवा खातों का समर्थन करते हैं, जिनका उपयोग आप अपने ऐप सर्वर या विश्वसनीय वातावरण से फायरबेस सर्वर एपीआई को कॉल करने के लिए कर सकते हैं। यदि आप स्थानीय रूप से कोड विकसित कर रहे हैं या अपने एप्लिकेशन को ऑन-प्रिमाइसेस परिनियोजित कर रहे हैं, तो आप सर्वर अनुरोधों को अधिकृत करने के लिए इस सेवा खाते के माध्यम से प्राप्त क्रेडेंशियल्स का उपयोग कर सकते हैं।

किसी सेवा खाते को प्रमाणित करने और उसे Firebase सेवाओं तक पहुँचने के लिए अधिकृत करने के लिए, आपको JSON प्रारूप में एक निजी कुंजी फ़ाइल जनरेट करनी होगी।

अपने सेवा खाते के लिए एक निजी कुंजी फ़ाइल जनरेट करने के लिए:

  1. Firebase कंसोल में, सेटिंग > सेवा खाते खोलें.

  2. Generate New Private Key पर क्लिक करें, फिर Generate Key पर क्लिक करके पुष्टि करें।

  3. कुंजी वाली JSON फ़ाइल को सुरक्षित रूप से संग्रहीत करें।

सेवा खाते के माध्यम से प्राधिकृत करते समय, आपके पास अपने आवेदन को क्रेडेंशियल प्रदान करने के लिए दो विकल्प होते हैं। आप या तो GOOGLE_APPLICATION_CREDENTIALS पर्यावरण चर सेट कर सकते हैं, या आप कोड में सेवा खाता कुंजी के पथ को स्पष्ट रूप से पास कर सकते हैं। पहला विकल्प अधिक सुरक्षित है और इसकी पुरजोर सिफारिश की जाती है।

पर्यावरण चर सेट करने के लिए:

पर्यावरण चर GOOGLE_APPLICATION_CREDENTIALS उस JSON फ़ाइल के फ़ाइल पथ पर सेट करें जिसमें आपकी सेवा खाता कुंजी है। यह चर केवल आपके वर्तमान शेल सत्र पर लागू होता है, इसलिए यदि आप एक नया सत्र खोलते हैं, तो चर को फिर से सेट करें।

लिनक्स या macOS

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

खिड़कियाँ

पॉवरशेल के साथ:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"

आपके द्वारा उपरोक्त चरणों को पूरा करने के बाद, एप्लिकेशन डिफ़ॉल्ट क्रेडेंशियल्स (ADC) आपके क्रेडेंशियल्स को स्पष्ट रूप से निर्धारित करने में सक्षम है, जिससे आपको गैर-Google वातावरण में परीक्षण या चलाने के दौरान सेवा खाता क्रेडेंशियल्स का उपयोग करने की अनुमति मिलती है।

अल्पकालिक OAuth 2.0 एक्सेस टोकन प्राप्त करने के लिए अपनी पसंदीदा भाषा के लिए Google Auth लाइब्रेरी के साथ अपने Firebase क्रेडेंशियल्स का उपयोग करें:

नोड.जेएस

 function getAccessToken() {
  return admin.credential.applicationDefault().getAccessToken()
      .then(accessToken => {
        return accessToken.access_token;
      })
      .catch(err => {
        console.error('Unable to get access token');
        console.error(err);
      });
}

इस उदाहरण में, Google API क्लाइंट लाइब्रेरी JSON वेब टोकन, या JWT के साथ अनुरोध को प्रमाणित करती है। अधिक जानकारी के लिए, JSON वेब टोकन देखें।

अजगर

def _get_access_token():
  """Retrieve a valid access token that can be used to authorize requests.

  :return: Access token.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      'service-account.json', SCOPES)
  access_token_info = credentials.get_access_token()
  return access_token_info.access_token

जावा

private static String getAccessToken() throws IOException {
  GoogleCredentials googleCredentials = GoogleCredentials
          .fromStream(new FileInputStream("service-account.json"))
          .createScoped(Arrays.asList(SCOPES));
  googleCredentials.refreshAccessToken();
  return googleCredentials.getAccessToken().getTokenValue();
}

आपके एक्सेस टोकन की समय सीमा समाप्त होने के बाद, अपडेटेड एक्सेस टोकन को पुनः प्राप्त करने के लिए टोकन रिफ्रेश विधि को स्वचालित रूप से कॉल किया जाता है।

Remote Config तक पहुंच को अधिकृत करने के लिए, https://www.googleapis.com/auth/firebase.remoteconfig दायरे का अनुरोध करें।

रिमोट कॉन्फिग टेम्पलेट को संशोधित करें

Remote Config Templates के साथ काम करते समय, ध्यान रखें कि वे संस्करणित हैं, और यह कि प्रत्येक संस्करण के निर्माण के समय से उस समय तक सीमित जीवनकाल होता है जब आप इसे अपडेट के साथ बदलते हैं: 90 दिन, 300 संग्रहीत संस्करणों की कुल सीमा के साथ। अधिक जानकारी के लिए टेम्प्लेट और वर्जनिंग देखें।

वर्तमान दूरस्थ कॉन्फ़िग टेम्पलेट प्राप्त करें

आप JSON प्रारूप में रिमोट कॉन्फिग टेम्पलेट के वर्तमान सक्रिय संस्करण को प्राप्त करने के लिए बैकएंड एपीआई का उपयोग कर सकते हैं।

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

निम्नलिखित आदेशों का प्रयोग करें:

कर्ल

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

यह कमांड JSON पेलोड को एक फ़ाइल में और हेडर (Etag सहित) को एक अलग फ़ाइल में आउटपुट करता है।

कच्चा HTTP अनुरोध

Host: firebaseremoteconfig.googleapis.com

GET /v1/projects/my-project-id/remoteConfig HTTP/1.1
Authorization: Bearer token
Accept-Encoding: gzip

यह एपीआई कॉल एक अलग हेडर के साथ निम्नलिखित JSON लौटाता है जिसमें एक ईटैग शामिल होता है जिसे आप बाद के अनुरोध के लिए उपयोग करते हैं।

दूरस्थ कॉन्फ़िग टेम्पलेट को मान्य करें

वैकल्पिक रूप से, आप अपने अद्यतनों को प्रकाशित करने से पहले उन्हें मान्य कर सकते हैं। अपने प्रकाशित अनुरोध में URL पैरामीटर ?validate_only=true जोड़कर टेम्प्लेट अपडेट मान्य करें। प्रतिक्रिया में, एक स्थिति कोड 200 और प्रत्यय -0 के साथ एक अद्यतन ईटैग का मतलब है कि आपका अपडेट सफलतापूर्वक सत्यापित किया गया था। कोई गैर-200 प्रतिसाद इंगित करता है कि JSON डेटा में त्रुटियां हैं जिन्हें आपको प्रकाशित करने से पहले ठीक करना होगा.

रिमोट कॉन्फिग टेम्प्लेट को अपडेट करें

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

यदि आवश्यक हो, तो आप पिछले संस्करण में वापस आने के लिए REST API का उपयोग कर सकते हैं। किसी अपडेट में त्रुटियों के जोखिम को कम करने के लिए, आप प्रकाशन से पहले सत्यापित कर सकते हैं।

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

  • वैयक्तिकरण को परियोजना से परियोजना में आयात नहीं किया जा सकता है।

    उदाहरण के लिए, यदि आपके पास अपने प्रोजेक्ट में वैयक्तिकरण सक्षम है और एक टेम्पलेट को डाउनलोड और संपादित करते हैं, तो आप इसे उसी प्रोजेक्ट पर प्रकाशित कर सकते हैं, लेकिन आप इसे किसी अन्य प्रोजेक्ट में तब तक प्रकाशित नहीं कर सकते जब तक आप टेम्पलेट से वैयक्तिकरण को हटा नहीं देते।

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

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

  • यदि आप जिस टेम्पलेट को प्रकाशित करने की योजना बना रहे हैं उसमें ऐसी शर्तें हैं जो Google Analytics पर निर्भर करती हैं, तो लक्ष्य प्रोजेक्ट में Analytics को सक्षम किया जाना चाहिए।

कर्ल

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 कमांड के लिए, आप फ़ाइल नाम के बाद "@" वर्ण का उपयोग करके सामग्री निर्दिष्ट कर सकते हैं।

कच्चा HTTP अनुरोध

Host: firebaseremoteconfig.googleapis.com
PUT /v1/projects/my-project-id/remoteConfig HTTP/1.1
Content-Length: size
Content-Type: application/json; UTF8
Authorization: Bearer token
If-Match: expected ETag
Accept-Encoding: gzip
JSON_HERE

क्योंकि यह एक लिखित अनुरोध है, ETag को इस कमांड द्वारा संशोधित किया गया है और अगले PUT कमांड के प्रतिक्रिया हेडर में एक अद्यतन ETag प्रदान किया गया है।

दूरस्थ कॉन्फ़िग शर्तों को संशोधित करें

आप Remote Config शर्तों और सशर्त मानों को प्रोग्रामेटिक रूप से संशोधित कर सकते हैं। REST API के साथ, आपको टेम्प्लेट प्रकाशित करने से पहले शर्तों को संशोधित करने के लिए सीधे टेम्प्लेट को संपादित करना होगा।

{
  "conditions": [{
    "name": "android_english",
    "expression": "device.os == 'android' && device.country in ['us', 'uk']",
    "tagColor": "BLUE"
  }, {
    "name": "tenPercent",
    "expression": "percent <= 10",
    "tagColor": "BROWN"
  }],
  "parameters": {
    "welcome_message": {
      "defaultValue": {
        "value": "Welcome to this sample app"
      },
      "conditionalValues": {
        "tenPercent": {
          "value": "Welcome to this new sample app"
        }
      },
      "description": "The sample app's welcome message"
    },
    "welcome_message_caps": {
      "defaultValue": {
        "value": "false"
      },
      "conditionalValues": {
        "android_english": {
          "value": "true"
        }
      },
      "description": "Whether the welcome message should be displayed in all capital letters."
    }
  }
}

उपरोक्त संशोधन पहले शर्तों के एक सेट को परिभाषित करते हैं, और फिर प्रत्येक पैरामीटर के लिए डिफ़ॉल्ट मान और शर्त-आधारित पैरामीटर ( सशर्त मान ) मान परिभाषित करते हैं। यह प्रत्येक तत्व के लिए एक वैकल्पिक विवरण भी जोड़ता है; कोड टिप्पणियों की तरह, ये डेवलपर उपयोग के लिए हैं और ऐप में प्रदर्शित नहीं होते हैं। संस्करण नियंत्रण उद्देश्यों के लिए एक ETag भी प्रदान किया गया है।

Remote Config बैकएंड एपीआई कई शर्तें और तुलना ऑपरेटर प्रदान करते हैं जिनका उपयोग आप अपने ऐप के व्यवहार और उपस्थिति को बदलने के लिए कर सकते हैं। शर्तों और इन शर्तों के लिए समर्थित ऑपरेटरों के बारे में अधिक जानने के लिए, सशर्त अभिव्यक्ति संदर्भ देखें।

HTTP त्रुटि कोड

स्थिति का कोड अर्थ
200 सफलतापूर्वक उत्परिवर्तित
400 एक सत्यापन त्रुटि हुई। उदाहरण के लिए, कुंजियों की अनुमत संख्या—2000—से अधिक वाला अनुरोध त्रुटि संदेश के साथ 400 (खराब अनुरोध) लौटाएगा, Param count too large । साथ ही, यह HTTPS स्थिति कोड इन दो स्थितियों में हो सकता है:
  • एक संस्करण बेमेल त्रुटि हुई क्योंकि मूल्यों और शर्तों के सेट को तब से अपडेट किया गया है जब आपने अंतिम बार ETag मान प्राप्त किया था। इसे हल करने के लिए, आपको एक नया टेम्प्लेट और ETag मान प्राप्त करने के लिए GET कमांड का उपयोग करना चाहिए, टेम्प्लेट को अपडेट करना चाहिए, और फिर उस टेम्प्लेट और नए ETag मान का उपयोग करके सबमिट करना चाहिए।
  • If-Match हेडर निर्दिष्ट किए बिना एक PUT कमांड (अपडेट रिमोट कॉन्फिग टेम्प्लेट रिक्वेस्ट) बनाया गया था।
401 एक प्राधिकरण त्रुटि हुई (कोई एक्सेस टोकन प्रदान नहीं किया गया था या क्लाउड डेवलपर कंसोल में आपके प्रोजेक्ट में Firebase Remote Config REST API नहीं जोड़ा गया है)
403 एक प्रमाणीकरण त्रुटि हुई (गलत एक्सेस टोकन प्रदान किया गया था)
500 एक आंतरिक त्रुटि हुई। यदि यह त्रुटि होती है, तो Firebase समर्थन टिकट फ़ाइल करें

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

अपने टेम्प्लेट में अपडेट सबमिट करने के बाद, यह सत्यापित करने के लिए कि आपके परिवर्तन अपेक्षित रूप से दिखाई दे रहे हैं, Firebase कंसोल पर जाएं। यह महत्वपूर्ण है क्योंकि शर्तों का क्रम प्रभावित करता है कि उनका मूल्यांकन कैसे किया जाता है (पहली शर्त जो true मूल्यांकन करती है वह प्रभावी होती है)।

ETag उपयोग और जबरन अद्यतन

रिमोट कॉन्फिग रेस्ट एपीआई दौड़ की स्थिति और संसाधनों के अद्यतनों को ओवरलैप करने से रोकने के लिए एक इकाई टैग (ETag) का उपयोग करता है। Etags के बारे में अधिक जानने के लिए, ETag - HTTP देखें।

REST API के लिए, Google अनुशंसा करता है कि आप नवीनतम GET कमांड द्वारा प्रदान किए गए ETag को कैश करें, और PUT कमांड जारी करते समय उस ETag मान का उपयोग If-Match अनुरोध शीर्षलेख में करें। यदि आपका PUT कमांड HTTPS स्थिति कोड 409 में परिणाम देता है, तो आपको अपने अगले PUT कमांड के साथ उपयोग करने के लिए एक नया ETag और टेम्पलेट प्राप्त करने के लिए एक नया GET कमांड जारी करना चाहिए।

रिमोट कॉन्फिग टेम्प्लेट को निम्नानुसार अपडेट करने के लिए बाध्य करके आप ETag और उससे मिलने वाली सुरक्षा से बच सकते हैं: If-Match: * हालांकि, इस दृष्टिकोण की अनुशंसा नहीं की जाती है क्योंकि यह आपके रिमोट कॉन्फिग के अपडेट को खोने का जोखिम उठाता है। टेम्पलेट अगर एक से अधिक क्लाइंट Remote Config टेम्पलेट को अपडेट कर रहे हैं। एपीआई का उपयोग करने वाले कई ग्राहकों के साथ या एपीआई क्लाइंट और फायरबेस कंसोल उपयोगकर्ताओं के परस्पर विरोधी अपडेट के साथ इस तरह का विरोध हो सकता है।

Remote Config Template संस्करणों के प्रबंधन पर मार्गदर्शन के लिए, Remote Config Templates and Versioning देखें।