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

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

Remote Config REST API का इस्तेमाल करके या इस गाइड में बताए गए Admin SDK के हिसाब से, इन्हें बायपास किया जा सकता है को सीधे तौर पर इंटिग्रेट करने के लिए, Firebase कंसोल में टेंप्लेट को मैनेज करना Remote Config आपकी अपनी प्रक्रियाओं में बदलाव करता है. उदाहरण के लिए, Remote Config बैकएंड एपीआई की मदद से, ये काम किए जा सकते हैं:

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

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

इस गाइड के नीचे दिए गए सेक्शन में, उन कार्रवाइयों के बारे में बताया गया है जिन्हें Remote Config बैकएंड एपीआई की मदद से किया जा सकता है. ऐसे कोड की समीक्षा करने के लिए जो REST API के ज़रिए टास्क सबमिट करती हैं, तो इनमें से कोई एक सैंपल ऐप्लिकेशन देखें:

Firebase Admin SDK टूल का इस्तेमाल करके, रिमोट कॉन्फ़िगरेशन में बदलाव करना

Admin SDK, सर्वर लाइब्रेरी का एक सेट है. इसकी मदद से, ऐक्सेस लेवल वाले एनवायरमेंट से Firebase के साथ इंटरैक्ट किया जा सकता है. Remote Config में अपडेट करने के अलावा, Admin SDK की मदद से Firebase पुष्टि करने वाले टोकन जनरेट और पुष्टि किए जा सकते हैं. साथ ही, Realtime Database से पढ़ने और उसमें लिखने जैसे काम भी किए जा सकते हैं. Admin SDK सेटअप करने से पहले की ज़रूरी शर्तों और सेटअप के बारे में ज़्यादा जानने के लिए, अपने सर्वर में Firebase Admin SDK टूल जोड़ना लेख पढ़ें.

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

SDK टूल शुरू करें और एपीआई अनुरोधों को अनुमति दें

बिना पैरामीटर के Admin SDK शुरू करने पर, SDK टूल Google ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल और FIREBASE_CONFIG एनवायरमेंट वैरिएबल से विकल्पों को पढ़ता है. अगर FIREBASE_CONFIG वैरिएबल का कॉन्टेंट { से शुरू होता है, तो उसे JSON ऑब्जेक्ट के तौर पर पार्स किया जाएगा. ऐसा न होने पर, SDK यह मान लेता है कि स्ट्रिंग, विकल्पों वाली JSON फ़ाइल का नाम है.

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

Node.js

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

Java

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

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

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

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

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

टेंप्लेट पाने के लिए:

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

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

प्रोग्राम के हिसाब से, Remote Config पैरामीटर और पैरामीटर ग्रुप में बदलाव किया जा सकता है और उन्हें जोड़ा जा सकता है. उदाहरण के लिए, "new_menu" नाम के किसी मौजूदा पैरामीटर ग्रुप में, सीज़न के हिसाब से जानकारी दिखाने की सुविधा को कंट्रोल करने के लिए पैरामीटर जोड़ा जा सकता है:

Node.js

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

Java

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

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

रिमोट कॉन्फ़िगरेशन की शर्तें बदलें

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

Node.js

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

Java

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

सभी मामलों में, आपको टेंप्लेट को जानकारी में बदलाव कर रहा है.

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

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

इसके अलावा, अपडेट पब्लिश करने से पहले उनकी पुष्टि भी की जा सकती है, जैसा कि यहां दिखाया गया है:

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

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

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

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

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

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

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

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

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

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

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

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 API का इस्तेमाल करके, रिमोट कॉन्फ़िगरेशन में बदलाव करना

इस सेक्शन में, https://firebaseremoteconfig.googleapis.com पर Remote Config REST API की मुख्य सुविधाओं के बारे में बताया गया है. पूरी जानकारी के लिए, एपीआई का रेफ़रंस देखें.

एपीआई अनुरोधों की पुष्टि करने और उन्हें अनुमति देने के लिए, ऐक्सेस टोकन पाएं

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

किसी सेवा खाते की पुष्टि करने और उसे Firebase की सेवाओं को ऐक्सेस करने की अनुमति देने के लिए, आपको JSON फ़ॉर्मैट में निजी कुंजी फ़ाइल जनरेट करनी होगी.

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

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

  2. नई निजी कुंजी जनरेट करें पर क्लिक करें. इसके बाद, कुंजी जनरेट करें पर क्लिक करके पुष्टि करें.

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

सेवा खाते की मदद से अनुमति देते समय, आपके पास अपने ऐप्लिकेशन को क्रेडेंशियल देने के लिए दो विकल्प होते हैं. GOOGLE_APPLICATION_CREDENTIALS एनवायरमेंट वैरिएबल सेट किया जा सकता है या कोड में सेवा खाते की कुंजी का पाथ साफ़ तौर पर दिया जा सकता है. पहला विकल्प ज़्यादा सुरक्षित है और इसका सुझाव दिया जाता है.

एनवायरमेंट वैरिएबल सेट करने के लिए:

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

Linux या macOS

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

शीशा

PowerShell के साथ:

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

ऊपर दिए गए चरणों को पूरा करने के बाद, ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल (एडीसी), आपके क्रेडेंशियल का पता लगा सकते हैं. इससे, Google से बाहर के एनवायरमेंट में टेस्ट करने या चलाने के दौरान, सेवा खाते के क्रेडेंशियल का इस्तेमाल किया जा सकता है.

अपनी पसंदीदा भाषा के लिए, Google Auth Library के साथ अपने Firebase क्रेडेंशियल का इस्तेमाल करके, कुछ समय के लिए मान्य OAuth 2.0 ऐक्सेस टोकन पाएं:

node.js

 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 वेब टोकन.

Python

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

Java

public 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 टेंप्लेट में बदलाव करना

Remote Config टेंप्लेट का इस्तेमाल करते समय, ध्यान रखें कि उनके वर्शन होते हैं. साथ ही, हर वर्शन का लाइफ़टाइम सीमित होता है. इसे बनाने के बाद, अपडेट किए जाने तक हर वर्शन 90 दिनों तक सेव रहता है. साथ ही, एक साथ 300 वर्शन सेव किए जा सकते हैं. ज़्यादा जानकारी के लिए, टेंप्लेट और वर्शन देखें.

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

बैकएंड एपीआई का इस्तेमाल करके, JSON फ़ॉर्मैट में Remote Config टेंप्लेट.

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

इन निर्देशों का इस्तेमाल करें:

cURL

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

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

रॉ एचटीटीपी अनुरोध

Host: firebaseremoteconfig.googleapis.com

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

यह एपीआई कॉल, यहां दिया गया JSON और एक अलग हेडर दिखाता है. इस हेडर में एक ETag शामिल होता है, जिसका इस्तेमाल अगले अनुरोध के लिए किया जाता है.

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

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

Remote Config टेंप्लेट अपडेट करना

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

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

Remote Config मनमुताबिक बनाने की सुविधा और शर्तें इसमें शामिल हैं डाउनलोड किए गए टेंप्लेट डाउनलोड करने चाहिए, इसलिए इन बातों की जानकारी होना ज़रूरी है जब किसी अन्य प्रोजेक्ट में पब्लिश करने की कोशिश की जाती है, तो इन सीमाओं के बारे में भी बताया जाता है:

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

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

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

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

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

cURL

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

रॉ एचटीटीपी अनुरोध

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 इस निर्देश से बदल दिया जाता है और अपडेट किया गया ETag मौजूद है अगले PUT कमांड के रिस्पॉन्स हेडर जोड़ें.

Remote Config की शर्तों में बदलाव करना

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

एचटीटीपी गड़बड़ी कोड

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

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

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

ETag का इस्तेमाल और अपडेट को जबरन लागू करना

Remote Config REST API, इकाई टैग (ETag) का इस्तेमाल करता है, ताकि 'एक ही समय पर कई अनुरोध' की स्थिति और संसाधनों के अपडेट ओवरलैप होने से रोका जा सके. ईटैग के बारे में ज़्यादा जानने के लिए, ईटैग - एचटीटीपी देखें.

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

Remote Config टेंप्लेट को इस तरह अपडेट करके, ETag और इससे मिलने वाली सुरक्षा को गच्चा दिया जा सकता है: If-Match: * हालांकि, हमारा सुझाव है कि इस तरीके का इस्तेमाल न करें. ऐसा इसलिए, क्योंकि अगर एक से ज़्यादा क्लाइंट Remote Config टेंप्लेट को अपडेट कर रहे हैं, तो आपके Remote Config टेंप्लेट के अपडेट मिटने का खतरा होता है. इस तरह का विरोध, एपीआई का इस्तेमाल करने वाले कई क्लाइंट के साथ हो सकता है. इसके अलावा, एपीआई क्लाइंट और Firebase कंसोल के उपयोगकर्ताओं के अपडेट के बीच विरोध भी हो सकता है.

Remote Config टेंप्लेट के वर्शन मैनेज करने के बारे में दिशा-निर्देश पाने के लिए, रिमोट कॉन्फ़िगरेशन टेंप्लेट और वर्शन लेख पढ़ें.