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

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

शर्तें बनाने के लिए इस्तेमाल किए गए एलिमेंट

Remote Config REST API में, उन सभी एलिमेंट का इस्तेमाल किया जा सकता है जिनका इस्तेमाल Firebase Console का इस्तेमाल करके, Remote Config को कॉन्फ़िगर करते समय शर्तें बनाने के लिए किया जाता है:

तत्व ब्यौरा
&&

इस कुकी का इस्तेमाल, किसी शर्त के लिए एक से ज़्यादा एलिमेंट इस्तेमाल करने पर, एलिमेंट का लॉजिकल "और" बनाने के लिए किया जाता है. अगर किसी एलिमेंट का इस्तेमाल REST सिंटैक्स में && के बिना किया जाता है, तो उस एलिमेंट को शर्त माना जाता है.

ध्यान दें: ऐंपरसैंड से पहले और बाद में स्पेस होना ज़रूरी है. उदाहरण के लिए: element1 && element2.

app.build

यह फ़ंक्शन, ऐप्लिकेशन के बिल्ड नंबर की वैल्यू के आधार पर TRUE या FALSE के तौर पर काम करता है.

ध्यान दें: यह सुविधा सिर्फ़ Apple और Android डिवाइसों पर उपलब्ध है. Apple के लिए, CFBundleVersion की वैल्यू का इस्तेमाल करें. वहीं, Android के लिए, versionCode की वैल्यू का इस्तेमाल करें.

app.version

यह ऐप्लिकेशन के वर्शन नंबर की वैल्यू के आधार पर, TRUE या FALSE के तौर पर दिखता है.

ध्यान दें: Android डिवाइसों के लिए, versionName की वैल्यू का इस्तेमाल करें. वहीं, Apple डिवाइसों के लिए, CFBundleShortVersionString की वैल्यू का इस्तेमाल करें.

app.id ऐप्लिकेशन के Firebase ऐप्लिकेशन आईडी के आधार पर कोई एलिमेंट
app.audiences यह एक ऐसा एलिमेंट है जो TRUE या FALSE के आधार पर यह तय करता है कि उपयोगकर्ता, एक या उससे ज़्यादा Firebase Analytics ऑडियंस में शामिल है या नहीं.
app.firstOpenTimestamp यह एलिमेंट, इस आधार पर तय होता है कि उपयोगकर्ता ने ऐप्लिकेशन को पहली बार कब लॉन्च किया था. यह जानकारी, Google Analytics first_open इवेंट से मिलती है. इसमें ISO तारीख के फ़ॉर्मैट का इस्तेमाल किया जाता है. साथ ही, इसमें टाइम ज़ोन तय करने का विकल्प भी होता है. उदाहरण के लिए, app.firstOpenTimestamp >= ('2022-10-31T14:37:47', 'America/Los_Angeles'). अगर कोई टाइम ज़ोन नहीं दिया गया है, तो जीएमटी का इस्तेमाल किया जाता है.
app.userProperty यह एक ऐसा एलिमेंट है जो Google Analytics उपयोगकर्ता प्रॉपर्टी की संख्या या स्ट्रिंग वैल्यू के आधार पर, TRUE या FALSE के तौर पर तय होता है.
app.operatingSystemAndVersion

यह एक ऐसा एलिमेंट है जो उस ऑपरेटिंग सिस्टम पर आधारित होता है जिस पर कोई ऐप्लिकेशन चल रहा है. ओएस और ओएस वर्शन के तय किए गए टारगेट से मेल खाने पर, इसकी वैल्यू TRUE होती है.

ध्यान दें: यह सुविधा सिर्फ़ वेब ऐप्लिकेशन के लिए उपलब्ध है.

app.browserAndVersion

यह एक ऐसा एलिमेंट है जो उस ब्राउज़र पर आधारित होता है जिस पर कोई ऐप्लिकेशन चल रहा है. जब ब्राउज़र और ब्राउज़र का वर्शन, तय किए गए टारगेट से मेल खाता है, तब इसकी वैल्यू TRUE होती है.

ध्यान दें: यह सुविधा सिर्फ़ वेब ऐप्लिकेशन के लिए उपलब्ध है.

app.firebaseInstallationId यह एलिमेंट, किसी डिवाइस पर ऐप्लिकेशन इंस्टॉल करने के आईडी पर आधारित होता है. अगर installation ID, तय किए गए किसी installation ID से मेल खाता है, तो इसकी वैल्यू TRUE होती है.
app.customSignal यह एक ऐसा एलिमेंट है जिसकी वैल्यू TRUE या FALSE होती है. यह वैल्यू, कस्टम सिग्नल की शर्तों की न्यूमेरिक, सिमैंटिक या स्ट्रिंग वैल्यू के आधार पर तय होती है.
device.country यह डिवाइस के उस क्षेत्र/देश के हिसाब से तय होता है जहां डिवाइस मौजूद है. इसके लिए, ISO 3166-1 ऐल्फ़ा-2 स्टैंडर्ड का इस्तेमाल किया जाता है. उदाहरण के लिए, US या UK. जब कोई देश, अनुमानित देश के कोड से मेल खाता है, तब इसकी वैल्यू TRUE होती है.
device.dateTime यह एलिमेंट, डिवाइस के आखिरी बार फ़ेच किए गए समय पर आधारित होता है. इसमें तारीख के लिए आईएसओ फ़ॉर्मैट का इस्तेमाल किया जाता है. साथ ही, टाइम ज़ोन तय करने का विकल्प भी होता है. उदाहरण के लिए, dateTime('2017-03-22T13:39:44', 'America/Los_Angeles').
device.language किसी डिवाइस पर चुनी गई भाषा के आधार पर कोई एलिमेंट. भाषा को IETF लैंग्वेज टैग का इस्तेमाल करके दिखाया जाता है. जैसे, es-ES, pt-BR या en-US. जब कोई भाषा, अनुमानित भाषा कोड से मेल खाती है, तो TRUE के तौर पर नतीजे दिखाता है.
device.os यह एलिमेंट, डिवाइस पर इस्तेमाल किए गए ऑपरेटिंग सिस्टम (Apple या Android) पर आधारित होता है. डिवाइस का ओएस अनुमानित टाइप का होने पर, इसकी वैल्यू TRUE होती है.
percent यह TRUE के बराबर होता है. यह इस आधार पर तय होता है कि किसी उपयोगकर्ता को रैंडम तरीके से असाइन किए गए फ़्रैक्शनल प्रतिशत में शामिल किया गया है या नहीं. इसमें सैंपल का साइज़ 0.000001% जितना कम हो सकता है.

एक एलिमेंट वाली शर्त में तीन फ़ील्ड होते हैं:

  1. अपनी पसंद के हिसाब से तय किया गया name (ज़्यादा से ज़्यादा 100 वर्ण)
  2. यह एक शर्त वाला एक्सप्रेशन है, जिसका आकलन करने पर TRUE या FALSE मिलता है. यह ऊपर दिखाए गए एलिमेंट से बना होता है.
  3. (ज़रूरी नहीं) tagColor, जो "BLUE", "BROWN", "CYAN", "DEEP_ORANGE", "GREEN", "INDIGO", "LIME", "ORANGE", "PINK", "PURPLE" या "TEAL" हो सकता है. रंग के लिए केस-सेंसिटिविटी लागू नहीं होती. साथ ही, इससे सिर्फ़ Firebase कंसोल में शर्तों के दिखने के तरीके पर असर पड़ता है.

ये ऑपरेटर इस्तेमाल किए जा सकते हैं

उदाहरण के लिए, app.build.notContains([123, 456]) तब TRUE दिखाता है, जब ऐप्लिकेशन का मौजूदा बिल्ड 123 या 492 हो. हालांकि, अगर ऐप्लिकेशन का मौजूदा बिल्ड 999 है, तो यह FALSE दिखाता है. उदाहरण के लिए, app.version.notContains([123, 456]), TRUE वैल्यू तब दिखाता है, जब ऐप्लिकेशन का मौजूदा वर्शन 123 या 492 हो. हालांकि, अगर ऐप्लिकेशन का मौजूदा वर्शन 999 है, तो यह FALSE वैल्यू दिखाता है.
तत्व ये ऑपरेटर इस्तेमाल किए जा सकते हैं ब्यौरा
app.audiences .inAtLeastOne([...]) अगर ऑडियंस का नाम, सूची में मौजूद कम से कम एक ऑडियंस के नाम से मेल खाता है, तो यह फ़ंक्शन TRUE दिखाता है.
उदाहरण के लिए:

app.audiences.inAtLeastOne(['Audience 1', 'Audience 2'])

app.audiences .notInAtLeastOne([...]) अगर ऑडियंस का नाम, सूची में मौजूद किसी भी ऑडियंस के नाम से मेल नहीं खाता है, तो यह फ़ंक्शन TRUE दिखाता है.
app.audiences .inAll([...]) अगर असल ऑडियंस, सूची में मौजूद हर ऑडियंस के नाम की सदस्य है, तो TRUE वैल्यू मिलती है.
app.audiences .notInAll([...]) अगर असल ऑडियंस, सूची में मौजूद किसी भी ऑडियंस की सदस्य नहीं है, तो TRUE दिखाता है.
app.firstOpenTimestamp <=, > यह फ़ंक्शन, first_open इवेंट के समय की तुलना शर्त में दिए गए समय से करता है. इसके बाद, ऑपरेटर के आधार पर TRUE या FALSE दिखाता है.
इस्तेमाल का उदाहरण:
app.firstOpenTimestamp >= ('2022-10-31T14:37:47', 'America/Los_Angeles').
रेंज तय करने के लिए:
app.firstOpenTimestamp >= ('2022-11-01T00:00:00') && app.firstOpenTimestamp < ('2022-12-01T00:00:00') अगर कोई टाइम ज़ोन नहीं दिया गया है, तो GMT का इस्तेमाल किया जाता है.
app.userProperty <, <=, ==, !=, >=, > अगर उपयोगकर्ता प्रॉपर्टी की मौजूदा वैल्यू, ऑपरेटर से मेल खाने वाले तरीके से तय की गई वैल्यू से तुलना करती है, तो यह फ़ंक्शन TRUE दिखाता है.
app.userProperty .contains([...]) अगर टारगेट वैल्यू में से कोई भी वैल्यू, उपयोगकर्ता प्रॉपर्टी की सबस्ट्रिंग है, तो TRUE दिखाता है.
app.userProperty .notContains([...]) अगर टारगेट वैल्यू में से कोई भी वैल्यू, उपयोगकर्ता प्रॉपर्टी की सबस्ट्रिंग नहीं है, तो यह फ़ंक्शन TRUE दिखाता है.
app.userProperty .exactlyMatches([...]) अगर उपयोगकर्ता की प्रॉपर्टी, सूची में मौजूद टारगेट वैल्यू में से किसी से पूरी तरह मैच करती है, तो TRUE वैल्यू मिलती है. यह केस-सेंसिटिव होती है.
app.userProperty .matches([...]) अगर सूची में मौजूद कोई भी टारगेट रेगुलर एक्सप्रेशन, किसी सबस्ट्रिंग या पूरी वैल्यू से मेल खाता है, तो यह फ़ंक्शन TRUE दिखाता है. पूरी स्ट्रिंग का मिलान करने के लिए, रेगुलर एक्सप्रेशन से पहले "^" और बाद में "$" लगाएं. इसमें RE2 सिंटैक्स का इस्तेमाल किया जाता है.
app.id == अगर दी गई वैल्यू, ऐप्लिकेशन के आईडी से मेल खाती है, तो TRUE दिखाता है.
app.build <, <=, ==, !=, >=, > अगर ऐप्लिकेशन का मौजूदा बिल्ड, ऑपरेटर से मैच होने वाले तरीके से, तय की गई वैल्यू से संख्या के हिसाब से तुलना करता है, तो यह फ़ंक्शन TRUE दिखाता है.
app.build .contains([...]) अगर टारगेट वैल्यू में से कोई भी वैल्यू, ऐप्लिकेशन के मौजूदा बिल्ड की सबस्ट्रिंग है, तो TRUE दिखाता है. उदाहरण के लिए, "a" और "bc", "abc" की सबस्ट्रिंग हैं.
app.build .notContains([...]) अगर टारगेट वैल्यू में से कोई भी वैल्यू, ऐप्लिकेशन के मौजूदा बिल्ड की सबस्ट्रिंग नहीं है, तो यह फ़ंक्शन TRUE दिखाता है.
app.build .exactlyMatches([...]) अगर ऐप्लिकेशन का मौजूदा बिल्ड, सूची में मौजूद टारगेट वैल्यू में से किसी भी वैल्यू से पूरी तरह मैच करता है, तो यह फ़ंक्शन TRUE दिखाता है.
app.build .matches([...]) अगर सूची में मौजूद कोई भी टारगेट रेगुलर एक्सप्रेशन, किसी सबस्ट्रिंग या पूरी वैल्यू से मेल खाता है, तो यह फ़ंक्शन TRUE दिखाता है. पूरी स्ट्रिंग का मिलान करने के लिए, रेगुलर एक्सप्रेशन से पहले "^" और बाद में "$" लगाएं. इसमें RE2 सिंटैक्स का इस्तेमाल किया जाता है.
app.version <, <=, ==, !=, >=, > अगर ऐप्लिकेशन का मौजूदा वर्शन, ऑपरेटर से मैच होने वाली वैल्यू से तुलना करने पर छोटा है, तो यह फ़ंक्शन TRUE दिखाता है.
app.version .contains([...]) अगर टारगेट वैल्यू में से कोई भी वैल्यू, ऐप्लिकेशन के मौजूदा वर्शन का सबस्ट्रिंग है, तो TRUE वैल्यू मिलती है. उदाहरण के लिए, "a" और "bc", "abc" के सबस्ट्रिंग हैं.
app.version .notContains([...]) अगर टारगेट वैल्यू में से कोई भी वैल्यू, ऐप्लिकेशन के मौजूदा वर्शन की सबस्ट्रिंग नहीं है, तो यह फ़ंक्शन TRUE दिखाता है.
app.version .exactlyMatches([...]) अगर ऐप्लिकेशन का मौजूदा वर्शन, सूची में मौजूद टारगेट वैल्यू में से किसी से पूरी तरह मैच करता है, तो TRUE वैल्यू मिलती है.
app.version .matches([...]) अगर सूची में मौजूद कोई भी टारगेट रेगुलर एक्सप्रेशन, किसी सबस्ट्रिंग या पूरी वैल्यू से मेल खाता है, तो यह फ़ंक्शन TRUE दिखाता है. पूरी स्ट्रिंग का मिलान करने के लिए, रेगुलर एक्सप्रेशन से पहले "^" और बाद में "$" लगाएं. इसमें RE2 सिंटैक्स का इस्तेमाल किया जाता है.
app.operatingSystemAndVersion .inOne([...]) अगर ओएस और वर्शन, सूची में मौजूद टारगेट वैल्यू में से किसी से भी मेल खाता है, तो यह फ़ंक्शन TRUE दिखाता है.
उदाहरण के लिए:

    app.operatingSystemAndVersion.inOne([operatingSystemName('Macintosh').version.==('10.15')])
    

app.browserAndVersion .inOne([...]) अगर ब्राउज़र और वर्शन, सूची में मौजूद टारगेट वैल्यू में से किसी से मेल खाता है, तो यह फ़ंक्शन TRUE दिखाता है.
उदाहरण के लिए:

    app.browserAndVersion.inOne([browserName('Chrome').anyVersion])
    

app.firebaseInstallationId in [...] अगर इंस्टॉलेशन आईडी, सूची में दिए गए किसी आईडी से मेल खाता है, तो यह फ़ंक्शन TRUE दिखाता है. इस्तेमाल का उदाहरण: app.firebaseInstallationId in ['eyJhbGciOiJFUzI1N_iIs5', 'eapzYQai_g8flVQyfKoGs7']
app.customSignal <, <=, ==, !=, >=, > अगर कस्टम सिग्नल की शर्त, ऑपरेटर से मेल खाने वाले तरीके से तय की गई वैल्यू से तुलना करती है, तो यह फ़ंक्शन TRUE दिखाता है.
app.customSignal .contains([...]) अगर टारगेट वैल्यू में से कोई भी वैल्यू, कस्टम सिग्नल की मौजूदा शर्त का सबस्ट्रिंग है, तो TRUE दिखाता है.
app.customSignal .notContains([...]) अगर टारगेट वैल्यू में से कोई भी वैल्यू, कस्टम सिग्नल की मौजूदा शर्त का सबस्ट्रिंग है, तो यह फ़ंक्शन TRUE दिखाता है.
app.customSignal .exactlyMatches([...]) अगर कस्टम सिग्नल की मौजूदा स्थिति, सूची में मौजूद टारगेट वैल्यू में से किसी एक से पूरी तरह मेल खाती है (केस-सेंसिटिव), तो यह फ़ंक्शन TRUE दिखाता है.
app.customSignal .matches([...]) अगर सूची में मौजूद कोई भी टारगेट रेगुलर एक्सप्रेशन, कस्टम सिग्नल की असल शर्त की सबस्ट्रिंग या पूरी शर्त से मेल खाता है, तो यह फ़ंक्शन TRUE दिखाता है. पूरी स्ट्रिंग का मिलान करने के लिए, रेगुलर एक्सप्रेशन से पहले "^" और बाद में "$" लगाएं. इसमें RE2 सिंटैक्स का इस्तेमाल किया जाता है.
version(app.customSignal) <, <=, ==, !=, >=, > अगर कस्टम सिग्नल की शर्त, ऑपरेटर से मेल खाने वाले तरीके से बताई गई वैल्यू से मिलती-जुलती है, तो यह फ़ंक्शन TRUE दिखाता है.
device.country in [...] अगर डिवाइस का देश, सूची में दिए गए किसी भी देश से मेल खाता है, तो यह फ़ंक्शन TRUE दिखाता है. इस्तेमाल का उदाहरण: device.country in ['gb', 'us']. डिवाइस के देश का कोड, अनुरोध में डिवाइस के आईपी पते या Firebase Analytics से तय किए गए देश के कोड का इस्तेमाल करके तय किया जाता है. ऐसा तब होता है, जब Analytics का डेटा Firebase के साथ शेयर किया जाता है.
device.dateTime <=, > यह फ़ंक्शन, मौजूदा समय की तुलना शर्त के टारगेट समय से करता है. साथ ही, ऑपरेटर के आधार पर TRUE या FALSE के तौर पर आकलन करता है. इस्तेमाल का उदाहरण: dateTime < dateTime('2017-03-22T13:39:44').
device.language in [...] अगर ऐप्लिकेशन की कोई भी भाषा, सूची में मौजूद किसी भाषा से मेल खाती है, तो TRUE दिखाता है. इस्तेमाल का उदाहरण: device.language in ['en-UK', 'en-US'].
device.os ==, != अगर डिवाइस का ऑपरेटिंग सिस्टम, ऑपरेटर से मेल खाने वाले फ़ील्ड की वैल्यू से तुलना करता है, तो यह फ़ंक्शन TRUE दिखाता है.
percent <=, >, between अगर percent फ़ील्ड में मौजूद वैल्यू, ऑपरेटर से मेल खाने वाली रैंडम तरीके से असाइन की गई वैल्यू से तुलना करती है, तो यह फ़ंक्शन TRUE दिखाता है.

शर्त के नियम के टाइप में बताए गए तरीके से, किसी प्रतिशत सीमा के लिए ऐप्लिकेशन इंस्टेंस का नया ग्रुप चुनने के लिए, सीड तय किया जा सकता है.

इसके लिए, ऑपरेटर से पहले सीड का नाम डालें. जैसे, इस उदाहरण में दिखाया गया है:

percent('keyName') <= 10

किसी खास रेंज को कॉन्फ़िगर करने के लिए, between ऑपरेटर का इस्तेमाल किया जा सकता है. डिफ़ॉल्ट सीड का इस्तेमाल करके, 20 से 60 के बीच के उपयोगकर्ताओं की रेंज को कॉन्फ़िगर करने के लिए:

percent between 20 and 60

कस्टम सीड का इस्तेमाल करके, 60 से 80 के बीच उपयोगकर्ताओं की संख्या को कॉन्फ़िगर करने के लिए:

percent('seedName') between 60 and 80