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

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

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

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

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

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

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

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

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

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

बिना पैरामीटर वाले 'एडमिन 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);

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

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

बैकएंड एपीआई का इस्तेमाल करके, JSON फ़ॉर्मैट में रिमोट कॉन्फ़िगरेशन टेंप्लेट.

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

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

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

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

आपके पास प्रोग्राम बनाकर रिमोट कॉन्फ़िगरेशन पैरामीटर जोड़ने और उनमें बदलाव करने का विकल्प होता है पैरामीटर ग्रुप. उदाहरण के लिए, "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.")
        );

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    उदाहरण के लिए, अगर आपके पास ऐसा रिमोट कॉन्फ़िगरेशन पैरामीटर है जो किसी शर्त का इस्तेमाल करता है जो 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 पर रिमोट कॉन्फ़िगरेशन 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"

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

अपने Firebase क्रेडेंशियल का एक साथ इस्तेमाल करें Google ऑथ लाइब्रेरी कृपया कुछ समय तक चलने वाले 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();
}

ऐक्सेस टोकन की समयसीमा खत्म होने पर, टोकन रीफ़्रेश करने का तरीका अपडेट किया गया ऐक्सेस टोकन फिर से पाने के लिए अपने-आप.

रिमोट कॉन्फ़िगरेशन के ऐक्सेस की अनुमति देने के लिए, स्कोप का अनुरोध करें https://www.googleapis.com/auth/firebase.remoteconfig.

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

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

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

बैकएंड एपीआई का इस्तेमाल करके, JSON फ़ॉर्मैट में रिमोट कॉन्फ़िगरेशन टेंप्लेट.

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

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

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 शामिल होता है जिसका इस्तेमाल का पालन नहीं करता है.

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

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

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

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

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

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

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

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

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

    उदाहरण के लिए, अगर आपके पास ऐसा रिमोट कॉन्फ़िगरेशन पैरामीटर है जो किसी शर्त का इस्तेमाल करता है जो 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 कमांड के रिस्पॉन्स हेडर जोड़ें.

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

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

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

HTTP गड़बड़ी कोड

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

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

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

ETag का इस्तेमाल और अनइंस्टॉल न किए जा सकने वाले अपडेट

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

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

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

रिमोट कॉन्फ़िगरेशन टेंप्लेट के वर्शन मैनेज करने के बारे में जानकारी पाने के लिए, यहां जाएं रिमोट कॉन्फ़िगरेशन टेंप्लेट और वर्शन.