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

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

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

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

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 वर्शन में से. टेंप्लेट और वर्शन देखें हमारा वीडियो देखें.

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

इसमें खास तौर पर वैरिएंट के तौर पर बनाए गए पैरामीटर और वैल्यू एक्सपोर्ट किए गए टेंप्लेट में, 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());
  }
}

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

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

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

अगर ज़रूरी हो, तो पिछले वर्शन पर रोल बैक करने के लिए, 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"

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

अपने 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();
}

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

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

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

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

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

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

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

टेंप्लेट को फिर से पाने और 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 शर्तों और कंडिशनल में बदलाव करने का विकल्प है वैल्यू. 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."
    }
  }
}

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

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

HTTP गड़बड़ी कोड

स्थिति कोड मतलब
200 अपडेट हो गया
400 पुष्टि करने के दौरान कोई गड़बड़ी हुई. उदाहरण के लिए, कोई अनुरोध जिसमें कुंजियों की अनुमति संख्या—2000—400 (गलत अनुरोध) के साथ गड़बड़ी का मैसेज, Param count too large. साथ ही, एचटीटीपीएस का यह स्टेटस कोड, इन दो स्थितियों में दिख सकता है:
  • वर्शन के मेल न खाने की गड़बड़ी हुई. इसकी वजह यह है कि पिछली बार ईटैग की वैल्यू वापस पाने के बाद, वैल्यू और शर्तों का सेट अपडेट कर दिया गया था. इसे ठीक करने के लिए, 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, रेस कंडिशन को रोकने के लिए इकाई टैग (ईटैग) का इस्तेमाल करता है और संसाधनों के ओवरलैपिंग अपडेट. ई-टैग के बारे में ज़्यादा जानने के लिए, यहां देखें ईटैग - एचटीटीपी.

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

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

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