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

Admin SDK, REST API, और Firebase CLI का इस्तेमाल करके कॉन्फ़िगरेशन टेंप्लेट. page_type: guide

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

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

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

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

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

Firebase Admin SDK का इस्तेमाल करके, Remote Config में बदलाव करना

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

Admin SDK का इस्तेमाल करके इन कामों को पूरा करने वाले सैंपल कोड की समीक्षा करने के लिए, इनमें से कोई एक क्विकस्टार्ट ऐप्लिकेशन देखें:

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

एसडीके को शुरू करना और एपीआई के अनुरोधों को अनुमति देना

जब 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 टेंप्लेट पाना

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

प्रोग्राम के हिसाब से, 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 शर्तों में बदलाव करना

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

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 का इस्तेमाल करके Remote Config में बदलाव करना

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

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

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

अपने 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 से बाहर के एनवायरमेंट में टेस्टिंग या चलाने के दौरान, सेवा खाते के क्रेडेंशियल इस्तेमाल करने की अनुमति मिलती है.

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

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 वर्शन सेव किए जा सकते हैं. ज़्यादा जानकारी के लिए, टेम्पलेट और वर्शन देखें.

मौजूदा Remote Config टेंप्लेट पाना

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

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 कमांड का इस्तेमाल करना चाहिए. इससे आपको नया टेंप्लेट और ईटैग वैल्यू मिलेगी. इसके बाद, टेंप्लेट को अपडेट करें. इसके बाद, उस टेंप्लेट और नई ईटैग वैल्यू का इस्तेमाल करके सबमिट करें.
  • If-Match हेडर तय किए बिना, PUT कमांड (Remote Config टेंप्लेट अपडेट करने का अनुरोध) की गई है.
401 अनुमति से जुड़ी गड़बड़ी हुई है. जैसे, ऐक्सेस टोकन नहीं दिया गया है या Cloud Developer Console में आपके प्रोजेक्ट में Firebase Remote Config REST API नहीं जोड़ा गया है
403 पुष्टि करने के दौरान कोई गड़बड़ी हुई (गलत ऐक्सेस टोकन दिया गया था)
500 सिस्टम में कोई गड़बड़ी हुई. अगर यह गड़बड़ी होती है, तो Firebase सहायता टिकट फ़ाइल करें

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

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

ETag का इस्तेमाल और फ़ोर्स अपडेट

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

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

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

Remote Config टेंप्लेट के वर्शन मैनेज करने के बारे में जानकारी पाने के लिए, Remote Config टेंप्लेट और वर्शन लेख पढ़ें.

Firebase सीएलआई का इस्तेमाल करके Remote Config में बदलाव करना

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

ज़रूरी शर्तें और सेटअप

  1. Firebase सीएलआई इंस्टॉल करें या इसे नए वर्शन पर अपडेट करें.

  2. Firebase में साइन इन करें:

    firebase login
  3. अपना चालू प्रोजेक्ट सेट करें या हर निर्देश के साथ --project PROJECT_ID की जानकारी दें:

    firebase use PROJECT_ID

पक्का करें कि आपके खाते या सेवा खाते के पास, आईएएम की ज़रूरी अनुमतियां हों:

सीएलआई कमांड की खास जानकारी

निर्देश देने के लिए ब्यौरा
firebase remoteconfig:versions:list इसमें Remote Config टेंप्लेट के हाल ही के वर्शन की सूची होती है.
firebase remoteconfig:get यह Remote Config टेंप्लेट को फ़ेच करता है. इसके अलावा, इसे किसी फ़ाइल में भी लिखा जा सकता है.
firebase remoteconfig:rollback इस फ़ंक्शन की मदद से, Remote Config टेंप्लेट को पिछले वर्शन पर वापस लाया जा सकता है.
firebase remoteconfig:experiments:list प्रोजेक्ट में मौजूद सभी Remote Config एक्सपेरिमेंट की सूची बनाता है.
firebase remoteconfig:experiments:get किसी Remote Config एक्सपेरिमेंट की जानकारी मिलती है.
firebase remoteconfig:experiments:delete यह कुकी, किसी Remote Config एक्सपेरिमेंट को मिटाती है.
firebase remoteconfig:rollouts:list प्रोजेक्ट में Remote Config के सभी रोलआउट की सूची बनाता है.
firebase remoteconfig:rollouts:get किसी Remote Config रोलआउट की जानकारी मिलती है.
firebase remoteconfig:rollouts:delete यह किसी Remote Config रोलआउट को मिटाता है.

Remote Config टेंप्लेट और वर्शन में बदलाव करना

Remote Config टेंप्लेट और उनके वर्शन इतिहास की जांच करने, उन्हें डाउनलोड करने, और उन्हें रोल बैक करने के लिए, इन निर्देशों का इस्तेमाल करें:

टेंप्लेट के वर्शन की सूची बनाना

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

firebase remoteconfig:versions:list [--limit NUMBER_OF_VERSIONS]
  • --limit NUMBER_OF_VERSIONS: वापस लाए जाने वाले वर्शन की ज़्यादा से ज़्यादा संख्या. सभी मौजूदा वर्शन वापस लाने के लिए 0 तय करें. ऐसा ज़्यादा से ज़्यादा 300 वर्शन के लिए किया जा सकता है.

उदाहरण:

  • सबसे हाल ही के 10 वर्शन की सूची बनाएं:

    firebase remoteconfig:versions:list
  • उपलब्ध सभी वर्शन की सूची बनाएं:

    firebase remoteconfig:versions:list --limit 0
  • पांच सबसे नए वर्शन की सूची बनाएं:

    firebase remoteconfig:versions:list --limit 5

टेंप्लेट पाना

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

firebase remoteconfig:get [-v, --version_number VERSION_NUMBER] [-o, --output FILENAME]
  • -v, --version_number VERSION_NUMBER: टेंप्लेट का वह वर्शन नंबर जिसे वापस पाना है. अगर इसे शामिल नहीं किया जाता है, तो यह डिफ़ॉल्ट रूप से नए वर्शन पर सेट होता है.
  • -o, --output FILENAME: यह विकल्प, टेंप्लेट के JSON पेलोड को stdout पर प्रिंट करने के बजाय, सीधे तौर पर तय किए गए पाथ पर लिखता है.

उदाहरण:

  • टर्मिनल में, फ़िलहाल इस्तेमाल किया जा रहा टेंप्लेट दिखाएं:

    firebase remoteconfig:get
  • चालू टेंप्लेट को JSON फ़ाइल में डाउनलोड करने के लिए:

    firebase remoteconfig:get -o remote_config_template.json
  • किसी फ़ाइल में, इतिहास के किसी वर्शन (उदाहरण के लिए, वर्शन 12) को डाउनलोड करने के लिए:

    firebase remoteconfig:get -v 12 -o remote_config_v12.json

टेंप्लेट को पहले जैसा करना

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

firebase remoteconfig:rollback [-v, --version_number VERSION_NUMBER] [--force]
  • -v, --version_number VERSION_NUMBER: रोल बैक करने के लिए, टारगेट वर्शन नंबर. अगर इसे शामिल नहीं किया जाता है, तो यह तुरंत पहले वाले वर्शन (मौजूदा वर्शन में से 1 घटाकर) पर डिफ़ॉल्ट हो जाता है.
  • --force: यह विकल्प, रोलबैक की प्रोसेस को तुरंत शुरू कर देता है. इसके लिए, इंटरैक्टिव पुष्टि (हां/नहीं) करने के लिए नहीं कहा जाता. सीआई/सीडी पाइपलाइन और ऑटोमेटेड स्क्रिप्ट के लिए फ़ायदेमंद.

उदाहरण:

  • इंटरैक्टिव पुष्टि के साथ पिछले वर्शन पर रोल बैक करने के लिए:

    firebase remoteconfig:rollback
  • बिना किसी प्रॉम्प्ट के वर्शन 8 पर रोल बैक करने के लिए:

    firebase remoteconfig:rollback -v 8 --force

A/B Testing एक्सपेरिमेंट में बदलाव करना

सीएलआई की मदद से, Remote Config A/B Testing एक्सपेरिमेंट की सूची बनाने, उनकी जांच करने, और उन्हें मिटाने के लिए, इन निर्देशों का इस्तेमाल करें:

एक्सपेरिमेंट की सूची

इस तरीके से, प्रोजेक्ट के लिए सभी Remote Config एक्सपेरिमेंट की सूची मिलती है. इसमें फ़िल्टर करने और पेज नंबर डालने की सुविधा भी होती है.

firebase remoteconfig:experiments:list [--filter EXPRESSION] [--pageSize NUMBER] [--pageToken TOKEN]
  • --filter EXPRESSION: एक्सपेरिमेंट की सूची पर लागू करने के लिए फ़िल्टर एक्सप्रेशन.
  • --pageSize NUMBER: हर पेज पर दिखाए जाने वाले एक्सपेरिमेंट की संख्या (डिफ़ॉल्ट रूप से 10 पर सेट होती है).
  • --pageToken TOKEN: पेज पर मौजूद ऑफ़सेट के लिए टोकन. इसका इस्तेमाल, पेज के हिसाब से नतीजे वापस पाने के लिए किया जाता है.

उदाहरण:

firebase remoteconfig:experiments:list

एक्सपेरिमेंट की जानकारी पाना

इससे किसी Remote Config एक्सपेरिमेंट की पूरी जानकारी मिलती है.

firebase remoteconfig:experiments:get EXPERIMENT_ID

उदाहरण:

firebase remoteconfig:experiments:get exp_promo_discount_2026

एक्सपेरिमेंट मिटाना

चुने गए Remote Config एक्सपेरिमेंट को मिटाता है.

firebase remoteconfig:experiments:delete EXPERIMENT_ID

उदाहरण:

firebase remoteconfig:experiments:delete exp_promo_discount_2026

Remote Config रोलआउट में बदलाव करना

सीएलआई का इस्तेमाल करके, सीधे तौर पर Remote Config रोलआउट की सूची देखने, उनकी जांच करने, और उन्हें मिटाने के लिए, इन कमांड का इस्तेमाल करें:

रोल आउट की सूची

प्रोजेक्ट के लिए सभी Remote Config रोलआउट की सूची दिखाता है. इसमें फ़िल्टर करने और पेज नंबर डालने का विकल्प होता है.

firebase remoteconfig:rollouts:list [--filter EXPRESSION] [--pageSize NUMBER] [--pageToken TOKEN]
  • --filter EXPRESSION: रोलआउट लिस्ट पर लागू करने के लिए फ़िल्टर एक्सप्रेशन.
  • --pageSize NUMBER: हर पेज पर, रोल आउट की कितनी जानकारी दिखानी है (डिफ़ॉल्ट रूप से 10).
  • --pageToken TOKEN: पेज पर मौजूद ऑफ़सेट के लिए टोकन. इसका इस्तेमाल, पेज के हिसाब से नतीजे वापस पाने के लिए किया जाता है.

उदाहरण:

firebase remoteconfig:rollouts:list

रिलीज़ करने की जानकारी पाना

यह किसी खास Remote Config रोलआउट के बारे में पूरी जानकारी देता है.

firebase remoteconfig:rollouts:get ROLLOUT_ID

उदाहरण:

firebase remoteconfig:rollouts:get rollout_new_checkout_flow

रोलआउट मिटाना

इससे बताई गई Remote Config रोलआउट को मिटाया जाता है.

firebase remoteconfig:rollouts:delete ROLLOUT_ID

उदाहरण:

firebase remoteconfig:rollouts:delete rollout_new_checkout_flow

Firebase सीएलआई कमांड के बारे में ज़्यादा जानकारी के लिए, Firebase सीएलआई का रेफ़रंस देखें.