了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

फायरबेस रिमोट कॉन्फिग के साथ आरंभ करें


आप अपने ऐप में मापदंडों को परिभाषित करने और क्लाउड में उनके मूल्यों को अपडेट करने के लिए Firebase Remote Config का उपयोग कर सकते हैं, जिससे आप ऐप अपडेट को वितरित किए बिना अपने ऐप के स्वरूप और व्यवहार को संशोधित कर सकते हैं। यह गाइड आपको आरंभ करने के चरणों के माध्यम से चलता है और कुछ नमूना कोड प्रदान करता है, जो सभी फायरबेस/क्विकस्टार्ट-एंड्रॉइड गिटहब रिपॉजिटरी से क्लोन या डाउनलोड करने के लिए उपलब्ध है।

चरण 1: अपने ऐप में Firebase और Remote Config SDK जोड़ें

  1. यदि आपने पहले से नहीं किया है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें

  2. Remote Config के लिए, उपयोगकर्ता प्रॉपर्टी और ऑडियंस के लिए ऐप इंस्टेंस के सशर्त लक्ष्यीकरण के लिए Google Analytics आवश्यक है। सुनिश्चित करें कि आप अपने प्रोजेक्ट में Google Analytics को सक्षम करते हैं

  3. अपने मॉड्यूल (ऐप-लेवल) ग्रैडल फ़ाइल (आमतौर पर <project>/<app-module>/build.gradle ) में, Remote Config Android लाइब्रेरी के लिए निर्भरता जोड़ें। हम लाइब्रेरी वर्ज़निंग को नियंत्रित करने के लिए Firebase Android BoM का उपयोग करने की सलाह देते हैं।

    साथ ही, Analytics की स्थापना के भाग के रूप में, आपको Google Analytics के लिए Firebase SDK को अपने ऐप में जोड़ना होगा।

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:32.1.0')
    
        // Add 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'
    }
    

    Firebase Android BoM का उपयोग करके, आपका ऐप हमेशा Firebase Android पुस्तकालयों के संगत संस्करणों का उपयोग करेगा।

    (वैकल्पिक) BoM का उपयोग किए बिना Firebase लाइब्रेरी निर्भरताएँ जोड़ें

    यदि आप Firebase BoM का उपयोग नहीं करना चुनते हैं, तो आपको प्रत्येक Firebase लाइब्रेरी संस्करण को उसकी निर्भरता रेखा में निर्दिष्ट करना होगा।

    ध्यान दें कि यदि आप अपने ऐप में एकाधिक फायरबेस लाइब्रेरी का उपयोग करते हैं, तो हम लाइब्रेरी संस्करणों को प्रबंधित करने के लिए बीओएम का उपयोग करने की दृढ़ता से अनुशंसा करते हैं, जो सुनिश्चित करता है कि सभी संस्करण संगत हैं।

    dependencies {
        // Add 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.4.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0'
    }
    

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:32.1.0')
    
        // Add 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'
    }
    

    Firebase Android BoM का उपयोग करके, आपका ऐप हमेशा Firebase Android पुस्तकालयों के संगत संस्करणों का उपयोग करेगा।

    (वैकल्पिक) BoM का उपयोग किए बिना Firebase लाइब्रेरी निर्भरताएँ जोड़ें

    यदि आप Firebase BoM का उपयोग नहीं करना चुनते हैं, तो आपको प्रत्येक Firebase लाइब्रेरी संस्करण को उसकी निर्भरता रेखा में निर्दिष्ट करना होगा।

    ध्यान दें कि यदि आप अपने ऐप में एकाधिक फायरबेस लाइब्रेरी का उपयोग करते हैं, तो हम लाइब्रेरी संस्करणों को प्रबंधित करने के लिए बीओएम का उपयोग करने की दृढ़ता से अनुशंसा करते हैं, जो सुनिश्चित करता है कि सभी संस्करण संगत हैं।

    dependencies {
        // Add 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.4.0'
        implementation 'com.google.firebase:firebase-analytics:21.3.0'
    }
    

चरण 2: रिमोट कॉन्फ़िग सिंगलटन ऑब्जेक्ट प्राप्त करें

एक दूरस्थ कॉन्फ़िग ऑब्जेक्ट उदाहरण प्राप्त करें और बार-बार ताज़ा करने की अनुमति देने के लिए न्यूनतम फ़ेच अंतराल सेट करें:

Kotlin+KTX

val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
}
remoteConfig.setConfigSettingsAsync(configSettings)

Java

FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

सिंगलटन ऑब्जेक्ट का उपयोग इन-ऐप डिफ़ॉल्ट पैरामीटर मानों को संग्रहीत करने के लिए किया जाता है, बैकएंड से अपडेट किए गए पैरामीटर मान प्राप्त करें, और आपके ऐप पर प्राप्त किए गए मानों को उपलब्ध कराने पर नियंत्रण करें।

विकास के दौरान, अपेक्षाकृत कम न्यूनतम फ़ेच अंतराल सेट करने की अनुशंसा की जाती है। अधिक जानकारी के लिए थ्रॉटलिंग देखें।

चरण 3: इन-ऐप डिफ़ॉल्ट पैरामीटर मान सेट करें

आप Remote Config ऑब्जेक्ट में इन-एप डिफ़ॉल्ट पैरामीटर मान सेट कर सकते हैं, ताकि आपका ऐप Remote Config बैकएंड से कनेक्ट होने से पहले अपेक्षित व्यवहार करे, और ताकि बैकएंड में कोई भी सेट न होने पर डिफ़ॉल्ट मान उपलब्ध हों।

  1. मैप ऑब्जेक्ट या अपने ऐप के res/xml फ़ोल्डर में संग्रहीत XML संसाधन फ़ाइल का उपयोग करके पैरामीटर नामों और डिफ़ॉल्ट पैरामीटर मानों का एक सेट परिभाषित करें। Remote Config QuickStart नमूना ऐप डिफ़ॉल्ट पैरामीटर नाम और मानों को परिभाषित करने के लिए 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
    

    फायरबेस कंसोल

    1. पैरामीटर टैब में, मेनू खोलें और डिफ़ॉल्ट मान डाउनलोड करें चुनें.

    2. संकेत मिलने पर, Android के लिए .xml को सक्षम करें, फिर फ़ाइल डाउनलोड करें पर क्लिक करें।

  2. इन मानों को setDefaultsAsync(int) का उपयोग करके रिमोट कॉन्फ़िगरेशन ऑब्जेक्ट में जोड़ें, जैसा कि दिखाया गया है:

    Kotlin+KTX

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

चरण 4: अपने ऐप में उपयोग करने के लिए पैरामीटर मान प्राप्त करें

अब आप Remote Config ऑब्जेक्ट से पैरामीटर मान प्राप्त कर सकते हैं। यदि आप बैकएंड में मान सेट करते हैं, उन्हें लाते हैं, और फिर उन्हें सक्रिय करते हैं, तो वे मान आपके ऐप के लिए उपलब्ध होते हैं। अन्यथा, आपको setDefaultsAsync(int) का उपयोग करके इन-ऐप पैरामीटर मान कॉन्फ़िगर किए जाते हैं। इन मानों को प्राप्त करने के लिए, नीचे सूचीबद्ध विधि को कॉल करें जो आपके ऐप द्वारा अपेक्षित डेटा प्रकार के लिए मैप करता है, पैरामीटर कुंजी को एक तर्क के रूप में प्रदान करता है:

चरण 5: Remote Config बैकएंड में पैरामीटर मान सेट करें

फायरबेस कंसोल या रिमोट कॉन्फिग बैकएंड एपीआई का उपयोग करके, आप नए सर्वर-साइड डिफ़ॉल्ट मान बना सकते हैं जो आपके वांछित सशर्त तर्क या उपयोगकर्ता लक्ष्यीकरण के अनुसार इन-ऐप मानों को ओवरराइड करते हैं। यह खंड इन मानों को बनाने के लिए फायरबेस कंसोल चरणों का वर्णन करता है।

  1. Firebase कंसोल में, अपना प्रोजेक्ट खोलें।
  2. Remote Config डैशबोर्ड देखने के लिए मेनू से Remote Config चुनें।
  3. पैरामीटर को उन्हीं नामों से परिभाषित करें जिन्हें आपने अपने ऐप में परिभाषित किया था। प्रत्येक पैरामीटर के लिए, आप एक डिफ़ॉल्ट मान सेट कर सकते हैं (जो अंततः संबंधित इन-ऐप डिफ़ॉल्ट मान को ओवरराइड कर देगा), और आप सशर्त मान भी सेट कर सकते हैं। अधिक जानने के लिए, Remote Config Parameters and Conditions देखें।

चरण 6: मान प्राप्त करें और सक्रिय करें

  1. रिमोट कॉन्फ़िगरेशन बैकएंड से पैरामीटर मान प्राप्त करने के लिए, fetch() विधि को कॉल करें। आपके द्वारा बैकएंड में सेट किया गया कोई भी मान प्राप्त किया जाता है और Remote Config ऑब्जेक्ट में संग्रहीत किया जाता है।
  2. प्राप्त किए गए पैरामीटर मान को अपने ऐप में उपलब्ध कराने के लिए, activate() विधि को कॉल करें।

    उन मामलों के लिए जहां आप एक कॉल में मूल्यों को प्राप्त करना और सक्रिय करना चाहते हैं, आप Remote Config बैकएंड से मूल्यों को लाने और उन्हें ऐप के लिए उपलब्ध कराने के लिए एक fetchAndActivate() अनुरोध का उपयोग कर सकते हैं:

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

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

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

चरण 7: वास्तविक समय में अद्यतनों के लिए सुनें

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

रीयल-टाइम अपडेट Android v21.3.0+ (Firebase BoM v31.2.4+) के लिए Firebase SDK द्वारा समर्थित हैं।

  1. अपने ऐप में, अपडेट के लिए सुनना शुरू करने के लिए addOnConfigUpdateListener() का उपयोग करें और स्वचालित रूप से कोई नया पैरामीटर मान प्राप्त करें। अद्यतन कॉन्फ़िगरेशन को सक्रिय करने के लिए onUpdate() कॉलबैक लागू करें।

    Kotlin+KTX

    remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener {
        override fun onUpdate(configUpdate : ConfigUpdate) {
           Log.d(TAG, "Updated keys: " + configUpdate.updatedKeys);
    
           if (configUpdate.updatedKeys.contains("welcome_message")) {
               remoteConfig.activate().addOnCompleteListener {
                   displayWelcomeMessage()
               }
           }
        }
    
        override fun onError(error : FirebaseRemoteConfigException) {
            Log.w(TAG, "Config update error with code: " + error.code, error)
        }
    })
    

    Java

    mFirebaseRemoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() {
        @Override
        public void onUpdate(ConfigUpdate configUpdate) {
            Log.d(TAG, "Updated keys: " + configUpdate.getUpdatedKeys());
    
            mFirebaseRemoteConfig.activate().addOnCompleteListener(new OnCompleteListener() {
                @Override
                public void onComplete(@NonNull Task task) {
                    displayWelcomeMessage();
                }
            });
        }
    
        @Override
        public void onError(FirebaseRemoteConfigException error) {
            Log.w(TAG, "Config update error with code: " + error.getCode(), error);
        }
    });
    
  2. अगली बार जब आप अपने Remote Config का एक नया संस्करण प्रकाशित करते हैं, तो डिवाइस जो आपके ऐप को चला रहे हैं और परिवर्तनों को सुन रहे हैं, ConfigUpdateListener को कॉल करेंगे।

थ्रॉटलिंग

यदि कोई ऐप कम समय अवधि में बहुत अधिक बार प्राप्त करता है, तो कॉल लाने के लिए थ्रॉटल किया जाता है और SDK FirebaseRemoteConfigFetchThrottledException लौटाता है। SDK संस्करण 17.0.0 से पहले, सीमा 60 मिनट की विंडो में 5 फ़ेच अनुरोधों की थी (नए संस्करणों में अधिक अनुमत सीमाएँ हैं)।

ऐप के विकास के दौरान, हो सकता है कि आप अपने ऐप को विकसित और परीक्षण करते समय तेजी से पुनरावृति करने के लिए कॉन्फिग को बहुत बार (प्रति घंटे कई बार) लाना और सक्रिय करना चाहें। जब सर्वर पर कॉन्फ़िगरेशन अपडेट किया जाता है तो रीयल-टाइम रिमोट कॉन्फ़िगरेशन अपडेट कैश को स्वचालित रूप से बायपास करता है। अधिकतम 10 डेवलपर वाले किसी प्रोजेक्ट पर तीव्र पुनरावृत्ति को समायोजित करने के लिए, आप अस्थायी रूप से अपने ऐप में कम न्यूनतम फ़ेच अंतराल ( setMinimumFetchIntervalInSeconds ) के साथ एक FirebaseRemoteConfigSettings ऑब्जेक्ट सेट कर सकते हैं।

Remote Config के लिए डिफॉल्ट न्यूनतम फ़ेच इंटरवल 12 घंटे है, जिसका अर्थ है कि 12 घंटे की विंडो में कॉन्फिग को बैकएंड से एक से अधिक बार नहीं लाया जाएगा, भले ही वास्तव में कितने फ़ेच कॉल किए गए हों। विशेष रूप से, न्यूनतम फ़ेच अंतराल इस क्रम में निर्धारित किया जाता है:

  1. fetch(long)
  2. FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long) में पैरामीटर
  3. 12 घंटे का डिफ़ॉल्ट मान

न्यूनतम लाने के अंतराल को एक कस्टम मान पर सेट करने के लिए, FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) का उपयोग करें।

अगले कदम

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: