आप अपने ऐप में पैरामीटर को परिभाषित करने और क्लाउड में उनके मान अपडेट करने के लिए फायरबेस रिमोट कॉन्फिग का उपयोग कर सकते हैं, जिससे आप ऐप अपडेट को वितरित किए बिना अपने ऐप की उपस्थिति और व्यवहार को संशोधित कर सकते हैं। यह मार्गदर्शिका आपको आरंभ करने के चरणों के बारे में बताती है और कुछ नमूना कोड प्रदान करती है, जो सभी फायरबेस/क्विकस्टार्ट-एंड्रॉइड गिटहब रिपोजिटरी से क्लोन या डाउनलोड करने के लिए उपलब्ध है।
अपने ऐप्लिकेशन में Firebase और Remote Config SDK जोड़ें
यदि आपने पहले से ऐसा नहीं किया है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें ।
रिमोट कॉन्फिग के लिए, उपयोगकर्ता प्रॉपर्टी और ऑडियंस के लिए ऐप इंस्टेंस के सशर्त लक्ष्यीकरण के लिए Google Analytics आवश्यक है। सुनिश्चित करें कि आपने अपने प्रोजेक्ट में Google Analytics को सक्षम किया है।
फायरबेस एंड्रॉइड बीओएम का उपयोग करके, अपने मॉड्यूल (ऐप-लेवल) ग्रैडल फ़ाइल (आमतौर पर
app/build.gradle
) में रिमोट कॉन्फिगर एंड्रॉइड लाइब्रेरी के लिए निर्भरता की घोषणा करें।साथ ही, Analytics सेट अप करने के भाग के रूप में, आपको अपने ऐप में Google Analytics के लिए Firebase SDK जोड़ना होगा।
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.1.0') // Declare the dependencies for the Remote Config and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-config' implementation 'com.google.firebase:firebase-analytics' }
फायरबेस एंड्रॉइड बीओएम का उपयोग करके, आपका ऐप हमेशा फायरबेस एंड्रॉइड लाइब्रेरी के संगत संस्करणों का उपयोग करेगा।
(वैकल्पिक) BoM . का उपयोग किए बिना फायरबेस लाइब्रेरी निर्भरता घोषित करें
यदि आप फायरबेस बीओएम का उपयोग नहीं करना चुनते हैं, तो आपको प्रत्येक फायरबेस लाइब्रेरी संस्करण को उसकी निर्भरता रेखा में निर्दिष्ट करना होगा।
ध्यान दें कि यदि आप अपने ऐप में एकाधिक फायरबेस लाइब्रेरी का उपयोग करते हैं, तो हम लाइब्रेरी संस्करणों को प्रबंधित करने के लिए BoM का उपयोग करने की अत्यधिक अनुशंसा करते हैं, जो सुनिश्चित करता है कि सभी संस्करण संगत हैं।
dependencies { // Declare the dependencies for the Remote Config and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-config:21.1.0' implementation 'com.google.firebase:firebase-analytics:21.0.0' }
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.1.0') // Declare the dependencies for the Remote Config and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-config-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' }
फायरबेस एंड्रॉइड बीओएम का उपयोग करके, आपका ऐप हमेशा फायरबेस एंड्रॉइड लाइब्रेरी के संगत संस्करणों का उपयोग करेगा।
(वैकल्पिक) BoM . का उपयोग किए बिना फायरबेस लाइब्रेरी निर्भरता घोषित करें
यदि आप फायरबेस बीओएम का उपयोग नहीं करना चुनते हैं, तो आपको प्रत्येक फायरबेस लाइब्रेरी संस्करण को उसकी निर्भरता रेखा में निर्दिष्ट करना होगा।
ध्यान दें कि यदि आप अपने ऐप में एकाधिक फायरबेस लाइब्रेरी का उपयोग करते हैं, तो हम लाइब्रेरी संस्करणों को प्रबंधित करने के लिए BoM का उपयोग करने की अत्यधिक अनुशंसा करते हैं, जो सुनिश्चित करता है कि सभी संस्करण संगत हैं।
dependencies { // Declare the dependencies for the Remote Config and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-config-ktx:21.1.0' implementation 'com.google.firebase:firebase-analytics-ktx:21.0.0' }
रिमोट कॉन्फिग सिंगलटन ऑब्जेक्ट प्राप्त करें
रिमोट कॉन्फ़िगरेशन ऑब्जेक्ट इंस्टेंस प्राप्त करें और बार-बार रीफ्रेश करने की अनुमति देने के लिए न्यूनतम फ़ेच अंतराल सेट करें:
Java
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Kotlin+KTX
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
सिंगलटन ऑब्जेक्ट का उपयोग इन-ऐप डिफ़ॉल्ट पैरामीटर मानों को संग्रहीत करने के लिए किया जाता है, बैकएंड से अपडेट किए गए पैरामीटर मान प्राप्त करते हैं, और जब आपके ऐप पर फ़ेच किए गए मान उपलब्ध कराए जाते हैं तो नियंत्रण करते हैं।
विकास के दौरान, अपेक्षाकृत कम न्यूनतम फ़ेच अंतराल सेट करने की अनुशंसा की जाती है। अधिक जानकारी के लिए थ्रॉटलिंग देखें।
इन-ऐप डिफ़ॉल्ट पैरामीटर मान सेट करें
आप रिमोट कॉन्फिग ऑब्जेक्ट में इन-ऐप डिफॉल्ट पैरामीटर मान सेट कर सकते हैं, ताकि आपका ऐप रिमोट कॉन्फिग बैकएंड से कनेक्ट होने से पहले जैसा व्यवहार करे, और ताकि बैकएंड में कोई भी सेट न होने पर डिफ़ॉल्ट मान उपलब्ध हों।
अपने ऐप के
res/xml
फ़ोल्डर में संग्रहीत मैप ऑब्जेक्ट या XML संसाधन फ़ाइल का उपयोग करके पैरामीटर नामों और डिफ़ॉल्ट पैरामीटर मानों के एक सेट को परिभाषित करें। रिमोट कॉन्फिग क्विकस्टार्ट नमूना ऐप डिफ़ॉल्ट पैरामीटर नामों और मानों को परिभाषित करने के लिए एक्सएमएल फ़ाइल का उपयोग करता है।यदि आपने पहले से ही रिमोट कॉन्फिग बैकएंड पैरामीटर मानों को कॉन्फ़िगर किया है, तो आप एक जेनरेट की गई एक्सएमएल फ़ाइल डाउनलोड कर सकते हैं जिसमें सभी डिफ़ॉल्ट मान शामिल हैं और इसे अपने ऐप की
res/xml
निर्देशिका में सहेज सकते हैं:विश्राम
curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=XML -o remote_config_defaults.xml
फायरबेस कंसोल
पैरामीटर टैब में, मेनू खोलें, और डिफ़ॉल्ट मान डाउनलोड करें चुनें।
संकेत मिलने पर, Android के लिए .xml सक्षम करें, फिर फ़ाइल डाउनलोड करें पर क्लिक करें।
इन मानों को रिमोट कॉन्फिग ऑब्जेक्ट में
setDefaultsAsync(int)
का उपयोग करके जोड़ें, जैसा कि दिखाया गया है:Java
mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Kotlin+KTX
remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
अपने ऐप में उपयोग करने के लिए पैरामीटर मान प्राप्त करें
अब आप रिमोट कॉन्फिग ऑब्जेक्ट से पैरामीटर मान प्राप्त कर सकते हैं। यदि आप बैकएंड में मान सेट करते हैं, उन्हें प्राप्त करते हैं, और फिर उन्हें सक्रिय करते हैं, तो वे मान आपके ऐप के लिए उपलब्ध हैं। अन्यथा, आपको setDefaultsAsync(int)
का उपयोग करके कॉन्फ़िगर किए गए इन-ऐप पैरामीटर मान मिलते हैं। इन मानों को प्राप्त करने के लिए, उस मानचित्र के नीचे सूचीबद्ध विधि को आपके ऐप द्वारा अपेक्षित डेटा प्रकार पर कॉल करें, पैरामीटर कुंजी को तर्क के रूप में प्रदान करें:
रिमोट कॉन्फिग बैकएंड में पैरामीटर मान सेट करें
फायरबेस कंसोल या रिमोट कॉन्फिग बैकएंड एपीआई का उपयोग करके, आप नए सर्वर-साइड डिफ़ॉल्ट मान बना सकते हैं जो आपके वांछित सशर्त तर्क या उपयोगकर्ता लक्ष्यीकरण के अनुसार इन-ऐप मानों को ओवरराइड करते हैं। यह खंड इन मानों को बनाने के लिए फायरबेस कंसोल चरणों का वर्णन करता है।
- फायरबेस कंसोल में, अपना प्रोजेक्ट खोलें।
- रिमोट कॉन्फिगर डैशबोर्ड देखने के लिए मेनू से रिमोट कॉन्फिगरेशन चुनें।
- पैरामीटर को उन्हीं नामों के साथ परिभाषित करें, जिन्हें आपने अपने ऐप में परिभाषित किया था। प्रत्येक पैरामीटर के लिए, आप एक डिफ़ॉल्ट मान सेट कर सकते हैं (जो अंततः संबंधित इन-ऐप डिफ़ॉल्ट मान को ओवरराइड कर देगा), और आप सशर्त मान भी सेट कर सकते हैं। अधिक जानने के लिए, दूरस्थ कॉन्फ़िगरेशन पैरामीटर और शर्तें देखें।
मान प्राप्त करें और सक्रिय करें
- रिमोट कॉन्फिग बैकएंड से पैरामीटर मान लाने के लिए,
fetch()
विधि को कॉल करें। बैकएंड में आपके द्वारा सेट किया गया कोई भी मान रिमोट कॉन्फिग ऑब्जेक्ट में लाया और संग्रहीत किया जाता है। अपने ऐप के लिए फ़ेच किए गए पैरामीटर मान उपलब्ध कराने के लिए,
activate()
विधि को कॉल करें।उन मामलों के लिए जहां आप एक कॉल में मान प्राप्त करना और सक्रिय करना चाहते हैं, आप रिमोट कॉन्फिग बैकएंड से मान प्राप्त करने और उन्हें ऐप पर उपलब्ध कराने के लिए एक
fetchAndActivate()
अनुरोध का उपयोग कर सकते हैं:Java
mFirebaseRemoteConfig.fetchAndActivate() .addOnCompleteListener(this, new OnCompleteListener<Boolean>() { @Override public void onComplete(@NonNull Task<Boolean> task) { if (task.isSuccessful()) { boolean updated = task.getResult(); Log.d(TAG, "Config params updated: " + updated); Toast.makeText(MainActivity.this, "Fetch and activate succeeded", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "Fetch failed", Toast.LENGTH_SHORT).show(); } displayWelcomeMessage(); } });
Kotlin+KTX
remoteConfig.fetchAndActivate() .addOnCompleteListener(this) { task -> if (task.isSuccessful) { val updated = task.result Log.d(TAG, "Config params updated: $updated") Toast.makeText(this, "Fetch and activate succeeded", Toast.LENGTH_SHORT).show() } else { Toast.makeText(this, "Fetch failed", Toast.LENGTH_SHORT).show() } displayWelcomeMessage() }
चूंकि ये अपडेट किए गए पैरामीटर मान आपके ऐप के व्यवहार और दिखावट को प्रभावित करते हैं, इसलिए आपको ऐसे समय पर फ़ेच किए गए मानों को सक्रिय करना चाहिए जो आपके उपयोगकर्ता के लिए एक सहज अनुभव सुनिश्चित करता है, जैसे कि अगली बार जब उपयोगकर्ता आपका ऐप खोलता है। अधिक जानकारी और उदाहरणों के लिए रिमोट कॉन्फिग लोडिंग रणनीतियां देखें।
थ्रॉटलिंग
यदि कोई ऐप कम समयावधि में कई बार फ़ेच करता है, तो फ़ेच कॉल थ्रॉटल हो जाते हैं और SDK FirebaseRemoteConfigFetchThrottledException
लौटाता है। एसडीके संस्करण 17.0.0 से पहले, सीमा 60 मिनट की खिड़की में 5 लाने के अनुरोध थे (नए संस्करणों में अधिक अनुमोदित सीमाएं हैं)।
ऐप डेवलपमेंट के दौरान, हो सकता है कि आप कॉन्फिग को बार-बार लाना और सक्रिय करना चाहें (प्रति घंटे कई बार) ताकि आप अपने ऐप को विकसित और परीक्षण करते समय तेजी से पुनरावृति कर सकें। 10 डेवलपर्स तक के प्रोजेक्ट पर तेजी से पुनरावृत्ति को समायोजित करने के लिए, आप अस्थायी रूप से अपने ऐप में कम न्यूनतम फ़ेच अंतराल ( setMinimumFetchIntervalInSeconds
) के साथ एक FirebaseRemoteConfigSettings
ऑब्जेक्ट सेट कर सकते हैं।
रिमोट कॉन्फ़िगरेशन के लिए डिफ़ॉल्ट न्यूनतम फ़ेच अंतराल 12 घंटे है, जिसका अर्थ है कि कॉन्फ़िगरेशन को बैकएंड से 12 घंटे की विंडो में एक से अधिक बार प्राप्त नहीं किया जाएगा, भले ही कितने फ़ेच कॉल वास्तव में किए गए हों। विशेष रूप से, न्यूनतम फ़ेच अंतराल इस निम्न क्रम में निर्धारित किया जाता है:
-
fetch(long)
-
FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
में पैरामीटर - 12 घंटे का डिफ़ॉल्ट मान
न्यूनतम फ़ेच अंतराल को कस्टम मान पर सेट करने के लिए, FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)
का उपयोग करें।
Next steps
If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: